From ebc169dbaf817d09cf7da6a816fb8506466e830c Mon Sep 17 00:00:00 2001 From: Leorize Date: Wed, 12 Mar 2025 03:19:16 -0500 Subject: [PATCH] Fix flatpak packaging to a working state This should make testing Flatpak builds a lot easier. To build, enter `flatpak/` directory and run: flatpak-builder --repo=repo builddir com.mitchellh.ghostty.yml alternatively, using org.flatpak.Builder flatpak: flatpak run -p org.flatpak.Builder \ --repo=repo \ builddir \ com.mitchellh.ghostty.yml The resulting flatpak can be installed using flatpak install ./repo com.mitchellh.ghostty Credit of AppStream metadata goes to @yorickpeterse. --- .gitignore | 2 + com.mitchellh.ghostty.yml | 59 ----- dist/linux/com.mitchellh.ghostty.metainfo.xml | 28 +++ flatpak/build-support/check-zig-cache.sh | 108 +++++++++ flatpak/com.mitchellh.ghostty.yml | 113 ++++++++++ flatpak/exceptions.json | 5 + flatpak/zig-packages.json | 206 ++++++++++++++++++ src/build/GhosttyResources.zig | 6 + 8 files changed, 468 insertions(+), 59 deletions(-) delete mode 100644 com.mitchellh.ghostty.yml create mode 100644 dist/linux/com.mitchellh.ghostty.metainfo.xml create mode 100755 flatpak/build-support/check-zig-cache.sh create mode 100644 flatpak/com.mitchellh.ghostty.yml create mode 100644 flatpak/exceptions.json create mode 100644 flatpak/zig-packages.json diff --git a/.gitignore b/.gitignore index f39b0c780..95eb1d5c3 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ zig-out/ example/*.wasm test/ghostty test/cases/**/*.actual.png +flatpak/builddir/ +flatpak/repo/ glad.zip /Box_test.ppm diff --git a/com.mitchellh.ghostty.yml b/com.mitchellh.ghostty.yml deleted file mode 100644 index aa7785b27..000000000 --- a/com.mitchellh.ghostty.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Note: the flatpak build is likely broken right now and is not actively -# maintained. We may completely remove this file in the future. For now, -# we want to keep _trying_ but its something with known issues. -app-id: com.mitchellh.ghostty -runtime: org.gnome.Platform -runtime-version: "43" -sdk: org.gnome.Sdk -default-branch: tip -command: ghostty -build-options: - append-path: /app/tmp/zig - strip: false - no-debuginfo: true -# Note: we have to use cleanup-commands because flatpak-builder doesn't -# run "cleanup" on its own: https://github.com/flatpak/flatpak-builder/issues/14 -cleanup-commands: - - "rm -rf /app/tmp" -finish-args: - # 3D rendering - - --device=dri - # Windowing - - --share=ipc - - --socket=x11 - - --socket=wayland - # Files (we are a terminal so we need all of them) - - --filesystem=host - # So we can escape the sandbox - - --talk-name=org.freedesktop.Flatpak -modules: - # Note: this should be kept in sync with our flake.nix. Over time this - # should stabilize to being a release version and not a nightly. - - name: zig - buildsystem: simple - build-commands: - - mkdir -p /app/tmp/zig - - cp -r ./* /app/tmp/zig - sources: - - type: archive - url: https://ziglang.org/builds/zig-linux-x86_64-0.12.0-dev.141+ddf5859c2.tar.xz - sha256: eaf519b1ec3cb0f3c9bcbc47ead5f50610f9c106279a35b9feb09bed8afc628b - only-arches: - - x86_64 - - type: archive - url: https://ziglang.org/builds/zig-linux-aarch64-0.12.0-dev.141+ddf5859c2.tar.xz - sha256: 4f918ae185a5dc281b5d30be92cd4c36ebd77b8665729c5e2c47a8eeccd243e8 - only-arches: - - aarch64 - - - name: ghostty - buildsystem: simple - build-commands: - - MACH_SDK_PATH="$(pwd)/vendor/mach-sdk" zig build -Doptimize=ReleaseSafe -Dcpu=baseline -Dflatpak=true -Dapp-runtime=gtk --prefix /app - sources: - - type: dir - path: . - skip: - - .flatpak-builder - - zig-cache - - zig-out diff --git a/dist/linux/com.mitchellh.ghostty.metainfo.xml b/dist/linux/com.mitchellh.ghostty.metainfo.xml new file mode 100644 index 000000000..e504805da --- /dev/null +++ b/dist/linux/com.mitchellh.ghostty.metainfo.xml @@ -0,0 +1,28 @@ + + + com.mitchellh.ghostty + com.mitchellh.ghostty.desktop + Ghostty + https://ghostty.org/ + Ghostty is a fast, feature-rich, and cross-platform terminal emulator + MIT + MIT + + + Mitchell Hashimoto + + +

