From 5b82099844d7384871f60d37c3bfbbed243bcf3c Mon Sep 17 00:00:00 2001 From: psadi Date: Thu, 3 Apr 2025 23:41:11 +0530 Subject: [PATCH 01/51] ci: delete old release assets for nightly builds --- .github/workflows/ci.yaml | 20 +++++++++++++++----- setup.sh | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 222828b..e0672f5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -55,13 +55,12 @@ jobs: - name: Setup build environment run: | if [ "${{ github.event_name }}" == "schedule" ]; then - ZIG_VERSION=0.14.0 + export ZIG_VERSION=0.14.0 else - ZIG_VERSION=0.13.0 + export ZIG_VERSION=0.13.0 fi - sed -i "s/#ZIG_VERSION/${ZIG_VERSION}/g" setup.sh - ./setup.sh + ZIG_VERSION=$ZIG_VERSION ./setup.sh - name: Build Ghostty AppImage run: | @@ -89,7 +88,18 @@ jobs: - build_appimage steps: - uses: actions/checkout@v4 # zizmor: ignore[artipacked] - - name: Tip Tag + + - name: Clean-up Old Release Assets + run: | + gh release view tip --json assets --jq '.assets[].name' | while read -r asset; do + if [ -n "$asset" ]; then + gh release delete-asset tip "${asset}" -y + fi + done + env: + GH_TOKEN: ${{ github.token }} + + - name: Create 'tip' tag run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" diff --git a/setup.sh b/setup.sh index d1807bc..8d947e3 100755 --- a/setup.sh +++ b/setup.sh @@ -17,7 +17,7 @@ pacman -Syuq --needed --noconfirm --noprogressbar ${buildDeps} ${ghosttyDeps} export ARCH="$(uname -m)" -ZIG_VERSION="#ZIG_VERSION" +ZIG_VERSION="${ZIG_VERSION:-0.13.0}" PANDOC_VERSION="$(get_latest_gh_release 'jgm/pandoc')" MINISIGN_VERSION="$(get_latest_gh_release 'jedisct1/minisign')" SHARUN_VERSION="$(get_latest_gh_release 'VHSgunzo/sharun')" From a89d14aaa36e1f10ee0ab3fa22a2c5ac1b8c42a7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Apr 2025 11:37:25 +0000 Subject: [PATCH 02/51] chore(deps): update softprops/action-gh-release action to v2.2.2 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e0672f5..0e47b35 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -153,7 +153,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.2.1 + uses: softprops/action-gh-release@v2.2.2 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From cbb44046ba806ee0f6320034eb67ccb754927c08 Mon Sep 17 00:00:00 2001 From: psadi Date: Mon, 21 Apr 2025 23:54:30 +0530 Subject: [PATCH 03/51] build: add uruntime-lite and debloatted mesa adding utuntime-lite as header and pkgforge debloatted mesa build to reduce appimage size by 3M approx. --- build.sh | 9 +++++---- setup.sh | 14 +++++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/build.sh b/build.sh index de5737d..2adca1d 100755 --- a/build.sh +++ b/build.sh @@ -101,19 +101,20 @@ cd "${TMP_DIR}" # create app image cp $(command -v uruntime) ./uruntime +cp $(command -v uruntime-lite) ./uruntime-lite # persist mount for faster launch times -sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime +sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime-lite # update info -./uruntime --appimage-addupdinfo "${UPINFO}" +./uruntime-lite --appimage-addupdinfo "${UPINFO}" echo "Generating AppImage" ./uruntime --appimage-mkdwarfs -f \ --set-owner 0 --set-group 0 \ --no-history --no-create-timestamp \ - --compression zstd:level=22 -S26 -B32 \ - --header uruntime -i "${APP_DIR}" \ + --compression zstd:level=22 -S26 -B8 \ + --header uruntime-lite -i "${APP_DIR}" \ -o Ghostty-"${VERSION}"-"${ARCH}".AppImage echo "Generating Zsync file" diff --git a/setup.sh b/setup.sh index 8d947e3..4184e08 100755 --- a/setup.sh +++ b/setup.sh @@ -27,6 +27,7 @@ GITHUB_BASE="https://github.com" PANDOC_BASE="${GITHUB_BASE}/jgm/pandoc/releases/download/${PANDOC_VERSION}" MINISIGN_URL="${GITHUB_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" URUNTIME_URL="${GITHUB_BASE}/VHSgunzo/uruntime/releases/download/${URUNTIME_VERSION}/uruntime-appimage-dwarfs-${ARCH}" +URUNTIME_LITE_URL="${GITHUB_BASE}/VHSgunzo/uruntime/releases/download/${URUNTIME_VERSION}/uruntime-appimage-dwarfs-lite-${ARCH}" LLVM_BASE="${GITHUB_BASE}/pkgforge-dev/llvm-libs-debloated/releases/download/continuous" ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz" SHARUN_URL="${GITHUB_BASE}/VHSgunzo/sharun/releases/download/${SHARUN_VERSION}/sharun-${ARCH}" @@ -37,11 +38,13 @@ case "${ARCH}" in PANDOC_URL="${PANDOC_BASE}/pandoc-${PANDOC_VERSION}-linux-amd64.tar.gz" LLVM_URL="${LLVM_BASE}/llvm-libs-nano-x86_64.pkg.tar.zst" LIBXML_URL="${LLVM_BASE}/libxml2-iculess-x86_64.pkg.tar.zst" + MESA_URL="${LLVM_BASE}/mesa-mini-x86_64.pkg.tar.zst" ;; "aarch64") PANDOC_URL="${PANDOC_BASE}/pandoc-${PANDOC_VERSION}-linux-arm64.tar.gz" LLVM_URL="${LLVM_BASE}/llvm-libs-nano-aarch64.pkg.tar.xz" LIBXML_URL="${LLVM_BASE}/libxml2-iculess-aarch64.pkg.tar.xz" + MESA_URL="${LLVM_BASE}/mesa-mini-aarch64.pkg.tar.xz" ;; *) echo "Unsupported ARCH: '${ARCH}'" @@ -52,7 +55,8 @@ esac # Debloated llvm and libxml2 without libicudata wget "${LLVM_URL}" -O /tmp/llvm-libs.pkg.tar.zst wget "${LIBXML_URL}" -O /tmp/libxml2.pkg.tar.zst -pacman -U --noconfirm /tmp/llvm-libs.pkg.tar.zst /tmp/libxml2.pkg.tar.zst +wget "${MESA_URL}" -O /tmp/mesa-mini.pkg.tar.zst +pacman -U --noconfirm /tmp/*.pkg.tar.zst # Download & install other dependencies # zig: https://ziglang.org @@ -68,6 +72,11 @@ wget "${URUNTIME_URL}" -O /tmp/uruntime chmod +x /tmp/uruntime mv /tmp/uruntime /usr/local/bin/uruntime +rm -rf /usr/local/bin/uruntime-lite +wget "${URUNTIME_LITE_URL}" -O /tmp/uruntime-lite +chmod +x /tmp/uruntime-lite +mv /tmp/uruntime-lite /usr/local/bin/uruntime-lite + # minisign: https://github.com/jedisct1/minisign rm -rf /usr/local/bin/minisign wget "${MINISIGN_URL}" -O /tmp/minisign-linux.tar.gz @@ -104,5 +113,4 @@ rm -rf \ /tmp/minisign-linux* \ /tmp/zig-linux.tar.xz \ /tmp/pandoc* \ - /tmp/llvm-libs.pkg.tar.zst \ - /tmp/libxml2.pkg.tar.zst + /tmp/*.pkg.tar.zst From 00f5c55e30a35731afc5343ad6bfe4a44d9e3850 Mon Sep 17 00:00:00 2001 From: psadi Date: Fri, 25 Apr 2025 14:59:01 +0530 Subject: [PATCH 04/51] feat: add experimental builds --- .github/workflows/ci.yaml | 32 ++++++++++++++++++++++++++++++-- README.md | 15 +++++++++++++++ build.sh | 33 +++++++++++++++++++++++---------- 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0e47b35..23409c7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,7 +21,7 @@ jobs: actions: read security-events: write contents: write - name: ๐Ÿ‘ป Build Ghostty (${{ matrix.arch }}) + name: ๐Ÿ‘ป Build Ghostty (${{ matrix.arch }}) ${{ matrix.glfw == true && '(glfw)' || '' }} runs-on: ${{ matrix.runs-on }} strategy: matrix: @@ -29,9 +29,19 @@ jobs: - arch: aarch64 platform: linux/arm64 runs-on: ubuntu-24.04-arm + glfw: false - arch: x86_64 platform: linux/amd64 runs-on: ubuntu-24.04 + glfw: false + - arch: aarch64 + platform: linux/arm64 + runs-on: ubuntu-24.04-arm + glfw: true + - arch: x86_64 + platform: linux/amd64 + runs-on: ubuntu-24.04 + glfw: true container: image: ghcr.io/pkgforge-dev/archlinux:latest steps: @@ -68,11 +78,13 @@ jobs: echo "tip" > VERSION fi ./build.sh + env: + GLFW: ${{ matrix.glfw }} - name: Upload AppImage Artifacts uses: actions/upload-artifact@v4 with: - name: ghostty-appimage-${{ matrix.arch }} + name: ghostty-appimage-${{ matrix.arch }}${{ matrix.glfw == true && '-glfw' || '' }} retention-days: 7 path: /tmp/ghostty-build/Ghostty-*-${{ matrix.arch }}.AppImage* @@ -124,6 +136,14 @@ jobs: with: name: ghostty-appimage-x86_64 + - uses: actions/download-artifact@v4 + with: + name: ghostty-appimage-aarch64-glfw + + - uses: actions/download-artifact@v4 + with: + name: ghostty-appimage-x86_64-glfw + - name: Ghostty stable uses: svenstaro/upload-release-action@v2 with: @@ -152,6 +172,14 @@ jobs: with: name: ghostty-appimage-x86_64 + - uses: actions/download-artifact@v4 + with: + name: ghostty-appimage-aarch64-glfw + + - uses: actions/download-artifact@v4 + with: + name: ghostty-appimage-x86_64-glfw + - name: Ghostty Tip ("Nightly") uses: softprops/action-gh-release@v2.2.2 with: diff --git a/README.md b/README.md index 5b0fadc..b0233b2 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,21 @@ This repository provides build scripts to create a Universal AppImage for [Ghost 1. Stable builds are based on upstream releases, with minor fixes and patches released as **version+1** tag(s). 1. Daily nightly builds, based on the upstream [tip releases](https://github.com/ghostty-org/ghostty/releases/tag/tip), are built and released at **00:00 UTC every day** and are available as pre-releases in the [releases](https://github.com/pkgforge-dev/ghostty-appimage/releases/tag/tip) section. +## ๐Ÿงช Experimental Builds (GLFW) + +> [!WARNING] +> +> Please read the following carefully before using them +> +> - These builds are available for both stable and daily nightly releases +> - These builds use the experimental flag `-Dapp-runtime=glfw` +> - They do not include bundled dependencies for Gtk and libadwaita +> - Window decorations may not work on non-GNOME desktop environments (No CSD) +> - Tabs and splits are not functional +> - The terminal inspector does not work +> - The build size is drastically reduced (around 20 MB) as 80+ dependencies are not bundled +> - Please refer to the [**upstream warning notice**](https://github.com/ghostty-org/ghostty/blob/main/PACKAGING.md#build-options) for further info + ## โš™๏ธ Installation
diff --git a/build.sh b/build.sh index 2adca1d..5008806 100755 --- a/build.sh +++ b/build.sh @@ -12,6 +12,7 @@ PUB_KEY="RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV" UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY:-no-user/no-repo}" | tr '/' '|')|latest|*$ARCH.AppImage.zsync" APPDATA_FILE="${PWD}/assets/ghostty.appdata.xml" DESKTOP_FILE="${PWD}/assets/ghostty.desktop" +LIBS2BUNDLE="./bin/ghostty /usr/lib/libEGL*" BUILD_ARGS=" --summary all \ --prefix ${APP_DIR} \ @@ -39,6 +40,12 @@ else wget "https://release.files.ghostty.org/${GHOSTTY_VERSION}/ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" fi +if [ $GLFW == true ]; then + BUILD_ARGS="${BUILD_ARGS} -Dapp-runtime=glfw" +else + LIBS2BUNDLE="${LIBS2BUNDLE} /usr/lib/gdk-pixbuf-*/*/*/*" +fi + minisign -V -m "ghostty-${GHOSTTY_VERSION}.tar.gz" -P "${PUB_KEY}" -s "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" tar -xzmf "ghostty-${GHOSTTY_VERSION}.tar.gz" @@ -72,19 +79,19 @@ ln -s "share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" . ln -s "share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" .DirIcon # bundle all libs -xvfb-run -a -- sharun l -p -v -e -s -k \ - ./bin/ghostty \ - /usr/lib/libEGL* \ - /usr/lib/gdk-pixbuf-*/*/*/* +xvfb-run -a -- sharun l -p -v -e -s -k ${LIBS2BUNDLE} # preload libpixbufloader /w ld-preload-open as svg icons breaks # either on ghostty tab bar or gnome-text-editor while config edit or both :( -mv ./shared/lib/gdk-pixbuf-2.0 ./ -cp -rv /opt/path-mapping.so ./shared/lib/ -cp -rv gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader_svg.so ./shared/lib/ +if [ $GLFW == false ]; then + mv ./shared/lib/gdk-pixbuf-2.0 ./ + cp -rv /opt/path-mapping.so ./shared/lib/ + cp -rv gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader_svg.so ./shared/lib/ + + echo 'path-mapping.so' >./.preload + echo 'PATH_MAPPING=/usr/lib/gdk-pixbuf-2.0:${SHARUN_DIR}/gdk-pixbuf-2.0' >>./.env +fi -echo 'path-mapping.so' >./.preload -echo 'PATH_MAPPING=/usr/lib/gdk-pixbuf-2.0:${SHARUN_DIR}/gdk-pixbuf-2.0' >>./.env echo 'GHOSTTY_RESOURCES_DIR=${SHARUN_DIR}/share/ghostty' >>./.env echo 'unset ARGV0' >>./.env @@ -97,6 +104,12 @@ if [ -z "$VERSION" ]; then exit 1 fi +GHOSTTY_APPIMAGE="Ghostty-${VERSION}-${ARCH}.AppImage" + +if [ $GLFW == true ]; then + GHOSTTY_APPIMAGE="Ghostty-Glfw-${VERSION}-${ARCH}.AppImage" +fi + cd "${TMP_DIR}" # create app image @@ -115,7 +128,7 @@ echo "Generating AppImage" --no-history --no-create-timestamp \ --compression zstd:level=22 -S26 -B8 \ --header uruntime-lite -i "${APP_DIR}" \ - -o Ghostty-"${VERSION}"-"${ARCH}".AppImage + -o "${GHOSTTY_APPIMAGE}" echo "Generating Zsync file" zsyncmake *.AppImage -u *.AppImage From bc9092e1cc1702f4eee8c6b528442eb85e23089f Mon Sep 17 00:00:00 2001 From: psadi Date: Fri, 16 May 2025 22:05:12 +0530 Subject: [PATCH 05/51] fix: change upinfo name which conflicts between builds --- .github/workflows/ci.yaml | 4 ++-- build.sh | 37 ++++++++++++++++++------------------- setup.sh | 5 ++--- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 23409c7..2b8ec0c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -86,7 +86,7 @@ jobs: with: name: ghostty-appimage-${{ matrix.arch }}${{ matrix.glfw == true && '-glfw' || '' }} retention-days: 7 - path: /tmp/ghostty-build/Ghostty-*-${{ matrix.arch }}.AppImage* + path: /tmp/ghostty-build/Ghostty*-${{ matrix.arch }}.AppImage* tag: name: "๐Ÿ‘ป Tip Tag" @@ -115,7 +115,7 @@ jobs: run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git tag -fa tip -m "Latest Continuous Release" ${GITHUB_SHA} + git tag -fa tip -m "Latest Continuous Release" "${GITHUB_SHA}" git push --force origin tip release_stable: diff --git a/build.sh b/build.sh index 5008806..70daf97 100755 --- a/build.sh +++ b/build.sh @@ -2,14 +2,12 @@ set -eux -export ARCH="$(uname -m)" -export APPIMAGE_EXTRACT_AND_RUN=1 - +ARCH="$(uname -m)" GHOSTTY_VERSION="$(cat VERSION)" TMP_DIR="/tmp/ghostty-build" APP_DIR="${TMP_DIR}/ghostty.AppDir" PUB_KEY="RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV" -UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY:-no-user/no-repo}" | tr '/' '|')|latest|*$ARCH.AppImage.zsync" +UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" APPDATA_FILE="${PWD}/assets/ghostty.appdata.xml" DESKTOP_FILE="${PWD}/assets/ghostty.desktop" LIBS2BUNDLE="./bin/ghostty /usr/lib/libEGL*" @@ -29,18 +27,18 @@ mkdir -p -- "${TMP_DIR}" "${APP_DIR}/share/metainfo" "${APP_DIR}/shared/lib" cd "${TMP_DIR}" -if [ $GHOSTTY_VERSION == "tip" ]; then - wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz" -O ghostty-${GHOSTTY_VERSION}.tar.gz - wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz.minisig" -O ghostty-${GHOSTTY_VERSION}.tar.gz.minisig - GHOSTTY_VERSION="$(tar -tf ghostty-${GHOSTTY_VERSION}.tar.gz --wildcards "*zig.zon.txt" | awk -F'[-/]' '{print $2"-"$3}')" - mv ghostty-tip.tar.gz ghostty-${GHOSTTY_VERSION}.tar.gz - mv ghostty-tip.tar.gz.minisig ghostty-${GHOSTTY_VERSION}.tar.gz.minisig +if [ "${GHOSTTY_VERSION}" = "tip" ]; then + wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz" -O "ghostty-${GHOSTTY_VERSION}.tar.gz" + wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz.minisig" -O "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" + GHOSTTY_VERSION="$(tar -tf "ghostty-${GHOSTTY_VERSION}.tar.gz" --wildcards "*zig.zon.txt" | awk -F'[-/]' '{print $2"-"$3}')" + mv ghostty-tip.tar.gz "ghostty-${GHOSTTY_VERSION}.tar.gz" + mv ghostty-tip.tar.gz.minisig "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" else wget "https://release.files.ghostty.org/${GHOSTTY_VERSION}/ghostty-${GHOSTTY_VERSION}.tar.gz" wget "https://release.files.ghostty.org/${GHOSTTY_VERSION}/ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" fi -if [ $GLFW == true ]; then +if [ "${GLFW}" = true ]; then BUILD_ARGS="${BUILD_ARGS} -Dapp-runtime=glfw" else LIBS2BUNDLE="${LIBS2BUNDLE} /usr/lib/gdk-pixbuf-*/*/*/*" @@ -83,7 +81,7 @@ xvfb-run -a -- sharun l -p -v -e -s -k ${LIBS2BUNDLE} # preload libpixbufloader /w ld-preload-open as svg icons breaks # either on ghostty tab bar or gnome-text-editor while config edit or both :( -if [ $GLFW == false ]; then +if [ "${GLFW}" = false ]; then mv ./shared/lib/gdk-pixbuf-2.0 ./ cp -rv /opt/path-mapping.so ./shared/lib/ cp -rv gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader_svg.so ./shared/lib/ @@ -98,23 +96,24 @@ echo 'unset ARGV0' >>./.env ln -s ./bin/ghostty ./AppRun ./sharun -g -export VERSION="$(./AppRun --version | awk 'FNR==1 {print $2}')" -if [ -z "$VERSION" ]; then +VERSION="$(./AppRun --version | awk 'FNR==1 {print $2}')" +if [ -z "${VERSION}" ]; then echo "ERROR: Could not get version from ghostty binary" exit 1 fi GHOSTTY_APPIMAGE="Ghostty-${VERSION}-${ARCH}.AppImage" -if [ $GLFW == true ]; then - GHOSTTY_APPIMAGE="Ghostty-Glfw-${VERSION}-${ARCH}.AppImage" +if [ "${GLFW}" = true ]; then + UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY:-no-user/no-repo}" | tr '/' '|')|latest|Ghossty_*$ARCH.AppImage.zsync" + GHOSTTY_APPIMAGE="Ghostty_Glfw-${VERSION}-${ARCH}.AppImage" fi cd "${TMP_DIR}" # create app image -cp $(command -v uruntime) ./uruntime -cp $(command -v uruntime-lite) ./uruntime-lite +cp "$(command -v uruntime)" ./uruntime +cp "$(command -v uruntime-lite)" ./uruntime-lite # persist mount for faster launch times sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime-lite @@ -131,4 +130,4 @@ echo "Generating AppImage" -o "${GHOSTTY_APPIMAGE}" echo "Generating Zsync file" -zsyncmake *.AppImage -u *.AppImage +zsyncmake ./*.AppImage -u ./*.AppImage diff --git a/setup.sh b/setup.sh index 4184e08..ce2313f 100755 --- a/setup.sh +++ b/setup.sh @@ -4,8 +4,7 @@ set -eux get_latest_gh_release() { - local gh_ref="${1}" - local version + gh_ref="${1}" curl -s "https://api.github.com/repos/${gh_ref}/releases/latest" | jq -r .tag_name } @@ -15,7 +14,7 @@ ghosttyDeps="gtk4 libadwaita gtk4-layer-shell" rm -rf "/usr/share/libalpm/hooks/package-cleanup.hook" pacman -Syuq --needed --noconfirm --noprogressbar ${buildDeps} ${ghosttyDeps} -export ARCH="$(uname -m)" +ARCH="$(uname -m)" ZIG_VERSION="${ZIG_VERSION:-0.13.0}" PANDOC_VERSION="$(get_latest_gh_release 'jgm/pandoc')" From af95a7fd653f52b709029260b2db2fa10ac4d0a4 Mon Sep 17 00:00:00 2001 From: psadi Date: Sat, 17 May 2025 00:51:54 +0530 Subject: [PATCH 06/51] fix: typo :/ --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 70daf97..4627fd3 100755 --- a/build.sh +++ b/build.sh @@ -105,7 +105,7 @@ fi GHOSTTY_APPIMAGE="Ghostty-${VERSION}-${ARCH}.AppImage" if [ "${GLFW}" = true ]; then - UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY:-no-user/no-repo}" | tr '/' '|')|latest|Ghossty_*$ARCH.AppImage.zsync" + UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY:-no-user/no-repo}" | tr '/' '|')|latest|Ghostty_*$ARCH.AppImage.zsync" GHOSTTY_APPIMAGE="Ghostty_Glfw-${VERSION}-${ARCH}.AppImage" fi From 15bf9c94838a3e99303106ac781f6b4c8e4f0319 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 02:13:05 +0000 Subject: [PATCH 07/51] chore(deps): update softprops/action-gh-release action to v2.3.0 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2b8ec0c..611c804 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -181,7 +181,7 @@ jobs: name: ghostty-appimage-x86_64-glfw - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.2.2 + uses: softprops/action-gh-release@v2.3.0 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From bf0a50aec583ba092b94aa316b34b9041e33cc3f Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Tue, 10 Jun 2025 13:12:43 -0400 Subject: [PATCH 08/51] Revert "chore(deps): update softprops/action-gh-release action to v2.3.0" --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 611c804..2b8ec0c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -181,7 +181,7 @@ jobs: name: ghostty-appimage-x86_64-glfw - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.3.0 + uses: softprops/action-gh-release@v2.2.2 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 6bf32ea8f8a2df097ec3bceefeee4ef19eb66243 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 23:09:35 +0000 Subject: [PATCH 09/51] chore(deps): update softprops/action-gh-release action to v2.3.2 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2b8ec0c..cdc6853 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -181,7 +181,7 @@ jobs: name: ghostty-appimage-x86_64-glfw - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.2.2 + uses: softprops/action-gh-release@v2.3.2 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 2654fe7223b02f4f98e56d06aacb8cf6a169aef9 Mon Sep 17 00:00:00 2001 From: psadi Date: Sun, 6 Jul 2025 23:34:41 +0530 Subject: [PATCH 10/51] sunset glfw builds --- .github/workflows/ci.yaml | 32 ++------------------------------ README.md | 16 ---------------- build.sh | 25 ++++++------------------- 3 files changed, 8 insertions(+), 65 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index cdc6853..9f80530 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,7 +21,7 @@ jobs: actions: read security-events: write contents: write - name: ๐Ÿ‘ป Build Ghostty (${{ matrix.arch }}) ${{ matrix.glfw == true && '(glfw)' || '' }} + name: ๐Ÿ‘ป Build Ghostty (${{ matrix.arch }}) runs-on: ${{ matrix.runs-on }} strategy: matrix: @@ -29,19 +29,9 @@ jobs: - arch: aarch64 platform: linux/arm64 runs-on: ubuntu-24.04-arm - glfw: false - arch: x86_64 platform: linux/amd64 runs-on: ubuntu-24.04 - glfw: false - - arch: aarch64 - platform: linux/arm64 - runs-on: ubuntu-24.04-arm - glfw: true - - arch: x86_64 - platform: linux/amd64 - runs-on: ubuntu-24.04 - glfw: true container: image: ghcr.io/pkgforge-dev/archlinux:latest steps: @@ -78,13 +68,11 @@ jobs: echo "tip" > VERSION fi ./build.sh - env: - GLFW: ${{ matrix.glfw }} - name: Upload AppImage Artifacts uses: actions/upload-artifact@v4 with: - name: ghostty-appimage-${{ matrix.arch }}${{ matrix.glfw == true && '-glfw' || '' }} + name: ghostty-appimage-${{ matrix.arch }} retention-days: 7 path: /tmp/ghostty-build/Ghostty*-${{ matrix.arch }}.AppImage* @@ -136,14 +124,6 @@ jobs: with: name: ghostty-appimage-x86_64 - - uses: actions/download-artifact@v4 - with: - name: ghostty-appimage-aarch64-glfw - - - uses: actions/download-artifact@v4 - with: - name: ghostty-appimage-x86_64-glfw - - name: Ghostty stable uses: svenstaro/upload-release-action@v2 with: @@ -172,14 +152,6 @@ jobs: with: name: ghostty-appimage-x86_64 - - uses: actions/download-artifact@v4 - with: - name: ghostty-appimage-aarch64-glfw - - - uses: actions/download-artifact@v4 - with: - name: ghostty-appimage-x86_64-glfw - - name: Ghostty Tip ("Nightly") uses: softprops/action-gh-release@v2.3.2 with: diff --git a/README.md b/README.md index b0233b2..09dec20 100644 --- a/README.md +++ b/README.md @@ -25,21 +25,6 @@ This repository provides build scripts to create a Universal AppImage for [Ghost 1. Stable builds are based on upstream releases, with minor fixes and patches released as **version+1** tag(s). 1. Daily nightly builds, based on the upstream [tip releases](https://github.com/ghostty-org/ghostty/releases/tag/tip), are built and released at **00:00 UTC every day** and are available as pre-releases in the [releases](https://github.com/pkgforge-dev/ghostty-appimage/releases/tag/tip) section. -## ๐Ÿงช Experimental Builds (GLFW) - -> [!WARNING] -> -> Please read the following carefully before using them -> -> - These builds are available for both stable and daily nightly releases -> - These builds use the experimental flag `-Dapp-runtime=glfw` -> - They do not include bundled dependencies for Gtk and libadwaita -> - Window decorations may not work on non-GNOME desktop environments (No CSD) -> - Tabs and splits are not functional -> - The terminal inspector does not work -> - The build size is drastically reduced (around 20 MB) as 80+ dependencies are not bundled -> - Please refer to the [**upstream warning notice**](https://github.com/ghostty-org/ghostty/blob/main/PACKAGING.md#build-options) for further info - ## โš™๏ธ Installation
@@ -138,7 +123,6 @@ Ghostty AppImage can easily be managed using graphical tools such as [AppImageLa > For more information please refer the [discussion](https://github.com/TheAssassin/AppImageLauncher/discussions/687) and the [comment](https://github.com/TheAssassin/AppImageLauncher/discussions/687#discussioncomment-12181060) 2. **Using [Gear Lever](https://github.com/mijorus/gearlever)** - - Download the latest AppImage package from the [releases](https://github.com/pkgforge-dev/ghostty-appimage/releases) section. - Simply drag and drop the files from your file manager into the Gear Lever application. - Follow the on-screen instructions to configure the setup as a one-time installation process. diff --git a/build.sh b/build.sh index 4627fd3..26208c3 100755 --- a/build.sh +++ b/build.sh @@ -10,7 +10,7 @@ PUB_KEY="RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV" UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" APPDATA_FILE="${PWD}/assets/ghostty.appdata.xml" DESKTOP_FILE="${PWD}/assets/ghostty.desktop" -LIBS2BUNDLE="./bin/ghostty /usr/lib/libEGL*" +LIBS2BUNDLE="./bin/ghostty /usr/lib/libEGL* /usr/lib/gdk-pixbuf-*/*/*/*" BUILD_ARGS=" --summary all \ --prefix ${APP_DIR} \ @@ -38,12 +38,6 @@ else wget "https://release.files.ghostty.org/${GHOSTTY_VERSION}/ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" fi -if [ "${GLFW}" = true ]; then - BUILD_ARGS="${BUILD_ARGS} -Dapp-runtime=glfw" -else - LIBS2BUNDLE="${LIBS2BUNDLE} /usr/lib/gdk-pixbuf-*/*/*/*" -fi - minisign -V -m "ghostty-${GHOSTTY_VERSION}.tar.gz" -P "${PUB_KEY}" -s "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" tar -xzmf "ghostty-${GHOSTTY_VERSION}.tar.gz" @@ -81,14 +75,12 @@ xvfb-run -a -- sharun l -p -v -e -s -k ${LIBS2BUNDLE} # preload libpixbufloader /w ld-preload-open as svg icons breaks # either on ghostty tab bar or gnome-text-editor while config edit or both :( -if [ "${GLFW}" = false ]; then - mv ./shared/lib/gdk-pixbuf-2.0 ./ - cp -rv /opt/path-mapping.so ./shared/lib/ - cp -rv gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader_svg.so ./shared/lib/ +mv ./shared/lib/gdk-pixbuf-2.0 ./ +cp -rv /opt/path-mapping.so ./shared/lib/ +cp -rv gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader_svg.so ./shared/lib/ - echo 'path-mapping.so' >./.preload - echo 'PATH_MAPPING=/usr/lib/gdk-pixbuf-2.0:${SHARUN_DIR}/gdk-pixbuf-2.0' >>./.env -fi +echo 'path-mapping.so' >./.preload +echo 'PATH_MAPPING=/usr/lib/gdk-pixbuf-2.0:${SHARUN_DIR}/gdk-pixbuf-2.0' >>./.env echo 'GHOSTTY_RESOURCES_DIR=${SHARUN_DIR}/share/ghostty' >>./.env echo 'unset ARGV0' >>./.env @@ -104,11 +96,6 @@ fi GHOSTTY_APPIMAGE="Ghostty-${VERSION}-${ARCH}.AppImage" -if [ "${GLFW}" = true ]; then - UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY:-no-user/no-repo}" | tr '/' '|')|latest|Ghostty_*$ARCH.AppImage.zsync" - GHOSTTY_APPIMAGE="Ghostty_Glfw-${VERSION}-${ARCH}.AppImage" -fi - cd "${TMP_DIR}" # create app image From a81cf5d7acec70b6a82f596a8f9b8129a6a434d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 00:36:55 +0000 Subject: [PATCH 11/51] chore(deps): update actions/download-artifact action to v5 --- .github/workflows/ci.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9f80530..a57f48b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -116,11 +116,11 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event_name == 'release' }} steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v5 with: name: ghostty-appimage-aarch64 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v5 with: name: ghostty-appimage-x86_64 @@ -144,11 +144,11 @@ jobs: contents: write runs-on: ubuntu-latest steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v5 with: name: ghostty-appimage-aarch64 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v5 with: name: ghostty-appimage-x86_64 From a49df6f2135c64926f2847ff5a553ca7479deea0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 14:06:47 +0000 Subject: [PATCH 12/51] chore(deps): update actions/checkout action to v5 --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a57f48b..fa8c521 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -36,7 +36,7 @@ jobs: image: ghcr.io/pkgforge-dev/archlinux:latest steps: - name: Checkout ghostty-appimage - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: persist-credentials: false @@ -87,7 +87,7 @@ jobs: needs: - build_appimage steps: - - uses: actions/checkout@v4 # zizmor: ignore[artipacked] + - uses: actions/checkout@v5 # zizmor: ignore[artipacked] - name: Clean-up Old Release Assets run: | From 8f949d3ff2c0cc3eba31083df5f6b5f73be68481 Mon Sep 17 00:00:00 2001 From: psadi Date: Mon, 1 Sep 2025 22:04:42 +0530 Subject: [PATCH 13/51] refactor: Implement pkgforge scripts - Utilize debloated scripts for installing OpenGL, GTK4 and libxml. - Delegate tasks to quick-sharun and uruntime2appimage. - Modify generics to support script defaults, directories, environment variables and cleanup. --- .github/workflows/ci.yaml | 2 +- .gitignore | 6 +++ assets/ghostty.appdata.xml | 68 ---------------------------- assets/ghostty.desktop | 22 --------- build.sh | 92 ++++++++------------------------------ setup.sh | 69 +++++++++------------------- 6 files changed, 46 insertions(+), 213 deletions(-) delete mode 100644 assets/ghostty.appdata.xml delete mode 100644 assets/ghostty.desktop diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fa8c521..ffee722 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -74,7 +74,7 @@ jobs: with: name: ghostty-appimage-${{ matrix.arch }} retention-days: 7 - path: /tmp/ghostty-build/Ghostty*-${{ matrix.arch }}.AppImage* + path: dist tag: name: "๐Ÿ‘ป Tip Tag" diff --git a/.gitignore b/.gitignore index a760406..0ec533f 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,9 @@ Sessionx.vim tags # Persistent undo [._]*.un~ + +AppDir +ghostty-* +quick-sharun +uruntime2appimage +dist diff --git a/assets/ghostty.appdata.xml b/assets/ghostty.appdata.xml deleted file mode 100644 index 723a1f5..0000000 --- a/assets/ghostty.appdata.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - com.mitchellh.ghostty - MIT - MIT - Ghostty - https://raw.githubusercontent.com/ghostty-org/ghostty/refs/heads/main/images/icons/icon_256.png - Fast, native, feature-rich terminal emulator pushing modern features - -

- 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. -

- -

- In all categories, I am not trying to claim that Ghostty is the best - (i.e. the fastest, most feature-rich, or most native). But Ghostty is - competitive in all three categories and Ghostty doesn't make you choose - between them. -

- -

- Ghostty also intends to push the boundaries of what is possible with a - terminal emulator by exposing modern, opt-in features that enable CLI - tool developers to build more feature rich, interactive applications. -

- -

- While aiming for this ambitious goal, our first step is to make Ghostty - one of the best fully standards compliant terminal emulator, remaining - compatible with all existing shells and software while supporting all of - the latest terminal innovations in the ecosystem. You can use Ghostty as - a drop-in replacement for your existing terminal emulator. -

-
- - com.mitchellh.ghostty.desktop - - https://ghostty.org/ - https://ghostty.org/docs/about - https://github.com/ghostty-org/ghostty/issues - - - - - Mitchell Hashimoto - - - - - -

- Initial AppImage build. -

-
-
-
-
diff --git a/assets/ghostty.desktop b/assets/ghostty.desktop deleted file mode 100644 index 35aa68c..0000000 --- a/assets/ghostty.desktop +++ /dev/null @@ -1,22 +0,0 @@ -[Desktop Entry] -Name=Ghostty -Type=Application -Comment=A terminal emulator -Exec=ghostty -Icon=com.mitchellh.ghostty -StartupWMClass=com.mitchellh.ghostty -Categories=System;TerminalEmulator;Utility; -Keywords=terminal;tty;pty; -StartupNotify=true -Terminal=false -Actions=new-window; -X-GNOME-UsesNotifications=true -X-TerminalArgExec=-e -X-TerminalArgTitle=--title= -X-TerminalArgAppId=--class= -X-TerminalArgDir=--working-directory= -X-TerminalArgHold=--wait-after-command - -[Desktop Action new-window] -Name=New Window -Exec=ghostty diff --git a/build.sh b/build.sh index 26208c3..8a7f383 100755 --- a/build.sh +++ b/build.sh @@ -4,16 +4,16 @@ set -eux ARCH="$(uname -m)" GHOSTTY_VERSION="$(cat VERSION)" -TMP_DIR="/tmp/ghostty-build" -APP_DIR="${TMP_DIR}/ghostty.AppDir" PUB_KEY="RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV" -UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" -APPDATA_FILE="${PWD}/assets/ghostty.appdata.xml" -DESKTOP_FILE="${PWD}/assets/ghostty.desktop" -LIBS2BUNDLE="./bin/ghostty /usr/lib/libEGL* /usr/lib/gdk-pixbuf-*/*/*/*" + +export ADD_HOOKS="self-updater.bg.hook" +export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" +export URUNTIME_PRELOAD=1 +export DEPLOY_OPENGL=1 +export EXEC_WRAPPER=1 + BUILD_ARGS=" --summary all \ - --prefix ${APP_DIR} \ -Doptimize=ReleaseFast \ -Dcpu=baseline \ -Dpie=true \ @@ -21,12 +21,6 @@ BUILD_ARGS=" -Dgtk-wayland=true \ -Dgtk-x11=true" -rm -rf "${TMP_DIR}" - -mkdir -p -- "${TMP_DIR}" "${APP_DIR}/share/metainfo" "${APP_DIR}/shared/lib" - -cd "${TMP_DIR}" - if [ "${GHOSTTY_VERSION}" = "tip" ]; then wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz" -O "ghostty-${GHOSTTY_VERSION}.tar.gz" wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz.minisig" -O "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" @@ -45,11 +39,8 @@ tar -xzmf "ghostty-${GHOSTTY_VERSION}.tar.gz" rm "ghostty-${GHOSTTY_VERSION}.tar.gz" \ "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" -BUILD_DIR="ghostty-${GHOSTTY_VERSION}" BUILD_ARGS="${BUILD_ARGS} -Dversion-string=${GHOSTTY_VERSION}" -cd "${TMP_DIR}/${BUILD_DIR}" - #Fetch Zig Cache if [ -f './nix/build-support/fetch-zig-cache.sh' ]; then ZIG_GLOBAL_CACHE_DIR=/tmp/offline-cache ./nix/build-support/fetch-zig-cache.sh @@ -57,64 +48,17 @@ if [ -f './nix/build-support/fetch-zig-cache.sh' ]; then fi # Build Ghostty with zig -zig build ${BUILD_ARGS} - -# Prepare AppImage -- Configure launcher script, metainfo and desktop file with icon. -cd "${APP_DIR}" - -cp "${APPDATA_FILE}" "share/metainfo/com.mitchellh.ghostty.appdata.xml" -cp "${DESKTOP_FILE}" "share/applications/com.mitchellh.ghostty.desktop" - -ln -s "com.mitchellh.ghostty.desktop" "share/applications/ghostty.desktop" -ln -s "share/applications/com.mitchellh.ghostty.desktop" . -ln -s "share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" . -ln -s "share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" .DirIcon - -# bundle all libs -xvfb-run -a -- sharun l -p -v -e -s -k ${LIBS2BUNDLE} - -# preload libpixbufloader /w ld-preload-open as svg icons breaks -# either on ghostty tab bar or gnome-text-editor while config edit or both :( -mv ./shared/lib/gdk-pixbuf-2.0 ./ -cp -rv /opt/path-mapping.so ./shared/lib/ -cp -rv gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader_svg.so ./shared/lib/ - -echo 'path-mapping.so' >./.preload -echo 'PATH_MAPPING=/usr/lib/gdk-pixbuf-2.0:${SHARUN_DIR}/gdk-pixbuf-2.0' >>./.env - -echo 'GHOSTTY_RESOURCES_DIR=${SHARUN_DIR}/share/ghostty' >>./.env -echo 'unset ARGV0' >>./.env - -ln -s ./bin/ghostty ./AppRun -./sharun -g - -VERSION="$(./AppRun --version | awk 'FNR==1 {print $2}')" -if [ -z "${VERSION}" ]; then - echo "ERROR: Could not get version from ghostty binary" - exit 1 -fi - -GHOSTTY_APPIMAGE="Ghostty-${VERSION}-${ARCH}.AppImage" - -cd "${TMP_DIR}" - -# create app image -cp "$(command -v uruntime)" ./uruntime -cp "$(command -v uruntime-lite)" ./uruntime-lite - -# persist mount for faster launch times -sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime-lite +( + cd "ghostty-${GHOSTTY_VERSION}" + zig build ${BUILD_ARGS} +) -# update info -./uruntime-lite --appimage-addupdinfo "${UPINFO}" +export OUTNAME="Ghostty-${GHOSTTY_VERSION}-${ARCH}.AppImage" +export DESKTOP="./ghostty-${GHOSTTY_VERSION}/zig-out/share/applications/com.mitchellh.ghostty.desktop" +export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" -echo "Generating AppImage" -./uruntime --appimage-mkdwarfs -f \ - --set-owner 0 --set-group 0 \ - --no-history --no-create-timestamp \ - --compression zstd:level=22 -S26 -B8 \ - --header uruntime-lite -i "${APP_DIR}" \ - -o "${GHOSTTY_APPIMAGE}" +./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty +./uruntime2appimage -echo "Generating Zsync file" -zsyncmake ./*.AppImage -u ./*.AppImage +mkdir -p ./dist +mv -v ./*.AppImage* ./dist diff --git a/setup.sh b/setup.sh index ce2313f..a5b19ae 100755 --- a/setup.sh +++ b/setup.sh @@ -19,31 +19,24 @@ ARCH="$(uname -m)" ZIG_VERSION="${ZIG_VERSION:-0.13.0}" PANDOC_VERSION="$(get_latest_gh_release 'jgm/pandoc')" MINISIGN_VERSION="$(get_latest_gh_release 'jedisct1/minisign')" -SHARUN_VERSION="$(get_latest_gh_release 'VHSgunzo/sharun')" -URUNTIME_VERSION="$(get_latest_gh_release 'VHSgunzo/uruntime')" - -GITHUB_BASE="https://github.com" -PANDOC_BASE="${GITHUB_BASE}/jgm/pandoc/releases/download/${PANDOC_VERSION}" -MINISIGN_URL="${GITHUB_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" -URUNTIME_URL="${GITHUB_BASE}/VHSgunzo/uruntime/releases/download/${URUNTIME_VERSION}/uruntime-appimage-dwarfs-${ARCH}" -URUNTIME_LITE_URL="${GITHUB_BASE}/VHSgunzo/uruntime/releases/download/${URUNTIME_VERSION}/uruntime-appimage-dwarfs-lite-${ARCH}" -LLVM_BASE="${GITHUB_BASE}/pkgforge-dev/llvm-libs-debloated/releases/download/continuous" + +GH_BASE="https://github.com" +GH_USER_CONTENT="https://raw.githubusercontent.com" + +PANDOC_BASE="${GH_BASE}/jgm/pandoc/releases/download/${PANDOC_VERSION}" +MINISIGN_URL="${GH_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz" -SHARUN_URL="${GITHUB_BASE}/VHSgunzo/sharun/releases/download/${SHARUN_VERSION}/sharun-${ARCH}" -LD_PRELOAD_OPEN="${GITHUB_BASE}/fritzw/ld-preload-open.git" + +DEBLOATED_PKGS="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh" +SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh" +URUNTIME="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/uruntime2appimage.sh" case "${ARCH}" in "x86_64") PANDOC_URL="${PANDOC_BASE}/pandoc-${PANDOC_VERSION}-linux-amd64.tar.gz" - LLVM_URL="${LLVM_BASE}/llvm-libs-nano-x86_64.pkg.tar.zst" - LIBXML_URL="${LLVM_BASE}/libxml2-iculess-x86_64.pkg.tar.zst" - MESA_URL="${LLVM_BASE}/mesa-mini-x86_64.pkg.tar.zst" ;; "aarch64") PANDOC_URL="${PANDOC_BASE}/pandoc-${PANDOC_VERSION}-linux-arm64.tar.gz" - LLVM_URL="${LLVM_BASE}/llvm-libs-nano-aarch64.pkg.tar.xz" - LIBXML_URL="${LLVM_BASE}/libxml2-iculess-aarch64.pkg.tar.xz" - MESA_URL="${LLVM_BASE}/mesa-mini-aarch64.pkg.tar.xz" ;; *) echo "Unsupported ARCH: '${ARCH}'" @@ -51,11 +44,10 @@ case "${ARCH}" in ;; esac -# Debloated llvm and libxml2 without libicudata -wget "${LLVM_URL}" -O /tmp/llvm-libs.pkg.tar.zst -wget "${LIBXML_URL}" -O /tmp/libxml2.pkg.tar.zst -wget "${MESA_URL}" -O /tmp/mesa-mini.pkg.tar.zst -pacman -U --noconfirm /tmp/*.pkg.tar.zst +# Install Debloated Pkgs +wget "${DEBLOATED_PKGS}" -O /tmp/get-debloated-pkgs.sh +chmod a+x /tmp/get-debloated-pkgs.sh +sh /tmp/get-debloated-pkgs.sh --add-opengl --prefer-nano gtk4-mini libxml2-mini # Download & install other dependencies # zig: https://ziglang.org @@ -65,17 +57,6 @@ wget "${ZIG_URL}" -O /tmp/zig-linux.tar.xz tar -xJf /tmp/zig-linux.tar.xz -C /opt ln -s "/opt/zig-linux-${ARCH}-${ZIG_VERSION}/zig" /usr/local/bin/zig -# uruntime: https://github.com/VHSgunzo/uruntime -rm -rf /usr/local/bin/uruntime -wget "${URUNTIME_URL}" -O /tmp/uruntime -chmod +x /tmp/uruntime -mv /tmp/uruntime /usr/local/bin/uruntime - -rm -rf /usr/local/bin/uruntime-lite -wget "${URUNTIME_LITE_URL}" -O /tmp/uruntime-lite -chmod +x /tmp/uruntime-lite -mv /tmp/uruntime-lite /usr/local/bin/uruntime-lite - # minisign: https://github.com/jedisct1/minisign rm -rf /usr/local/bin/minisign wget "${MINISIGN_URL}" -O /tmp/minisign-linux.tar.gz @@ -88,21 +69,13 @@ wget "${PANDOC_URL}" -O /tmp/pandoc-linux.tar.gz tar -xzf /tmp/pandoc-linux.tar.gz -C /tmp mv /tmp/"pandoc-${PANDOC_VERSION}"/bin/* /usr/local/bin -# sharun: https://github.com/VHSgunzo/sharun -rm -rf /usr/local/bin/sharun -wget "${SHARUN_URL}" -O /usr/local/bin/sharun -chmod +x /usr/local/bin/sharun - -# ld-preload-open: https://github.com/fritzw/ld-preload-open -rm -rf /opt/path-mapping.so -git clone "${LD_PRELOAD_OPEN}" -( - cd ld-preload-open - make all - mv ./path-mapping.so ../ -) -rm -rf ld-preload-open -mv ./path-mapping.so /opt/path-mapping.so +# Sharun +wget "${SHARUN}" -O quick-sharun +chmod +x quick-sharun + +# Sharun +wget "${URUNTIME}" -O uruntime2appimage +chmod +x uruntime2appimage # Cleanup pacman -Scc --noconfirm From fb67638587b1631e6c9d727dcd4f4ad8dcd8a5d6 Mon Sep 17 00:00:00 2001 From: psadi Date: Sat, 6 Sep 2025 02:17:47 +0530 Subject: [PATCH 14/51] fix: copy share dir manually --- build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.sh b/build.sh index 8a7f383..4050c18 100755 --- a/build.sh +++ b/build.sh @@ -12,6 +12,8 @@ export URUNTIME_PRELOAD=1 export DEPLOY_OPENGL=1 export EXEC_WRAPPER=1 +rm -rf AppDir dist ghostty-* + BUILD_ARGS=" --summary all \ -Doptimize=ReleaseFast \ @@ -58,6 +60,7 @@ export DESKTOP="./ghostty-${GHOSTTY_VERSION}/zig-out/share/applications/com.mitc export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" ./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty +cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ ./uruntime2appimage mkdir -p ./dist From 9f6a3a860f1c283cba55f603342a4de57678cd98 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Sun, 7 Sep 2025 00:00:27 -0400 Subject: [PATCH 15/51] fix `tip` releases updating to stable --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index 4050c18..fa89b26 100755 --- a/build.sh +++ b/build.sh @@ -24,6 +24,7 @@ BUILD_ARGS=" -Dgtk-x11=true" if [ "${GHOSTTY_VERSION}" = "tip" ]; then + export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|tip|Ghostty-*$ARCH.AppImage.zsync" wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz" -O "ghostty-${GHOSTTY_VERSION}.tar.gz" wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz.minisig" -O "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" GHOSTTY_VERSION="$(tar -tf "ghostty-${GHOSTTY_VERSION}.tar.gz" --wildcards "*zig.zon.txt" | awk -F'[-/]' '{print $2"-"$3}')" From afcaf0d4be926ba6974a5b0046c746a41e9bf092 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Sep 2025 09:03:45 +0000 Subject: [PATCH 16/51] chore(deps): update softprops/action-gh-release action to v2.3.3 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ffee722..a22961c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -153,7 +153,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.3.2 + uses: softprops/action-gh-release@v2.3.3 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 21715ed34549d9056bb1fe1d53b97f21bf92d704 Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Tue, 16 Sep 2025 08:19:57 +0530 Subject: [PATCH 17/51] chore: version update to 1.2.0 --- .github/workflows/ci.yaml | 8 +------- VERSION | 2 +- build.sh | 1 - setup.sh | 2 +- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a22961c..22a49db 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -54,13 +54,7 @@ jobs: - name: Setup build environment run: | - if [ "${{ github.event_name }}" == "schedule" ]; then - export ZIG_VERSION=0.14.0 - else - export ZIG_VERSION=0.13.0 - fi - - ZIG_VERSION=$ZIG_VERSION ./setup.sh + ZIG_VERSION=0.14.0 ./setup.sh - name: Build Ghostty AppImage run: | diff --git a/VERSION b/VERSION index 781dcb0..26aaba0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.3 +1.2.0 diff --git a/build.sh b/build.sh index fa89b26..defcdc9 100755 --- a/build.sh +++ b/build.sh @@ -6,7 +6,6 @@ ARCH="$(uname -m)" GHOSTTY_VERSION="$(cat VERSION)" PUB_KEY="RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV" -export ADD_HOOKS="self-updater.bg.hook" export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" export URUNTIME_PRELOAD=1 export DEPLOY_OPENGL=1 diff --git a/setup.sh b/setup.sh index a5b19ae..95b83ca 100755 --- a/setup.sh +++ b/setup.sh @@ -16,7 +16,7 @@ pacman -Syuq --needed --noconfirm --noprogressbar ${buildDeps} ${ghosttyDeps} ARCH="$(uname -m)" -ZIG_VERSION="${ZIG_VERSION:-0.13.0}" +ZIG_VERSION="${ZIG_VERSION:-0.14.0}" PANDOC_VERSION="$(get_latest_gh_release 'jgm/pandoc')" MINISIGN_VERSION="$(get_latest_gh_release 'jedisct1/minisign')" From 7978483179d75f51d093e203f24aa94b60526444 Mon Sep 17 00:00:00 2001 From: psadi Date: Wed, 17 Sep 2025 14:14:24 +0530 Subject: [PATCH 18/51] fix: add env to unset argv0 --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index defcdc9..db74b94 100755 --- a/build.sh +++ b/build.sh @@ -61,6 +61,7 @@ export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/ap ./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ +echo 'unset ARGV0' >> ./AppDir/.env ./uruntime2appimage mkdir -p ./dist From 9457503b2a6979f9f20cc9f0767a45825da1aae3 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Wed, 17 Sep 2025 13:29:46 -0400 Subject: [PATCH 19/51] temp fix for opengl loader issue --- build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.sh b/build.sh index db74b94..27354a4 100755 --- a/build.sh +++ b/build.sh @@ -62,6 +62,9 @@ export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/ap ./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ echo 'unset ARGV0' >> ./AppDir/.env +# temp fix for https://github.com/pkgforge-dev/ghostty-appimage/issues/93 +ln -s /usr/share/glvnd/egl_vendor.d/10_nvidia.json ./AppDir/share/glvnd/egl_vendor.d/10_nvidia.json + ./uruntime2appimage mkdir -p ./dist From 75f4a0726d1aa37f0fb44a3e9fae3888ec6cf45e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:45:52 +0000 Subject: [PATCH 20/51] chore(deps): update softprops/action-gh-release action to v2.3.4 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 22a49db..e9051ba 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -147,7 +147,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.3.3 + uses: softprops/action-gh-release@v2.3.4 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From d39126fb60957f0e9b36e4145742968e0843d7fd Mon Sep 17 00:00:00 2001 From: psadi Date: Sun, 5 Oct 2025 01:25:04 +0530 Subject: [PATCH 21/51] chore: zig version 0.15.1 for tip builds --- .github/workflows/ci.yaml | 11 +++++++---- build.sh | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 22a49db..47d7e0f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -53,14 +53,17 @@ jobs: ${{ runner.os }}-${{ matrix.arch }}-ghostty- - name: Setup build environment - run: | - ZIG_VERSION=0.14.0 ./setup.sh - - - name: Build Ghostty AppImage run: | if [ "${{ github.event_name }}" == "schedule" ]; then + export ZIG_VERSION=0.15.1 echo "tip" > VERSION + else + export ZIG_VERSION=0.14.0 fi + ZIG_VERSION=$ZIG_VERSION ./setup.sh + + - name: Build Ghostty AppImage + run: | ./build.sh - name: Upload AppImage Artifacts diff --git a/build.sh b/build.sh index 27354a4..034bc55 100755 --- a/build.sh +++ b/build.sh @@ -61,7 +61,7 @@ export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/ap ./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ -echo 'unset ARGV0' >> ./AppDir/.env +echo 'unset ARGV0' >>./AppDir/.env # temp fix for https://github.com/pkgforge-dev/ghostty-appimage/issues/93 ln -s /usr/share/glvnd/egl_vendor.d/10_nvidia.json ./AppDir/share/glvnd/egl_vendor.d/10_nvidia.json From 74e3c0add1b9a6c143e1c8a89bfc20d6cc713670 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:45:52 +0000 Subject: [PATCH 22/51] chore(deps): update softprops/action-gh-release action to v2.3.4 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 47d7e0f..737d97e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -150,7 +150,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.3.3 + uses: softprops/action-gh-release@v2.3.4 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 0ed16e487b4bc2d5ce68dbacbe25195b468d4549 Mon Sep 17 00:00:00 2001 From: psadi Date: Sun, 5 Oct 2025 14:02:10 +0530 Subject: [PATCH 23/51] fix: handle zig versions :X --- setup.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 95b83ca..f64d4e0 100755 --- a/setup.sh +++ b/setup.sh @@ -25,7 +25,14 @@ GH_USER_CONTENT="https://raw.githubusercontent.com" PANDOC_BASE="${GH_BASE}/jgm/pandoc/releases/download/${PANDOC_VERSION}" MINISIGN_URL="${GH_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" -ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz" + +ZIG_PACKAGE_NAME="zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz" + +if [ "${ZIG_VERSION}" != "0.14.0" ]; then + ZIG_PACKAGE_NAME="zig-${ARCH}-linux-${ZIG_VERSION}.tar.xz" +fi + +ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/${ZIG_PACKAGE_NAME}" DEBLOATED_PKGS="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh" SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh" From bb599d794ffddc23d1b53d0498572879cb7f5dc6 Mon Sep 17 00:00:00 2001 From: psadi Date: Sun, 5 Oct 2025 22:16:52 +0530 Subject: [PATCH 24/51] fix: zig symlink --- setup.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.sh b/setup.sh index f64d4e0..e6011bf 100755 --- a/setup.sh +++ b/setup.sh @@ -26,13 +26,13 @@ GH_USER_CONTENT="https://raw.githubusercontent.com" PANDOC_BASE="${GH_BASE}/jgm/pandoc/releases/download/${PANDOC_VERSION}" MINISIGN_URL="${GH_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" -ZIG_PACKAGE_NAME="zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz" +ZIG_PACKAGE_NAME="zig-linux-${ARCH}-${ZIG_VERSION}" if [ "${ZIG_VERSION}" != "0.14.0" ]; then - ZIG_PACKAGE_NAME="zig-${ARCH}-linux-${ZIG_VERSION}.tar.xz" + ZIG_PACKAGE_NAME="zig-${ARCH}-linux-${ZIG_VERSION}" fi -ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/${ZIG_PACKAGE_NAME}" +ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/${ZIG_PACKAGE_NAME}.tar.xz" DEBLOATED_PKGS="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh" SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh" @@ -62,7 +62,7 @@ rm -rf /opt/zig* unlink /usr/local/bin/zig || true wget "${ZIG_URL}" -O /tmp/zig-linux.tar.xz tar -xJf /tmp/zig-linux.tar.xz -C /opt -ln -s "/opt/zig-linux-${ARCH}-${ZIG_VERSION}/zig" /usr/local/bin/zig +ln -s "/opt/${ZIG_PACKAGE_NAME}/zig" /usr/local/bin/zig # minisign: https://github.com/jedisct1/minisign rm -rf /usr/local/bin/minisign From 2d990e4e4a975b9d51b36670b070c06e95977c44 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Tue, 7 Oct 2025 19:09:56 -0400 Subject: [PATCH 25/51] add `gdk-pixbuf2-mini` --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index e6011bf..0164c16 100755 --- a/setup.sh +++ b/setup.sh @@ -54,7 +54,7 @@ esac # Install Debloated Pkgs wget "${DEBLOATED_PKGS}" -O /tmp/get-debloated-pkgs.sh chmod a+x /tmp/get-debloated-pkgs.sh -sh /tmp/get-debloated-pkgs.sh --add-opengl --prefer-nano gtk4-mini libxml2-mini +sh /tmp/get-debloated-pkgs.sh --add-opengl --prefer-nano gtk4-mini libxml2-mini gdk-pixbuf2-mini # Download & install other dependencies # zig: https://ziglang.org From 9ad12346a34278999f18dd5d174772317cdfe200 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 02:08:55 +0000 Subject: [PATCH 26/51] chore(deps): update softprops/action-gh-release action to v2.4.0 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 737d97e..d73fd33 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -150,7 +150,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.3.4 + uses: softprops/action-gh-release@v2.4.0 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 3b89e4a8eb7155a451d7a9764ccfdfa885810eed Mon Sep 17 00:00:00 2001 From: psadi Date: Thu, 9 Oct 2025 21:55:36 +0530 Subject: [PATCH 27/51] release: v1.2.2 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 26aaba0..23aa839 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.0 +1.2.2 From 98e5a30e37e0f1281c5ad0ca146fbf67bf2a34bc Mon Sep 17 00:00:00 2001 From: psadi Date: Sat, 11 Oct 2025 18:58:28 +0530 Subject: [PATCH 28/51] chore: restructure project --- .github/workflows/ci.yaml | 14 ++++++++---- README.md | 4 ---- TROUBLESHOOTING.md | 20 ---------------- build.sh => bin/build-ghostty.sh | 39 ++++++-------------------------- bin/bundle-appimage.sh | 25 ++++++++++++++++++++ setup.sh => bin/setup-env.sh | 22 ------------------ 6 files changed, 41 insertions(+), 83 deletions(-) delete mode 100644 TROUBLESHOOTING.md rename build.sh => bin/build-ghostty.sh (59%) create mode 100755 bin/bundle-appimage.sh rename setup.sh => bin/setup-env.sh (79%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d73fd33..dd108b9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -55,16 +55,20 @@ jobs: - name: Setup build environment run: | if [ "${{ github.event_name }}" == "schedule" ]; then - export ZIG_VERSION=0.15.1 + ZIG_VERSION=0.15.1 echo "tip" > VERSION else - export ZIG_VERSION=0.14.0 + ZIG_VERSION=0.14.0 fi - ZIG_VERSION=$ZIG_VERSION ./setup.sh + ZIG_VERSION=$ZIG_VERSION ./bin/setup-env.sh - - name: Build Ghostty AppImage + - name: Build Ghostty run: | - ./build.sh + ./bin/build-ghostty.sh + + - name: Bundle AppImage + run: | + ./bin/bundle-appimage.sh - name: Upload AppImage Artifacts uses: actions/upload-artifact@v4 diff --git a/README.md b/README.md index 09dec20..d28b34b 100644 --- a/README.md +++ b/README.md @@ -151,10 +151,6 @@ Since AppImages are self-contained executables, there is no formal installation
-## ๐Ÿ› ๏ธ Troubleshooting - -Refer [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) file - ## ๐Ÿค Contributing Contributions & Bugfixes are welcome. If you like to contribute, please feel free to fork the repository and submit a pull request. diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md deleted file mode 100644 index 24c8978..0000000 --- a/TROUBLESHOOTING.md +++ /dev/null @@ -1,20 +0,0 @@ -## ๐Ÿ› ๏ธ Troubleshooting - -**Known Issues** - -1. **[TERMINFO](https://ghostty.org/docs/help/terminfo) `xterm-ghostty` not-set/breaks functionality** - - **Fix:** Set the TERMINFO value to `xterm-256color` at runtime by running the AppImage as follows, - - ```bash - # Option 1 - โฏ TERM=xterm-256color ./Ghostty-${VERSION}-${ARCH}.AppImage - - # Option 2: Add `export TERM=xterm-256color` to your .bashrc or .zshrc and launch the appimage normally - ``` - -1. **Gtk-CRITICAL \*\*: 13:43:27.628: gtk_widget_unparent: assertion 'GTK_IS_WIDGET (widget)' failed** - - **Fix:** Referenced in [#3267](https://github.com/ghostty-org/ghostty/discussions/3267), reported/resolved at [#32](https://github.com/psadi/ghostty-appimage/issues/32) - -_If you encounter any errors, check the terminal for error messages that may indicate missing dependencies or other issues_ diff --git a/build.sh b/bin/build-ghostty.sh similarity index 59% rename from build.sh rename to bin/build-ghostty.sh index 034bc55..f263b12 100755 --- a/build.sh +++ b/bin/build-ghostty.sh @@ -6,21 +6,17 @@ ARCH="$(uname -m)" GHOSTTY_VERSION="$(cat VERSION)" PUB_KEY="RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV" -export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" -export URUNTIME_PRELOAD=1 -export DEPLOY_OPENGL=1 -export EXEC_WRAPPER=1 - rm -rf AppDir dist ghostty-* BUILD_ARGS=" - --summary all \ - -Doptimize=ReleaseFast \ -Dcpu=baseline \ + -Doptimize=ReleaseFast \ -Dpie=true \ - -Demit-docs \ - -Dgtk-wayland=true \ - -Dgtk-x11=true" + --system /tmp/offline-cache/p \ + -Dgtk-wayland=true \ + -Dgtk-x11=true \ + -Demit-docs=false \ + -Dstrip=true" if [ "${GHOSTTY_VERSION}" = "tip" ]; then export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|tip|Ghostty-*$ARCH.AppImage.zsync" @@ -43,29 +39,8 @@ rm "ghostty-${GHOSTTY_VERSION}.tar.gz" \ BUILD_ARGS="${BUILD_ARGS} -Dversion-string=${GHOSTTY_VERSION}" -#Fetch Zig Cache -if [ -f './nix/build-support/fetch-zig-cache.sh' ]; then - ZIG_GLOBAL_CACHE_DIR=/tmp/offline-cache ./nix/build-support/fetch-zig-cache.sh - BUILD_ARGS="${BUILD_ARGS} --system /tmp/offline-cache/p" -fi - -# Build Ghostty with zig ( cd "ghostty-${GHOSTTY_VERSION}" + ZIG_GLOBAL_CACHE_DIR=/tmp/offline-cache ./nix/build-support/fetch-zig-cache.sh zig build ${BUILD_ARGS} ) - -export OUTNAME="Ghostty-${GHOSTTY_VERSION}-${ARCH}.AppImage" -export DESKTOP="./ghostty-${GHOSTTY_VERSION}/zig-out/share/applications/com.mitchellh.ghostty.desktop" -export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" - -./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty -cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ -echo 'unset ARGV0' >>./AppDir/.env -# temp fix for https://github.com/pkgforge-dev/ghostty-appimage/issues/93 -ln -s /usr/share/glvnd/egl_vendor.d/10_nvidia.json ./AppDir/share/glvnd/egl_vendor.d/10_nvidia.json - -./uruntime2appimage - -mkdir -p ./dist -mv -v ./*.AppImage* ./dist diff --git a/bin/bundle-appimage.sh b/bin/bundle-appimage.sh new file mode 100755 index 0000000..b1bbd0a --- /dev/null +++ b/bin/bundle-appimage.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -eux + +ARCH="$(uname -m)" +GHOSTTY_VERSION="$(cat VERSION)" + +export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" +export URUNTIME_PRELOAD=1 +export DEPLOY_OPENGL=1 +export EXEC_WRAPPER=1 +export OUTNAME="Ghostty-${GHOSTTY_VERSION}-${ARCH}.AppImage" +export DESKTOP="./ghostty-${GHOSTTY_VERSION}/zig-out/share/applications/com.mitchellh.ghostty.desktop" +export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" + +./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty +cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ +echo 'unset ARGV0' >>./AppDir/.env +# temp fix for https://github.com/pkgforge-dev/ghostty-appimage/issues/93 +ln -s /usr/share/glvnd/egl_vendor.d/10_nvidia.json ./AppDir/share/glvnd/egl_vendor.d/10_nvidia.json + +./uruntime2appimage + +mkdir -p ./dist +mv -v ./*.AppImage* ./dist diff --git a/setup.sh b/bin/setup-env.sh similarity index 79% rename from setup.sh rename to bin/setup-env.sh index 0164c16..480b38c 100755 --- a/setup.sh +++ b/bin/setup-env.sh @@ -17,13 +17,11 @@ pacman -Syuq --needed --noconfirm --noprogressbar ${buildDeps} ${ghosttyDeps} ARCH="$(uname -m)" ZIG_VERSION="${ZIG_VERSION:-0.14.0}" -PANDOC_VERSION="$(get_latest_gh_release 'jgm/pandoc')" MINISIGN_VERSION="$(get_latest_gh_release 'jedisct1/minisign')" GH_BASE="https://github.com" GH_USER_CONTENT="https://raw.githubusercontent.com" -PANDOC_BASE="${GH_BASE}/jgm/pandoc/releases/download/${PANDOC_VERSION}" MINISIGN_URL="${GH_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" ZIG_PACKAGE_NAME="zig-linux-${ARCH}-${ZIG_VERSION}" @@ -38,19 +36,6 @@ DEBLOATED_PKGS="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/ma SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh" URUNTIME="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/uruntime2appimage.sh" -case "${ARCH}" in -"x86_64") - PANDOC_URL="${PANDOC_BASE}/pandoc-${PANDOC_VERSION}-linux-amd64.tar.gz" - ;; -"aarch64") - PANDOC_URL="${PANDOC_BASE}/pandoc-${PANDOC_VERSION}-linux-arm64.tar.gz" - ;; -*) - echo "Unsupported ARCH: '${ARCH}'" - exit 1 - ;; -esac - # Install Debloated Pkgs wget "${DEBLOATED_PKGS}" -O /tmp/get-debloated-pkgs.sh chmod a+x /tmp/get-debloated-pkgs.sh @@ -70,12 +55,6 @@ wget "${MINISIGN_URL}" -O /tmp/minisign-linux.tar.gz tar -xzf /tmp/minisign-linux.tar.gz -C /tmp mv /tmp/minisign-linux/"${ARCH}"/minisign /usr/local/bin -# pandoc: https://github.com/jgm/pandoc -rm -rf /usr/local/bin/pandoc* -wget "${PANDOC_URL}" -O /tmp/pandoc-linux.tar.gz -tar -xzf /tmp/pandoc-linux.tar.gz -C /tmp -mv /tmp/"pandoc-${PANDOC_VERSION}"/bin/* /usr/local/bin - # Sharun wget "${SHARUN}" -O quick-sharun chmod +x quick-sharun @@ -91,5 +70,4 @@ rm -rf \ /tmp/appimagetool.AppImage \ /tmp/minisign-linux* \ /tmp/zig-linux.tar.xz \ - /tmp/pandoc* \ /tmp/*.pkg.tar.zst From 6e290ccb912e9fe9e35bea11548b0fac3cb7e6ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Oct 2025 16:42:44 +0000 Subject: [PATCH 29/51] chore(deps): update softprops/action-gh-release action to v2.4.1 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index dd108b9..772f426 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -154,7 +154,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.4.0 + uses: softprops/action-gh-release@v2.4.1 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 26ec9ac7549809ac3afa062604236aec759ec136 Mon Sep 17 00:00:00 2001 From: psadi Date: Sun, 12 Oct 2025 13:36:50 +0530 Subject: [PATCH 30/51] fix: ensure proper version gets cascaded to the appimage bundle --- bin/build-ghostty.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/build-ghostty.sh b/bin/build-ghostty.sh index f263b12..a5112db 100755 --- a/bin/build-ghostty.sh +++ b/bin/build-ghostty.sh @@ -23,6 +23,7 @@ if [ "${GHOSTTY_VERSION}" = "tip" ]; then wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz" -O "ghostty-${GHOSTTY_VERSION}.tar.gz" wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz.minisig" -O "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" GHOSTTY_VERSION="$(tar -tf "ghostty-${GHOSTTY_VERSION}.tar.gz" --wildcards "*zig.zon.txt" | awk -F'[-/]' '{print $2"-"$3}')" + echo "${GHOSTTY_VERSION}" >VERSION mv ghostty-tip.tar.gz "ghostty-${GHOSTTY_VERSION}.tar.gz" mv ghostty-tip.tar.gz.minisig "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" else From cc789becbd6c70d909a20b7d431948b14cde5899 Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Thu, 16 Oct 2025 23:59:44 +0530 Subject: [PATCH 31/51] Update ci.yaml --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 772f426..87e9450 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -55,7 +55,7 @@ jobs: - name: Setup build environment run: | if [ "${{ github.event_name }}" == "schedule" ]; then - ZIG_VERSION=0.15.1 + ZIG_VERSION=0.15.2 echo "tip" > VERSION else ZIG_VERSION=0.14.0 From 39e4432e59087d74cc39b89d2acff063c716e9be Mon Sep 17 00:00:00 2001 From: psadi Date: Sun, 26 Oct 2025 15:52:51 +0530 Subject: [PATCH 32/51] release: v1.2.3 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 23aa839..0495c4a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.2 +1.2.3 From 61993ce5c8cb60af72c84cb8acc101e1c8cea860 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Oct 2025 10:24:20 +0000 Subject: [PATCH 33/51] chore(deps): update actions/download-artifact action to v6 --- .github/workflows/ci.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 87e9450..0f0ef4b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -117,11 +117,11 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event_name == 'release' }} steps: - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: name: ghostty-appimage-aarch64 - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: name: ghostty-appimage-x86_64 @@ -145,11 +145,11 @@ jobs: contents: write runs-on: ubuntu-latest steps: - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: name: ghostty-appimage-aarch64 - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: name: ghostty-appimage-x86_64 From 652c92ce5a6a02e8dd9b9839be63df15a45ffa2a Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Sat, 8 Nov 2025 04:56:36 -0400 Subject: [PATCH 34/51] Merge pull request #112 from Samueru-sama/patch-4 simplify appimage creation --- bin/bundle-appimage.sh | 6 +----- bin/setup-env.sh | 10 ++-------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/bin/bundle-appimage.sh b/bin/bundle-appimage.sh index b1bbd0a..082f0c8 100755 --- a/bin/bundle-appimage.sh +++ b/bin/bundle-appimage.sh @@ -15,11 +15,7 @@ export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/ap ./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ -echo 'unset ARGV0' >>./AppDir/.env -# temp fix for https://github.com/pkgforge-dev/ghostty-appimage/issues/93 -ln -s /usr/share/glvnd/egl_vendor.d/10_nvidia.json ./AppDir/share/glvnd/egl_vendor.d/10_nvidia.json - -./uruntime2appimage +./quick-sharun --make-appimage mkdir -p ./dist mv -v ./*.AppImage* ./dist diff --git a/bin/setup-env.sh b/bin/setup-env.sh index 480b38c..932b800 100755 --- a/bin/setup-env.sh +++ b/bin/setup-env.sh @@ -34,12 +34,11 @@ ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/${ZIG_PACKAGE_NAME}.tar.xz" DEBLOATED_PKGS="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh" SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh" -URUNTIME="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/uruntime2appimage.sh" # Install Debloated Pkgs wget "${DEBLOATED_PKGS}" -O /tmp/get-debloated-pkgs.sh chmod a+x /tmp/get-debloated-pkgs.sh -sh /tmp/get-debloated-pkgs.sh --add-opengl --prefer-nano gtk4-mini libxml2-mini gdk-pixbuf2-mini +sh /tmp/get-debloated-pkgs.sh --add-opengl --prefer-nano gtk4-mini libxml2-mini gdk-pixbuf2-mini librsvg-mini # Download & install other dependencies # zig: https://ziglang.org @@ -59,15 +58,10 @@ mv /tmp/minisign-linux/"${ARCH}"/minisign /usr/local/bin wget "${SHARUN}" -O quick-sharun chmod +x quick-sharun -# Sharun -wget "${URUNTIME}" -O uruntime2appimage -chmod +x uruntime2appimage - # Cleanup pacman -Scc --noconfirm rm -rf \ /tmp/appimagetool.AppImage \ /tmp/minisign-linux* \ - /tmp/zig-linux.tar.xz \ - /tmp/*.pkg.tar.zst + /tmp/zig-linux.tar.xz From 101fb07e8ae19850c7eef6f529d8180adeb6243b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Nov 2025 16:24:04 +0530 Subject: [PATCH 35/51] chore(deps): update softprops/action-gh-release action to v2.4.2 (#113) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0f0ef4b..b2b59a6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -154,7 +154,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.4.1 + uses: softprops/action-gh-release@v2.4.2 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 521f47d34a46d51a8572c18b83d6823418da00c2 Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Sat, 13 Dec 2025 14:23:48 +0530 Subject: [PATCH 36/51] fix: typo in readme, url for manual install (#120) closes #116 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d28b34b..a531040 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Run the following commands in your terminal: ```bash # Download the latest AppImage package from releases -wget https://github.com/pkgforge-dev/ghostty-appimage/releases/download/${VERSION}/Ghostty-${VERSION}-${ARCH}.AppImage +wget https://github.com/pkgforge-dev/ghostty-appimage/releases/download/v${VERSION}/Ghostty-${VERSION}-${ARCH}.AppImage # Make the AppImage executable chmod +x Ghostty-${VERSION}-${ARCH}.AppImage From cb5f7b756aa777f0e7bcd83767f4634dd34855d3 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Thu, 26 Feb 2026 04:07:18 -0400 Subject: [PATCH 37/51] update graphical installation instructions (#123) --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a531040..eee9ad8 100644 --- a/README.md +++ b/README.md @@ -110,17 +110,12 @@ _Note: Ensure you have the necessary permissions to run these commands. For more
Graphical (Automatic) -Ghostty AppImage can easily be managed using graphical tools such as [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher) and [Gear Lever](https://github.com/mijorus/gearlever). +Ghostty AppImage can easily be managed using graphical tools such as [AppManager](https://github.com/kem-a/AppManager) and [Gear Lever](https://github.com/mijorus/gearlever). -1. **Using [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher)** - - For detailed instructions, please refer to the [AppImageLauncher documentation](https://docs.appimage.org/user-guide/run-appimages.html#appimagelauncher). - - > **๐Ÿ›ˆ NOTE** - > - > With the launch of AppImageLauncher **v3.0.0**, you have to use the alpha pre-releases as the stable release doesn't work with the static runtime - > - > For more information please refer the [discussion](https://github.com/TheAssassin/AppImageLauncher/discussions/687) and the [comment](https://github.com/TheAssassin/AppImageLauncher/discussions/687#discussioncomment-12181060) +1. **Using [AppManager](https://github.com/kem-a/AppManager)** + - Download the latest AppImage package from the [releases](https://github.com/pkgforge-dev/ghostty-appimage/releases) section. + - Simply drag and drop the files from your file manager into the AppManager application. + - Follow the on-screen instructions to configure the setup as a one-time installation process. 2. **Using [Gear Lever](https://github.com/mijorus/gearlever)** - Download the latest AppImage package from the [releases](https://github.com/pkgforge-dev/ghostty-appimage/releases) section. @@ -129,6 +124,12 @@ Ghostty AppImage can easily be managed using graphical tools such as [AppImageLa _Note: Ensure the necessary prerequsites are satisfied for these applications. For more detailed usage, refer to the documentation of each tool_ +> **๐Ÿ›ˆ NOTE** + Gearlever does not support delta updates with zsync and you may need to give it the URL to update manually. + +> **๐Ÿ›ˆ NOTE** + Gearlever does not have official AppImage releases. You can use [this one](https://github.com/pkgforge-dev/Gear-Lever-AppImage) however. +
## โซ Updating From f105d3b7821d32a639441432b08bc2e65cbf2121 Mon Sep 17 00:00:00 2001 From: Adithya Ps <22428691+psadi@users.noreply.github.com> Date: Fri, 27 Feb 2026 09:03:52 +0530 Subject: [PATCH 38/51] Enhance note visibility for prerequisites readme update --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eee9ad8..be68ea3 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,8 @@ Ghostty AppImage can easily be managed using graphical tools such as [AppManager - Simply drag and drop the files from your file manager into the Gear Lever application. - Follow the on-screen instructions to configure the setup as a one-time installation process. -_Note: Ensure the necessary prerequsites are satisfied for these applications. For more detailed usage, refer to the documentation of each tool_ +> **๐Ÿ›ˆ NOTE** +> Ensure the necessary prerequsites are satisfied for these applications. For more detailed usage, refer to the documentation of each tool > **๐Ÿ›ˆ NOTE** Gearlever does not support delta updates with zsync and you may need to give it the URL to update manually. From 06226bcf563c50ef6161c353918c93b8c0457fe2 Mon Sep 17 00:00:00 2001 From: Adithya Ps <22428691+psadi@users.noreply.github.com> Date: Tue, 10 Mar 2026 08:11:09 +0530 Subject: [PATCH 39/51] release: v1.3.0 (#128) Co-authored-by: psadi --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 0495c4a..f0bb29e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.3 +1.3.0 From 2b458ba88822ec08bb5777f0550236f8a596eed3 Mon Sep 17 00:00:00 2001 From: Adithya Ps <22428691+psadi@users.noreply.github.com> Date: Tue, 10 Mar 2026 09:56:47 +0530 Subject: [PATCH 40/51] fix: pickup zig version from the package (#129) Co-authored-by: psadi --- .github/workflows/ci.yaml | 8 +------- bin/build-ghostty.sh | 17 +++++++++++++++++ bin/setup-env.sh | 17 ----------------- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b2b59a6..5a33a5e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -54,13 +54,7 @@ jobs: - name: Setup build environment run: | - if [ "${{ github.event_name }}" == "schedule" ]; then - ZIG_VERSION=0.15.2 - echo "tip" > VERSION - else - ZIG_VERSION=0.14.0 - fi - ZIG_VERSION=$ZIG_VERSION ./bin/setup-env.sh + ./bin/setup-env.sh - name: Build Ghostty run: | diff --git a/bin/build-ghostty.sh b/bin/build-ghostty.sh index a5112db..d9a3edf 100755 --- a/bin/build-ghostty.sh +++ b/bin/build-ghostty.sh @@ -40,6 +40,23 @@ rm "ghostty-${GHOSTTY_VERSION}.tar.gz" \ BUILD_ARGS="${BUILD_ARGS} -Dversion-string=${GHOSTTY_VERSION}" +# Configure Zig: https://ziglang.org +ZIG_VERSION="$(cat "ghostty-${GHOSTTY_VERSION}/build.zig.zon" | grep ".minimum_zig_version" | cut -d'"' -f2)" +CURRENT_ZIG_VERSION=$(zig version 2>/dev/null || true) +if [ "$CURRENT_ZIG_VERSION" != "$ZIG_VERSION" ]; then + echo "Installing Zig ${ZIG_VERSION}..." + ZIG_PACKAGE_NAME="zig-${ARCH}-linux-${ZIG_VERSION}" + ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/${ZIG_PACKAGE_NAME}.tar.xz" + rm -rf /opt/zig* + unlink /usr/local/bin/zig || true + wget "${ZIG_URL}" -O /tmp/zig-linux.tar.xz + tar -xJf /tmp/zig-linux.tar.xz -C /opt + ln -s "/opt/${ZIG_PACKAGE_NAME}/zig" /usr/local/bin/zig + echo "Zig ${ZIG_VERSION} installed successfully" +else + echo "Zig ${ZIG_VERSION} is already installed, skipping installation" +fi + ( cd "ghostty-${GHOSTTY_VERSION}" ZIG_GLOBAL_CACHE_DIR=/tmp/offline-cache ./nix/build-support/fetch-zig-cache.sh diff --git a/bin/setup-env.sh b/bin/setup-env.sh index 932b800..c5afb6e 100755 --- a/bin/setup-env.sh +++ b/bin/setup-env.sh @@ -16,7 +16,6 @@ pacman -Syuq --needed --noconfirm --noprogressbar ${buildDeps} ${ghosttyDeps} ARCH="$(uname -m)" -ZIG_VERSION="${ZIG_VERSION:-0.14.0}" MINISIGN_VERSION="$(get_latest_gh_release 'jedisct1/minisign')" GH_BASE="https://github.com" @@ -24,14 +23,6 @@ GH_USER_CONTENT="https://raw.githubusercontent.com" MINISIGN_URL="${GH_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" -ZIG_PACKAGE_NAME="zig-linux-${ARCH}-${ZIG_VERSION}" - -if [ "${ZIG_VERSION}" != "0.14.0" ]; then - ZIG_PACKAGE_NAME="zig-${ARCH}-linux-${ZIG_VERSION}" -fi - -ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/${ZIG_PACKAGE_NAME}.tar.xz" - DEBLOATED_PKGS="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh" SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh" @@ -40,14 +31,6 @@ wget "${DEBLOATED_PKGS}" -O /tmp/get-debloated-pkgs.sh chmod a+x /tmp/get-debloated-pkgs.sh sh /tmp/get-debloated-pkgs.sh --add-opengl --prefer-nano gtk4-mini libxml2-mini gdk-pixbuf2-mini librsvg-mini -# Download & install other dependencies -# zig: https://ziglang.org -rm -rf /opt/zig* -unlink /usr/local/bin/zig || true -wget "${ZIG_URL}" -O /tmp/zig-linux.tar.xz -tar -xJf /tmp/zig-linux.tar.xz -C /opt -ln -s "/opt/${ZIG_PACKAGE_NAME}/zig" /usr/local/bin/zig - # minisign: https://github.com/jedisct1/minisign rm -rf /usr/local/bin/minisign wget "${MINISIGN_URL}" -O /tmp/minisign-linux.tar.gz From 2176ecdbd0eefc13c8527ed7b644ea87cf78c0e5 Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Sat, 14 Mar 2026 02:20:04 +0530 Subject: [PATCH 41/51] release: v1.3.1 (#131) --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index f0bb29e..3a3cd8c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.0 +1.3.1 From 31cf990017d60826cdeac481f560e3aa35bcc42a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Mar 2026 22:24:53 +0530 Subject: [PATCH 42/51] chore(deps): update softprops/action-gh-release action to v2.6.1 (#132) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5a33a5e..474ab82 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -148,7 +148,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.4.2 + uses: softprops/action-gh-release@v2.6.1 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 0932164b5a46d173874ef7385eb302ca5815bb1c Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Thu, 19 Mar 2026 22:17:19 +0530 Subject: [PATCH 43/51] fix(ci): revert the original tip build logic for nightly releases (#134) closes #133 --- .github/workflows/ci.yaml | 3 +++ .gitignore | 1 + 2 files changed, 4 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 474ab82..4d54971 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -54,6 +54,9 @@ jobs: - name: Setup build environment run: | + if [ "${{ github.event_name }}" == "schedule" ]; then + echo "tip" > VERSION + fi ./bin/setup-env.sh - name: Build Ghostty diff --git a/.gitignore b/.gitignore index 0ec533f..1fb216c 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ ghostty-* quick-sharun uruntime2appimage dist +appinfo From faf03408ab1b94624a3bff50ee1a9e249acd2bd5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 22:28:50 +0530 Subject: [PATCH 44/51] chore(deps): update softprops/action-gh-release action to v2.6.2 (#135) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4d54971..42a9870 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -151,7 +151,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.6.1 + uses: softprops/action-gh-release@v2.6.2 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 60e3ce94c3b7b0e9d00347071f3a5616df85e680 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 10:27:26 +0530 Subject: [PATCH 45/51] chore(deps): update softprops/action-gh-release action to v3 (#136) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 42a9870..37740d8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -151,7 +151,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v2.6.2 + uses: softprops/action-gh-release@v3.0.0 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true From 46fa6c949c6037ec31924d21ef18ff293efa619d Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Sun, 10 May 2026 22:18:27 +0530 Subject: [PATCH 46/51] fix: add commit hash as part of the build (#140) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: add commit hash as part of the build closes #138 * fix: strip .sframe from glibc crt objects to unblock Zig linker on GCC 15+ (#143) GCC 15+ compiles glibc crt startup objects (crt1.o, Scrt1.o, rcrt1.o) with .sframe sections that use R_X86_64_PC64 relocations. Zig's self-hosted linker doesn't support this relocation type, causing build-time helpers such as ghostty-build-data to fail with: error: fatal linker error: unhandled relocation type R_X86_64_PC64 note: in /usr/lib/crt1.o:.sframe After pacman installs packages in setup-env.sh, use objcopy to strip .sframe and .rela.sframe from the affected objects. This is version-agnostic and requires no changes to the Zig invocation. Also remove URUNTIME_PRELOAD from bundle-appimage.sh โ€” the aarch64 dwarfs-lite uruntime variant does not support the URUNTIME_MOUNT marker patching it requires, causing AppImage packaging to fail on aarch64. Fixes: https://github.com/pkgforge-dev/ghostty-appimage/issues/138 See: https://ziggit.dev/t/linker-error-when-building-zig-from-source/14394 Co-authored-by: Dino Korah <691011+codemedic@users.noreply.github.com> * chore(deps): update softprops/action-gh-release action to v3 (#136) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: update debloated args to use common pkgs (nano) --------- Co-authored-by: Dino Korah Co-authored-by: Dino Korah <691011+codemedic@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- bin/build-ghostty.sh | 4 ++-- bin/bundle-appimage.sh | 1 - bin/setup-env.sh | 10 +++++++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/bin/build-ghostty.sh b/bin/build-ghostty.sh index d9a3edf..58a7db5 100755 --- a/bin/build-ghostty.sh +++ b/bin/build-ghostty.sh @@ -22,7 +22,7 @@ if [ "${GHOSTTY_VERSION}" = "tip" ]; then export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|tip|Ghostty-*$ARCH.AppImage.zsync" wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz" -O "ghostty-${GHOSTTY_VERSION}.tar.gz" wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz.minisig" -O "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" - GHOSTTY_VERSION="$(tar -tf "ghostty-${GHOSTTY_VERSION}.tar.gz" --wildcards "*zig.zon.txt" | awk -F'[-/]' '{print $2"-"$3}')" + GHOSTTY_VERSION="$(tar -tf "ghostty-${GHOSTTY_VERSION}.tar.gz" --wildcards "*zig.zon.txt" | awk '-F[-/]' '{print $2"-"$3"-"$4}')" echo "${GHOSTTY_VERSION}" >VERSION mv ghostty-tip.tar.gz "ghostty-${GHOSTTY_VERSION}.tar.gz" mv ghostty-tip.tar.gz.minisig "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig" @@ -42,10 +42,10 @@ BUILD_ARGS="${BUILD_ARGS} -Dversion-string=${GHOSTTY_VERSION}" # Configure Zig: https://ziglang.org ZIG_VERSION="$(cat "ghostty-${GHOSTTY_VERSION}/build.zig.zon" | grep ".minimum_zig_version" | cut -d'"' -f2)" +ZIG_PACKAGE_NAME="zig-${ARCH}-linux-${ZIG_VERSION}" CURRENT_ZIG_VERSION=$(zig version 2>/dev/null || true) if [ "$CURRENT_ZIG_VERSION" != "$ZIG_VERSION" ]; then echo "Installing Zig ${ZIG_VERSION}..." - ZIG_PACKAGE_NAME="zig-${ARCH}-linux-${ZIG_VERSION}" ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/${ZIG_PACKAGE_NAME}.tar.xz" rm -rf /opt/zig* unlink /usr/local/bin/zig || true diff --git a/bin/bundle-appimage.sh b/bin/bundle-appimage.sh index 082f0c8..57f4d2e 100755 --- a/bin/bundle-appimage.sh +++ b/bin/bundle-appimage.sh @@ -6,7 +6,6 @@ ARCH="$(uname -m)" GHOSTTY_VERSION="$(cat VERSION)" export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" -export URUNTIME_PRELOAD=1 export DEPLOY_OPENGL=1 export EXEC_WRAPPER=1 export OUTNAME="Ghostty-${GHOSTTY_VERSION}-${ARCH}.AppImage" diff --git a/bin/setup-env.sh b/bin/setup-env.sh index c5afb6e..a26e60d 100755 --- a/bin/setup-env.sh +++ b/bin/setup-env.sh @@ -14,6 +14,14 @@ ghosttyDeps="gtk4 libadwaita gtk4-layer-shell" rm -rf "/usr/share/libalpm/hooks/package-cleanup.hook" pacman -Syuq --needed --noconfirm --noprogressbar ${buildDeps} ${ghosttyDeps} +# GCC 15+ compiles glibc crt startup objects with .sframe sections that use R_X86_64_PC64 +# relocations. Zig's self-hosted linker doesn't support this relocation type, causing +# build-time helpers (e.g. ghostty-build-data) to fail. Strip .sframe and its associated +# relocation section from the affected objects so the linker never encounters them. +for _crt in /usr/lib/crt1.o /usr/lib/Scrt1.o /usr/lib/rcrt1.o; do + [ -f "$_crt" ] && objcopy --remove-section .sframe --remove-section .rela.sframe "$_crt" +done + ARCH="$(uname -m)" MINISIGN_VERSION="$(get_latest_gh_release 'jedisct1/minisign')" @@ -29,7 +37,7 @@ SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/usefu # Install Debloated Pkgs wget "${DEBLOATED_PKGS}" -O /tmp/get-debloated-pkgs.sh chmod a+x /tmp/get-debloated-pkgs.sh -sh /tmp/get-debloated-pkgs.sh --add-opengl --prefer-nano gtk4-mini libxml2-mini gdk-pixbuf2-mini librsvg-mini +sh /tmp/get-debloated-pkgs.sh --add-common --prefer-nano # minisign: https://github.com/jedisct1/minisign rm -rf /usr/local/bin/minisign From 766bc78826a35450cce074e9f50baf21ff856e1e Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Sun, 10 May 2026 22:46:04 +0530 Subject: [PATCH 47/51] fix: disable system freetype stack in build (#144) --- bin/build-ghostty.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/build-ghostty.sh b/bin/build-ghostty.sh index 58a7db5..afda651 100755 --- a/bin/build-ghostty.sh +++ b/bin/build-ghostty.sh @@ -13,6 +13,9 @@ BUILD_ARGS=" -Doptimize=ReleaseFast \ -Dpie=true \ --system /tmp/offline-cache/p \ + -fno-sys=freetype \ + -fno-sys=zlib \ + -fno-sys=libpng \ -Dgtk-wayland=true \ -Dgtk-x11=true \ -Demit-docs=false \ From 971e4bd9210bdea43bce8e423dc1ce27a975b617 Mon Sep 17 00:00:00 2001 From: Adithya Ps Date: Sun, 10 May 2026 23:40:36 +0530 Subject: [PATCH 48/51] revert: add back (#145) --- bin/bundle-appimage.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/bundle-appimage.sh b/bin/bundle-appimage.sh index 57f4d2e..58c125d 100755 --- a/bin/bundle-appimage.sh +++ b/bin/bundle-appimage.sh @@ -8,6 +8,7 @@ GHOSTTY_VERSION="$(cat VERSION)" export UPINFO="gh-releases-zsync|$(echo "${GITHUB_REPOSITORY}" | tr '/' '|')|latest|Ghostty-*$ARCH.AppImage.zsync" export DEPLOY_OPENGL=1 export EXEC_WRAPPER=1 +export URUNTIME_PRELOAD=1 export OUTNAME="Ghostty-${GHOSTTY_VERSION}-${ARCH}.AppImage" export DESKTOP="./ghostty-${GHOSTTY_VERSION}/zig-out/share/applications/com.mitchellh.ghostty.desktop" export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" From 0326e508dd3a3ec2d3c487d0a2c86af4f6d8d33e Mon Sep 17 00:00:00 2001 From: Dino Korah Date: Sat, 16 May 2026 13:08:32 +0100 Subject: [PATCH 49/51] docs: document xterm-ghostty terminfo fix for sudo (#146) * docs: document xterm-ghostty terminfo fix for sudo * docs: move troubleshooting content to TROUBLESHOOTING.md --------- Co-authored-by: Dino Korah <691011+codemedic@users.noreply.github.com> --- README.md | 4 ++++ TROUBLESHOOTING.md | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 TROUBLESHOOTING.md diff --git a/README.md b/README.md index be68ea3..0abdb42 100644 --- a/README.md +++ b/README.md @@ -153,6 +153,10 @@ Since AppImages are self-contained executables, there is no formal installation
+## ๐Ÿ› ๏ธ Troubleshooting + +See [TROUBLESHOOTING.md](TROUBLESHOOTING.md) for known issues and fixes. + ## ๐Ÿค Contributing Contributions & Bugfixes are welcome. If you like to contribute, please feel free to fork the repository and submit a pull request. diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md new file mode 100644 index 0000000..fcea981 --- /dev/null +++ b/TROUBLESHOOTING.md @@ -0,0 +1,30 @@ +# Troubleshooting + +## `Error opening terminal: xterm-ghostty` when using `sudo` + +Ghostty sets `TERM=xterm-ghostty`, but the terminfo entry is bundled inside the AppImage and is not installed on the host system. When you run a terminal application via `sudo` (e.g., `sudo aptitude`, `sudo vim`), the root environment cannot find the terminfo entry and fails with: + +``` +Error opening terminal: xterm-ghostty. +``` + +**Fix:** extract the terminfo entry from the AppImage and install it system-wide. + +```bash +# Extract the terminfo entry into a temporary directory +tmpdir=$(mktemp -d /tmp/ghostty-appimage.XXXXXX) +(cd "$tmpdir" && /path/to/Ghostty.AppImage --appimage-extract share/terminfo/x/xterm-ghostty) + +# Install for the current user +mkdir -p ~/.local/share/terminfo/x +cp "$tmpdir/squashfs-root/share/terminfo/x/xterm-ghostty" ~/.local/share/terminfo/x/ + +# Install system-wide so root and sudo can find it +sudo mkdir -p /usr/share/terminfo/x +sudo cp "$tmpdir/squashfs-root/share/terminfo/x/xterm-ghostty" /usr/share/terminfo/x/ + +# Clean up +rm -rf "$tmpdir" +``` + +This only needs to be done once, or again after upgrading to a new AppImage release. From 87ea00a671a99dca941bb267f839cddbbfa13ef8 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:12:18 -0400 Subject: [PATCH 50/51] use our setup action (#149) --- .github/workflows/ci.yaml | 3 +++ bin/bundle-appimage.sh | 4 ++-- bin/setup-env.sh | 14 ++------------ 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 37740d8..bc55ec6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -40,6 +40,9 @@ jobs: with: persist-credentials: false + - name: Preparing Container + uses: pkgforge-dev/anylinux-setup-action@0964f2258d6c93d1391359978dde081fd8b3c6af # v2 + - name: Cache dependencies id: cache-ghostty uses: actions/cache@v4 diff --git a/bin/bundle-appimage.sh b/bin/bundle-appimage.sh index 58c125d..16b6954 100755 --- a/bin/bundle-appimage.sh +++ b/bin/bundle-appimage.sh @@ -13,9 +13,9 @@ export OUTNAME="Ghostty-${GHOSTTY_VERSION}-${ARCH}.AppImage" export DESKTOP="./ghostty-${GHOSTTY_VERSION}/zig-out/share/applications/com.mitchellh.ghostty.desktop" export ICON="./ghostty-${GHOSTTY_VERSION}/zig-out/share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" -./quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty +quick-sharun ./ghostty-${GHOSTTY_VERSION}/zig-out/bin/ghostty cp -rf ./ghostty-${GHOSTTY_VERSION}/zig-out/share/* ./AppDir/share/ -./quick-sharun --make-appimage +quick-sharun --make-appimage mkdir -p ./dist mv -v ./*.AppImage* ./dist diff --git a/bin/setup-env.sh b/bin/setup-env.sh index a26e60d..ea5c43a 100755 --- a/bin/setup-env.sh +++ b/bin/setup-env.sh @@ -27,17 +27,11 @@ ARCH="$(uname -m)" MINISIGN_VERSION="$(get_latest_gh_release 'jedisct1/minisign')" GH_BASE="https://github.com" -GH_USER_CONTENT="https://raw.githubusercontent.com" MINISIGN_URL="${GH_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz" -DEBLOATED_PKGS="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh" -SHARUN="${GH_USER_CONTENT}/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh" - -# Install Debloated Pkgs -wget "${DEBLOATED_PKGS}" -O /tmp/get-debloated-pkgs.sh -chmod a+x /tmp/get-debloated-pkgs.sh -sh /tmp/get-debloated-pkgs.sh --add-common --prefer-nano +# Install Debloated Pkgs (get-debloated-pkgs provided by anylinux-setup-action) +get-debloated-pkgs --add-common --prefer-nano # minisign: https://github.com/jedisct1/minisign rm -rf /usr/local/bin/minisign @@ -45,10 +39,6 @@ wget "${MINISIGN_URL}" -O /tmp/minisign-linux.tar.gz tar -xzf /tmp/minisign-linux.tar.gz -C /tmp mv /tmp/minisign-linux/"${ARCH}"/minisign /usr/local/bin -# Sharun -wget "${SHARUN}" -O quick-sharun -chmod +x quick-sharun - # Cleanup pacman -Scc --noconfirm From fe35f156b55c608f7fbec84ac95a79df4d4dccb9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Jun 2026 01:05:19 +0530 Subject: [PATCH 51/51] chore(deps): update softprops/action-gh-release action to v3.0.1 (#151) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bc55ec6..b299657 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -154,7 +154,7 @@ jobs: name: ghostty-appimage-x86_64 - name: Ghostty Tip ("Nightly") - uses: softprops/action-gh-release@v3.0.0 + uses: softprops/action-gh-release@v3.0.1 with: name: '๐Ÿ‘ป Ghostty Tip ("Nightly")' prerelease: true