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

openSUSE Build Service is sponsored by