File ghostty.spec of Package ghostty
%define name ghostty
%define version 1.0.0
%define release 0
%define _debugsource_template %{nil}
Name: %{name}
Version: %{version}
Release: %{release}
License: MIT
Summary: A terminal emulator
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
URL: https://github.com/ghostty-org/ghostty
Source0: %{name}-v%{version}.tar.gz
Source1: %{name}-v%{version}-zig-cache.tar.gz
BuildRequires: zig >= 0.13.0
BuildRequires: pkgconfig
BuildRequires: pandoc
BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(gtk4)
BuildRequires: pkgconfig(libadwaita-1)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(oniguruma)
BuildRequires: pkgconfig(pixman-1)
BuildRequires: pkgconfig(zlib)
Group: System/Packages
%description
Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.
%prep
%setup -q -a 1
%check
%build
export ZIG_GLOBAL_CACHE_DIR=%{_builddir}/%{name}-%{version}/zig-cache
zig build --system %{_builddir}/%{name}-%{version}/zig-cache/p -Dcpu=baseline -Doptimize=ReleaseFast
%install
# ghostty binary
install -D -m 755 zig-out/bin/ghostty %{buildroot}/usr/bin/ghostty
# icons
install -D -m 644 zig-out/share/icons/hicolor/128x128/apps/com.mitchellh.ghostty.png %{buildroot}/usr/share/ghostty/icons/hicolor/128x128/apps/com.mitchellh.ghostty.png
install -D -m 644 zig-out/share/icons/hicolor/16x16/apps/com.mitchellh.ghostty.png %{buildroot}/usr/share/ghostty/icons/hicolor/16x16/apps/com.mitchellh.ghostty.png
install -D -m 644 zig-out/share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png %{buildroot}/usr/share/ghostty/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png
install -D -m 644 zig-out/share/icons/hicolor/32x32/apps/com.mitchellh.ghostty.png %{buildroot}/usr/share/ghostty/icons/hicolor/32x32/apps/com.mitchellh.ghostty.png
install -D -m 644 zig-out/share/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png %{buildroot}/usr/share/ghostty/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png
# desktop entry
install -D -m 644 zig-out/share/applications/com.mitchellh.ghostty.desktop %{buildroot}/usr/share/applications/com.mitchellh.ghostty.desktop
# themes
#mkdir -p %{buildroot}/usr/share/ghostty/themes
install -D -m 644 zig-out/share/ghostty/themes/* %{buildroot}/usr/share/ghostty/themes
# manpages
#mkdir -p %{buildroot}/usr/share/man/man1
#mkdir -p %{buildroot}/usr/share/man/man5
install -D -m 644 zig-out/share/man/man1/ghostty.1 %{buildroot}/usr/share/man/man1/ghostty.1
install -D -m 644 zig-out/share/man/man5/ghostty.5 %{buildroot}/usr/share/man/man5/ghostty.5
# shell integrations
#mkdir -p %{buildroot}/usr/share/bash-completion/completions
install -D -m 644 zig-out/share/bash-completion/completions/ghostty.bash %{buildroot}/usr/share/bash-completion/completions/ghostty.bash
install -D -m 644 zig-out/share/ghostty/shell-integration/bash/bash-preexec.sh %{buildroot}/usr/share/ghostty/shell-integration/bash/bash-preexec.sh
install -D -m 644 zig-out/share/ghostty/shell-integration/bash/ghostty.bash %{buildroot}/usr/share/ghostty/shell-integration/bash/ghostty.bash
#mkdir -p %{buildroot}/usr/share/fish/vendor_completions.d
install -D -m 644 zig-out/share/fish/vendor_completions.d/ghostty.fish %{buildroot}/usr/share/fish/vendor_completions.d/ghostty.fish
install -D -m 644 zig-out/share/ghostty/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish %{buildroot}/usr/share/fish/vendor_conf.d/ghostty-shell-integration.fish
#mkdir -p %{buildroot}/usr/share/zsh/site-functions
install -D -m 644 zig-out/share/zsh/site-functions/_ghostty %{buildroot}/usr/share/zsh/site-functions/_ghostty
install -D -m 644 zig-out/share/ghostty/shell-integration/zsh/ghostty-integration %{buildroot}/usr/share/ghostty/shell-integration/zsh/ghostty-integration
#mkdir -p %{buildroot}/usr/share/ghostty/shell-integration/elvish/lib/
install -D -m 644 zig-out/share/ghostty/shell-integration/elvish/lib/ghostty-integration.elv %{buildroot}/usr/share/ghostty/shell-integration/elvish/lib/ghostty-integration.elv
# terminfo
install -D -m 644 zig-out/share/terminfo/g/ghostty %{buildroot}/usr/share/terminfo/g/ghostty
install -D -m 644 zig-out/share/terminfo/x/xterm-ghostty %{buildroot}/usr/share/terminfo/x/xterm-ghostty
install -D -m 644 zig-out/share/terminfo/ghostty.termcap %{buildroot}/usr/share/terminfo/ghostty.termcap
install -D -m 644 zig-out/share/terminfo/ghostty.terminfo %{buildroot}/usr/share/terminfo/ghostty.terminfo
%files
%license LICENSE
%attr(755, root, root) %{_bindir}/%{name}
# icons
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/icons
%dir %{_datadir}/%{name}/icons/hicolor
%dir %{_datadir}/%{name}/icons/hicolor/128x128
%dir %{_datadir}/%{name}/icons/hicolor/128x128/apps
%dir %{_datadir}/%{name}/icons/hicolor/16x16
%dir %{_datadir}/%{name}/icons/hicolor/16x16/apps
%dir %{_datadir}/%{name}/icons/hicolor/256x256
%dir %{_datadir}/%{name}/icons/hicolor/256x256/apps
%dir %{_datadir}/%{name}/icons/hicolor/32x32
%dir %{_datadir}/%{name}/icons/hicolor/32x32/apps
%dir %{_datadir}/%{name}/icons/hicolor/512x512
%dir %{_datadir}/%{name}/icons/hicolor/512x512/apps
%{_datadir}/%{name}/icons/hicolor/128x128/apps/com.mitchellh.ghostty.png
%{_datadir}/%{name}/icons/hicolor/16x16/apps/com.mitchellh.ghostty.png
%{_datadir}/%{name}/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png
%{_datadir}/%{name}/icons/hicolor/32x32/apps/com.mitchellh.ghostty.png
%{_datadir}/%{name}/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png
# themes
%dir %{_datadir}/%{name}/themes
%{_datadir}/%{name}/themes/*
# desktop entry
%{_datadir}/applications/com.mitchellh.ghostty.desktop
# manpages
%{_mandir}/man1/ghostty.1%{?ext_man}
%{_mandir}/man5/ghostty.5%{?ext_man}
## Various shell completion and integrations
# bash
%dir %{_datadir}/%{name}/shell-integration
%dir %{_datadir}/%{name}/shell-integration/bash
%{_datadir}/bash-completion/completions/ghostty.bash
%{_datadir}/%{name}/shell-integration/bash/bash-preexec.sh
%{_datadir}/%{name}/shell-integration/bash/ghostty.bash
## fish
%dir %{_datadir}/fish
%dir %{_datadir}/fish/vendor_completions.d
%dir %{_datadir}/fish/vendor_conf.d
%{_datadir}/fish/vendor_completions.d/ghostty.fish
%{_datadir}/fish/vendor_conf.d/ghostty-shell-integration.fish
# zsh
%dir %{_datadir}/%{name}/shell-integration/zsh
%{_datadir}/zsh/site-functions/_ghostty
%{_datadir}/%{name}/shell-integration/zsh/ghostty-integration
# elvish
%dir %{_datadir}/%{name}/shell-integration/elvish
%dir %{_datadir}/%{name}/shell-integration/elvish/lib
%{_datadir}/%{name}/shell-integration/elvish/lib/ghostty-integration.elv
# terminfo
%{_datadir}/terminfo/g/ghostty
%{_datadir}/terminfo/x/xterm-ghostty
%{_datadir}/terminfo/ghostty.termcap
%{_datadir}/terminfo/ghostty.terminfo
## Editor Integrations
# nvim
# vim
%changelog