+ Ghostty is a terminal emulator that differentiates itself by being fast, + feature-rich, and native. While there are many excellent terminal + emulators available, they all force you to choose between speed, + features, or native UIs. Ghostty provides all three. +

+
+ + + + https://ghostty.org/docs/install/release-notes/1-0-1 + + +
diff --git a/flatpak/build-support/check-zig-cache.sh b/flatpak/build-support/check-zig-cache.sh new file mode 100755 index 000000000..bea718640 --- /dev/null +++ b/flatpak/build-support/check-zig-cache.sh @@ -0,0 +1,108 @@ +#!/usr/bin/env bash +# +# This script checks if the flatpak/zig-packages.json file is up-to-date. +# If the `--update` flag is passed, it will update all necessary +# files to be up to date. +# +# The files owned by this are: +# +# - flatpak/zig-packages.json +# +# All of these are auto-generated and should not be edited manually. + +# Nothing in this script should fail. +set -eu +set -o pipefail + +WORK_DIR=$(mktemp -d) + +if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then + echo "could not create temp dir" + exit 1 +fi + +function cleanup { + rm -rf "$WORK_DIR" +} + +trap cleanup EXIT + +help() { + echo "" + echo "To fix, please (manually) re-run the script from the repository root," + echo "commit, and submit a PR with the update:" + echo "" + echo " ./flatpak/build-support/check-zig-cache.sh --update" + echo " git add flatpak/zig-packages.json" + echo " git commit -m \"flatpak: update zig-packages.json\"" + echo "" +} + +# Turn Nix's base64 hashes into regular hexadecimal form +decode_hash() { + input=$1 + input=${input#sha256-} + echo "$input" | base64 -d | od -vAn -t x1 | tr -d ' \n' +} + +ROOT="$(realpath "$(dirname "$0")/../../")" +ZIG_PACKAGES_JSON="$ROOT/flatpak/zig-packages.json" +BUILD_ZIG_ZON_JSON="$ROOT/build.zig.zon.json" + +if [ ! -f "${BUILD_ZIG_ZON_JSON}" ]; then + echo -e "\nERROR: build.zig.zon2json-lock missing." + help + exit 1 +fi + +if [ -f "${ZIG_PACKAGES_JSON}" ]; then + OLD_HASH=$(sha512sum "${ZIG_PACKAGES_JSON}" | awk '{print $1}') +fi + +while read -r url sha256 dest; do + src_type=archive + sha256=$(decode_hash "$sha256") + git_commit= + if [[ "$url" =~ ^git\+* ]]; then + src_type=git + sha256= + url=${url#git+} + git_commit=${url##*#} + url=${url%%/\?ref*} + url=${url%%#*} + fi + + jq \ + -nec \ + --arg type "$src_type" \ + --arg url "$url" \ + --arg git_commit "$git_commit" \ + --arg dest "$dest" \ + --arg sha256 "$sha256" \ + '{ + type: $type, + url: $url, + commit: $git_commit, + dest: $dest, + sha256: $sha256, + } | with_entries(select(.value != ""))' +done < <(jq -rc 'to_entries[] | [.value.url, .value.hash, "vendor/p/\(.key)"] | @tsv' "$BUILD_ZIG_ZON_JSON") | + jq -s '.' >"$WORK_DIR/zig-packages.json" + +NEW_HASH=$(sha512sum "$WORK_DIR/zig-packages.json" | awk '{print $1}') + +if [ "${OLD_HASH}" == "${NEW_HASH}" ]; then + echo -e "\nOK: flatpak/zig-packages.json unchanged." + exit 0 +elif [ "${1:-}" != "--update" ]; then + echo -e "\nERROR: flatpak/zig-packages.json needs to be updated." + echo "" + echo " * Old hash: ${OLD_HASH}" + echo " * New hash: ${NEW_HASH}" + help + exit 1 +else + mv "$WORK_DIR/zig-packages.json" "$ZIG_PACKAGES_JSON" + echo -e "\nOK: flatpak/zig-packages.json updated." + exit 0 +fi diff --git a/flatpak/com.mitchellh.ghostty.yml b/flatpak/com.mitchellh.ghostty.yml new file mode 100644 index 000000000..074b0e5aa --- /dev/null +++ b/flatpak/com.mitchellh.ghostty.yml @@ -0,0 +1,113 @@ +app-id: com.mitchellh.ghostty +runtime: org.gnome.Platform +runtime-version: "47" +sdk: org.gnome.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.ziglang +default-branch: tip +command: ghostty +finish-args: + # 3D rendering + - --device=dri + # Windowing + - --share=ipc + - --socket=fallback-x11 + - --socket=wayland + # Allow user to specify additional config files in home by default + - --filesystem=home:ro + # So we can escape the sandbox + - --talk-name=org.freedesktop.Flatpak +cleanup: + - /include + - /lib/girepository-1.0 + - /lib/pkgconfig + - /share/gir-1.0 + - /share/pkgconfig + - /share/vala + - '*.la' + - '*.a' + - '*.so' + +modules: + - name: bzip2-redirect + buildsystem: simple + build-commands: + - install -dm755 /app/lib + - echo "INPUT(libbz2.so)" > /app/lib/libbzip2.so + + - name: blueprint-compiler + buildsystem: meson + cleanup: + - '*' + sources: + - type: git + url: https://gitlab.gnome.org/jwestman/blueprint-compiler.git + tag: v0.16.0 + commit: 04ef0944db56ab01307a29aaa7303df6067cb3c0 + x-checker-data: + type: git + tag-pattern: ^v([\d.]+)$ + + - name: gtk4-layer-shell + buildsystem: meson + sources: + - type: git + url: https://github.com/wmww/gtk4-layer-shell.git + tag: v1.1.0 + commit: 93550245220cdc514be4701b517acd374a86acc2 + x-checker-data: + type: git + tag-pattern: ^v([\d.]+)$ + + - name: pandoc + buildsystem: simple + cleanup: + - '*' + build-commands: + - install -Dm755 bin/pandoc /app/bin/pandoc + sources: + - type: archive + sha256: d04c95c138202f87d6b00ac19aa3dd874c681f60a9feb3b55c74f764d6d1a17d + url: https://github.com/jgm/pandoc/releases/download/3.6.3/pandoc-3.6.3-linux-amd64.tar.gz + only-arches: [x86_64] + x-checker-data: + type: json + url: https://api.github.com/repos/jgm/pandoc/releases/latest + url-query: .assets[] | select(.name=="pandoc-" + $version + "-linux-amd64.tar.gz") + | .browser_download_url + version-query: .tag_name + - type: archive + sha256: 4e774cb1bdb6e56bc55b8eb79200bd9aa6a39905a04ecda7267f5149116f0881 + url: https://github.com/jgm/pandoc/releases/download/3.6.3/pandoc-3.6.3-linux-arm64.tar.gz + only-arches: [aarch64] + x-checker-data: + type: json + url: https://api.github.com/repos/jgm/pandoc/releases/latest + url-query: .assets[] | select(.name=="pandoc-" + $version + "-linux-arm64.tar.gz") + | .browser_download_url + version-query: .tag_name + + - name: ghostty + buildsystem: simple + build-options: + append-path: /usr/lib/sdk/ziglang + build-commands: + - zig build + -Doptimize=ReleaseFast + -Dcpu=baseline + -Dflatpak=true + -fno-sys=oniguruma + --prefix /app + --search-prefix /app + --system $PWD/vendor/p + sources: + - type: dir + path: .. + skip: + - flatpak/.flatpak-builder + - flatpak/builddir + - flatpak/repo + - zig-cache + - zig-out + + - zig-packages.json diff --git a/flatpak/exceptions.json b/flatpak/exceptions.json new file mode 100644 index 000000000..ad86ccd14 --- /dev/null +++ b/flatpak/exceptions.json @@ -0,0 +1,5 @@ +{ + "com.mitchellh.ghostty": [ + "finish-args-flatpak-spawn-access" + ] +} diff --git a/flatpak/zig-packages.json b/flatpak/zig-packages.json new file mode 100644 index 000000000..712f0adab --- /dev/null +++ b/flatpak/zig-packages.json @@ -0,0 +1,206 @@ +[ + { + "type": "archive", + "url": "https://deps.files.ghostty.org/breakpad-b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz", + "dest": "vendor/p/N-V-__8AALw2uwF_03u4JRkZwRLc3Y9hakkYV7NKRR9-RIZJ", + "sha256": "6cca98943d1a990766cef61077c09aff5938063fe17a1efe1228e5412b6d6ad9" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz", + "dest": "vendor/p/N-V-__8AAIrfdwARSa-zMmxWwFuwpXf1T3asIN7s5jqi9c1v", + "sha256": "3ba2dd92158718acec5caaf1a716043b5aa055c27b081d914af3ccb40dce8a55" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz", + "dest": "vendor/p/N-V-__8AAKLKpwC4H27Ps_0iL3bPkQb-z6ZVSrB-x_3EEkub", + "sha256": "427201f5d5151670d05c1f5b45bef5dda1f2e7dd971ef54f0feaaa7ffd2ab90c" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/gettext-0.24.tar.gz", + "dest": "vendor/p/N-V-__8AADcZkgn4cMhTUpIz6mShCKyqqB-NBtf_S2bHaTC-", + "sha256": "c918503d593d70daf4844d175a13d816afacb667c06fba1ec9dcd5002c1518b7" + }, + { + "type": "archive", + "url": "https://github.com/glfw/glfw/archive/e7ea71be039836da3a98cea55ae5569cb5eb885c.tar.gz", + "dest": "vendor/p/N-V-__8AAMrJSwAUGb9-vTzkNR-5LXS81MR__ZRVfF3tWgG6", + "sha256": "3373755d402531e6c1a395f53f2fbd6318ca5e067a79a72a59109b526c0b290a" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz", + "dest": "vendor/p/N-V-__8AABzkUgISeKGgXAzgtutgJsZc0-kkeqBBscJgMkvy", + "sha256": "14a2edbb509cb3e51a9a53e3f5e435dbf5971604b4b833e63e6076e8c0a997b5" + }, + { + "type": "archive", + "url": "https://github.com/jcollie/ghostty-gobject/releases/download/0.14.0-2025-03-18-21-1/ghostty-gobject-0.14.0-2025-03-18-21-1.tar.zst", + "dest": "vendor/p/gobject-0.2.0-Skun7IWDlQAOKu4BV7LapIxL9Imbq1JRmzvcIkazvAxR", + "sha256": "85672997459ddd7c9d4fe458efe548a315cf842cde95ed48a7be984a1f8a98b2" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/gtk4-layer-shell-1.1.0.tar.gz", + "dest": "vendor/p/N-V-__8AALiNBAA-_0gprYr92CjrMj1I5bqNu0TSJOnjFNSr", + "sha256": "98284281260a5eef5b4f63a55f16c4bf6a788a1020a6db037ecb0f71fa336988" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/harfbuzz-11.0.0.tar.xz", + "dest": "vendor/p/N-V-__8AAG02ugUcWec-Ndp-i7JTsJ0dgF8nnJRUInkGLG7G", + "sha256": "f16351bafe214725fe2c1d5b59f0d93e49905a4b247899fb90d70cff953a2b9b" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/highway-66486a10623fa0d72fe91260f96c892e41aceb06.tar.gz", + "dest": "vendor/p/N-V-__8AAGmZhABbsPJLfbqrh6JTHsXhY6qCaLAQyx25e0XE", + "sha256": "87d4f8893ef4e08f224973608ffebf94268a81380ba79c12e8841968c80aa212" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz", + "dest": "vendor/p/N-V-__8AAH0GaQC8a52s6vfIxg88OZgFgEW6DFxfSK4lX_l3", + "sha256": "a05fd01e04cf11ab781e28387c621d2e420f1e6044c8e27a25e603ea99ef7860" + }, + { + "type": "archive", + "url": "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/8650079de477e80a5983646e3e4d24cda1dbaefa.tar.gz", + "dest": "vendor/p/N-V-__8AADk6LwSAbK3OMyGiadf6aeyztHNV4-zKaLy6IZa6", + "sha256": "9ce907df531041dd8f3dd8d5a51c41c4d4167d1f44c60ea7445fca1e04b3ddc3" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz", + "dest": "vendor/p/N-V-__8AAJrvXQCqAT8Mg9o_tk6m0yf5Fz-gCNEOKLyTSerD", + "sha256": "fecc95b46cf05e8e3fc8a414750e0ba5aad00d89e9fdf175e94ff041caf1a03a" + }, + { + "type": "archive", + "url": "https://github.com/mitchellh/libxev/archive/3df9337a9e84450a58a2c4af434ec1a036f7b494.tar.gz", + "dest": "vendor/p/libxev-0.0.0-86vtc-ziEgDbLP0vihUn1MhsxNKY4GJEga6BEr7oyHpz", + "sha256": "a0a66a03d77bf631e7a7f1eca89590137dc57e7e447b91b85679507a942e638a" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/libxml2-2.11.5.tar.gz", + "dest": "vendor/p/N-V-__8AAG3RoQEyRC2Vw7Qoro5SYBf62IHn3HjqtNVY6aWK", + "sha256": "6c28059e2e3eeb42b5b4b16489e3916a6346c1095a74fee3bc65cdc5d89a6215" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz", + "dest": "vendor/p/N-V-__8AAHjwMQDBXnLq3Q2QhaivE0kE2aD138vtX2Bq1g7c", + "sha256": "001aa1202e78448f4c0bf1a48c76e556876b36f16d92ce3207eccfd61d99f2a0" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz", + "dest": "vendor/p/N-V-__8AADYiAAB_80AWnH1AxXC0tql9thT-R-DYO1gBqTLc", + "sha256": "55e83b16d091082502bf149bf457f31f42092c5982650e3ffbae7b48871bf11a" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz", + "dest": "vendor/p/N-V-__8AAKYZBAB-CFHBKs3u4JkeiT4BMvyHu3Y5aaWF3Bbs", + "sha256": "5c58ba214acd8e6bca3426dc08b022c46a8dd997b29a1b3e28badf71c20df441" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz", + "dest": "vendor/p/N-V-__8AAPlZGwBEa-gxrcypGBZ2R8Bse4JYSfo_ul8i2jlG", + "sha256": "2ac6497cc8d61a8d31093e47addb8c9b2c45b16b0705bb334a835b6423c318df" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz", + "dest": "vendor/p/N-V-__8AANb6pwD7O1WG6L5nvD_rNMvnSc9Cpg1ijSlTYywv", + "sha256": "b52b6fcfc45e7fa69b1f06a1362c155473444e2cc09995556b156c53ba6657e3" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz", + "dest": "vendor/p/N-V-__8AAHffAgDU0YQmynL8K35WzkcnMUmBVQHQ0jlcKpjH", + "sha256": "ffc668a310e77607d393f3c18b32715f223da1eac4c4d6e0579a11df8e6b59cf" + }, + { + "type": "git", + "url": "https://github.com/rockorager/libvaxis", + "commit": "1f41c121e8fc153d9ce8c6eb64b2bbab68ad7d23", + "dest": "vendor/p/vaxis-0.1.0-BWNV_FUICQAFZnTCL11TUvnUr1Y0_ZdqtXHhd51d76Rn" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz", + "dest": "vendor/p/N-V-__8AAKrHGAAs2shYq8UkE6bGcR1QJtLTyOE_lcosMn6t", + "sha256": "ea4191d68e437677e51f3aacde27829810144e931d397a327dc6035e2c39c50d" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz", + "dest": "vendor/p/N-V-__8AAKw-DAAaV8bOAAGqA0-oD7o-HNIlPFYKRXSPT03S", + "sha256": "5cedcadde81b75e60f23e5e83b5dd2b8eb4efb9f8f79bd7a347d148aeb0530f8" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz", + "dest": "vendor/p/N-V-__8AAAzZywE3s51XfsLbP9eyEw57ae9swYB9aGB6fCMs", + "sha256": "9e4cd20abe96e6c4c6ede9c3057108860126e7be2e2c3e35515476c250be1c13" + }, + { + "type": "archive", + "url": "https://github.com/vancluever/z2d/archive/1e89605a624940c310c7a1d81b46a7c5c05919e3.tar.gz", + "dest": "vendor/p/z2d-0.6.0-j5P_HvLdCABu-dXpCeRM7Uk4m16vULg1980lMNCQj4_C", + "sha256": "3c429549467ab5e45b0f28453d64a2b8149ee34a60af4915462bc863c0a7f074" + }, + { + "type": "archive", + "url": "https://github.com/natecraddock/zf/archive/7aacbe6d155d64d15937ca95ca6c014905eb531f.tar.gz", + "dest": "vendor/p/zf-0.10.3-OIRy8aiIAACLrBllz0zjxaH0aOe5oNm3KtEMyCntST-9", + "sha256": "de7ba535077fe2b678a5a7972585f002588d37244db08397feadf3d4907c0bb2" + }, + { + "type": "git", + "url": "https://codeberg.org/atman/zg", + "commit": "4a002763419a34d61dcbb1f415821b83b9bf8ddc", + "dest": "vendor/p/zg-0.13.4-AAAAAGiZ7QLz4pvECFa_wG4O4TP4FLABHHbemH2KakWM" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz", + "dest": "vendor/p/N-V-__8AAB9YCQBaZtQjJZVndk-g_GDIK-NTZcIa63bFp9yZ", + "sha256": "7f235e0956c2f5401a28963a261019953d00e3bf4cfc029830f2161196c3583d" + }, + { + "type": "archive", + "url": "https://github.com/mitchellh/zig-objc/archive/3ab0d37c7d6b933d6ded1b3a35b6b60f05590a98.tar.gz", + "dest": "vendor/p/zig_objc-0.0.0-Ir_Sp3TyAADEVRTxXlScq3t_uKAM91MYNerZkHfbD0yt", + "sha256": "ce7d6d47ac614a60e56b8509dedf869e2e0d8b747c75e48aded11eec31b3357c" + }, + { + "type": "archive", + "url": "https://codeberg.org/ifreund/zig-wayland/archive/f3c5d503e540ada8cbcb056420de240af0c094f7.tar.gz", + "dest": "vendor/p/wayland-0.4.0-dev-lQa1kjfIAQCmhhQu3xF0KH-94-TzeMXOqfnP0-Dg6Wyy", + "sha256": "13bec6675e403d86db3b55b39ae262f1e1bdfe24056dcd82824341c6308b5219" + }, + { + "type": "git", + "url": "https://github.com/TUSF/zigimg", + "commit": "31268548fe3276c0e95f318a6c0d2ab10565b58d", + "dest": "vendor/p/zigimg-0.1.0-lly-O6N2EABOxke8dqyzCwhtUCAafqP35zC7wsZ4Ddxj" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz", + "dest": "vendor/p/ziglyph-0.11.2-AAAAAHPtHwB4Mbzn1KvOV7Wpjo82NYEc_v0WC8oCLrkf", + "sha256": "72c7bdf3e16df105235fe3fcf32c987dac49389190f4ced89b0ee31710f3f3d9" + }, + { + "type": "archive", + "url": "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz", + "dest": "vendor/p/N-V-__8AAB0eQwD-0MdOEBmz7intriBReIsIDNlukNVoNu6o", + "sha256": "17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c" + } +] diff --git a/src/build/GhosttyResources.zig b/src/build/GhosttyResources.zig index 9d463bf7d..3d6b99a34 100644 --- a/src/build/GhosttyResources.zig +++ b/src/build/GhosttyResources.zig @@ -202,6 +202,12 @@ pub fn init(b: *std.Build, cfg: *const Config) !GhosttyResources { "share/applications/com.mitchellh.ghostty.desktop", ).step); + // AppStream metainfo so that application has rich metadata within app stores + try steps.append(&b.addInstallFile( + b.path("dist/linux/com.mitchellh.ghostty.metainfo.xml"), + "share/metainfo/com.mitchellh.ghostty.metainfo.xml", + ).step); + // Right click menu action for Plasma desktop try steps.append(&b.addInstallFile( b.path("dist/linux/ghostty_dolphin.desktop"),