Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
5b82099
ci: delete old release assets for nightly builds
Apr 3, 2025
a89d14a
chore(deps): update softprops/action-gh-release action to v2.2.2
renovate[bot] Apr 19, 2025
dc7e611
Merge pull request #73 from pkgforge-dev/renovate/softprops-action-gh…
Apr 19, 2025
cbb4404
build: add uruntime-lite and debloatted mesa
Apr 21, 2025
00f5c55
feat: add experimental builds
Apr 25, 2025
5cd6539
Merge pull request #76 from pkgforge-dev/feature/exp
Apr 25, 2025
bc9092e
fix: change upinfo name which conflicts between builds
May 16, 2025
299037f
Merge pull request #78 from pkgforge-dev/feature/upinfo
May 16, 2025
af95a7f
fix: typo :/
May 16, 2025
15bf9c9
chore(deps): update softprops/action-gh-release action to v2.3.0
renovate[bot] Jun 10, 2025
660bc4b
Merge pull request #80 from pkgforge-dev/renovate/softprops-action-gh…
Jun 10, 2025
bf0a50a
Revert "chore(deps): update softprops/action-gh-release action to v2.…
Samueru-sama Jun 10, 2025
152862e
Merge pull request #81 from Samueru-sama/revert-80-renovate/softprops…
Jun 10, 2025
6bf32ea
chore(deps): update softprops/action-gh-release action to v2.3.2
renovate[bot] Jun 10, 2025
016d91d
Merge pull request #83 from pkgforge-dev/renovate/softprops-action-gh…
Jun 23, 2025
2654fe7
sunset glfw builds
Jul 6, 2025
0823c0a
Merge pull request #84 from pkgforge-dev/feature/glfw
Jul 6, 2025
a81cf5d
chore(deps): update actions/download-artifact action to v5
renovate[bot] Aug 6, 2025
66d0df4
Merge pull request #85 from pkgforge-dev/renovate/actions-download-ar…
Aug 6, 2025
a49df6f
chore(deps): update actions/checkout action to v5
renovate[bot] Aug 11, 2025
e1fdd85
Merge pull request #87 from pkgforge-dev/renovate/actions-checkout-5.x
Aug 11, 2025
8f949d3
refactor: Implement pkgforge scripts
Sep 1, 2025
fdab545
Merge pull request #88 from pkgforge-dev/feature/deps
Sep 2, 2025
fb67638
fix: copy share dir manually
Sep 5, 2025
ab6438b
Merge pull request #89 from pkgforge-dev/feature/deps
Sep 6, 2025
9f6a3a8
fix `tip` releases updating to stable
Samueru-sama Sep 7, 2025
cf879c1
Merge pull request #90 from Samueru-sama/patch-1
Sep 7, 2025
afcaf0d
chore(deps): update softprops/action-gh-release action to v2.3.3
renovate[bot] Sep 7, 2025
d909ce4
Merge pull request #91 from pkgforge-dev/renovate/softprops-action-gh…
Sep 7, 2025
21715ed
chore: version update to 1.2.0
Sep 16, 2025
7978483
fix: add env to unset argv0
Sep 17, 2025
9457503
temp fix for opengl loader issue
Samueru-sama Sep 17, 2025
812e01d
Merge pull request #95 from Samueru-sama/patch-2
Sep 17, 2025
75f4a07
chore(deps): update softprops/action-gh-release action to v2.3.4
renovate[bot] Oct 3, 2025
6a74a84
Merge pull request #98 from pkgforge-dev/renovate/softprops-action-gh…
Oct 4, 2025
d39126f
chore: zig version 0.15.1 for tip builds
Oct 4, 2025
3807a97
Merge pull request #99 from pkgforge-dev/feature/zig_version
Oct 4, 2025
74e3c0a
chore(deps): update softprops/action-gh-release action to v2.3.4
renovate[bot] Oct 3, 2025
0ed16e4
fix: handle zig versions :X
Oct 5, 2025
b6a35ae
Merge pull request #100 from pkgforge-dev/feature/zig_version
Oct 5, 2025
bb599d7
fix: zig symlink
Oct 5, 2025
3d96beb
Merge pull request #101 from pkgforge-dev/feature/zig_version
Oct 5, 2025
2d990e4
add `gdk-pixbuf2-mini`
Samueru-sama Oct 7, 2025
79cff38
Merge pull request #103 from Samueru-sama/patch-3
Oct 8, 2025
9ad1234
chore(deps): update softprops/action-gh-release action to v2.4.0
renovate[bot] Oct 8, 2025
8698b21
Merge pull request #102 from pkgforge-dev/renovate/softprops-action-g…
Oct 9, 2025
3b89e4a
release: v1.2.2
Oct 9, 2025
99d8fbb
Merge pull request #104 from pkgforge-dev/v1.2.2
Oct 9, 2025
98e5a30
chore: restructure project
Oct 11, 2025
033829e
Merge pull request #105 from pkgforge-dev/feature/restructure
Oct 11, 2025
6e290cc
chore(deps): update softprops/action-gh-release action to v2.4.1
renovate[bot] Oct 11, 2025
8a49437
Merge pull request #106 from pkgforge-dev/renovate/softprops-action-g…
Oct 11, 2025
26ec9ac
fix: ensure proper version gets cascaded to the appimage bundle
Oct 12, 2025
cc789be
Update ci.yaml
Oct 16, 2025
39e4432
release: v1.2.3
Oct 26, 2025
2fd860c
Merge pull request #109 from pkgforge-dev/release/v1.2.3
Oct 26, 2025
61993ce
chore(deps): update actions/download-artifact action to v6
renovate[bot] Oct 26, 2025
c877726
Merge pull request #107 from pkgforge-dev/renovate/actions-download-a…
Oct 27, 2025
652c92c
Merge pull request #112 from Samueru-sama/patch-4
Samueru-sama Nov 8, 2025
101fb07
chore(deps): update softprops/action-gh-release action to v2.4.2 (#113)
renovate[bot] Nov 9, 2025
521f47d
fix: typo in readme, url for manual install (#120)
Dec 13, 2025
cb5f7b7
update graphical installation instructions (#123)
Samueru-sama Feb 26, 2026
f105d3b
Enhance note visibility for prerequisites
psadi Feb 27, 2026
06226bc
release: v1.3.0 (#128)
psadi Mar 10, 2026
2b458ba
fix: pickup zig version from the package (#129)
psadi Mar 10, 2026
2176ecd
release: v1.3.1 (#131)
psadi Mar 13, 2026
31cf990
chore(deps): update softprops/action-gh-release action to v2.6.1 (#132)
renovate[bot] Mar 17, 2026
0932164
fix(ci): revert the original tip build logic for nightly releases (#134)
psadi Mar 19, 2026
faf0340
chore(deps): update softprops/action-gh-release action to v2.6.2 (#135)
renovate[bot] Apr 12, 2026
60e3ce9
chore(deps): update softprops/action-gh-release action to v3 (#136)
renovate[bot] Apr 22, 2026
46fa6c9
fix: add commit hash as part of the build (#140)
psadi May 10, 2026
766bc78
fix: disable system freetype stack in build (#144)
psadi May 10, 2026
971e4bd
revert: add back (#145)
psadi May 10, 2026
0326e50
docs: document xterm-ghostty terminfo fix for sudo (#146)
codemedic May 16, 2026
87ea00a
use our setup action (#149)
Samueru-sama Jun 16, 2026
fe35f15
chore(deps): update softprops/action-gh-release action to v3.0.1 (#151)
renovate[bot] Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 31 additions & 20 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,13 @@ 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

- name: Preparing Container
uses: pkgforge-dev/anylinux-setup-action@0964f2258d6c93d1391359978dde081fd8b3c6af # v2

- name: Cache dependencies
id: cache-ghostty
uses: actions/cache@v4
Expand All @@ -55,27 +58,24 @@ jobs:
- name: Setup build environment
run: |
if [ "${{ github.event_name }}" == "schedule" ]; then
ZIG_VERSION=0.14.0
else
ZIG_VERSION=0.13.0
echo "tip" > VERSION
fi
./bin/setup-env.sh

sed -i "s/#ZIG_VERSION/${ZIG_VERSION}/g" setup.sh
./setup.sh
- name: Build Ghostty
run: |
./bin/build-ghostty.sh

- name: Build Ghostty AppImage
- name: Bundle AppImage
run: |
if [ "${{ github.event_name }}" == "schedule" ]; then
echo "tip" > VERSION
fi
./build.sh
./bin/bundle-appimage.sh

- name: Upload AppImage Artifacts
uses: actions/upload-artifact@v4
with:
name: ghostty-appimage-${{ matrix.arch }}
retention-days: 7
path: /tmp/ghostty-build/Ghostty-*-${{ matrix.arch }}.AppImage*
path: dist

tag:
name: "👻 Tip Tag"
Expand All @@ -88,12 +88,23 @@ jobs:
needs:
- build_appimage
steps:
- uses: actions/checkout@v4 # zizmor: ignore[artipacked]
- name: Tip Tag
- uses: actions/checkout@v5 # zizmor: ignore[artipacked]

- 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"
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:
Expand All @@ -106,11 +117,11 @@ jobs:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'release' }}
steps:
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
name: ghostty-appimage-aarch64

- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
name: ghostty-appimage-x86_64

Expand All @@ -134,16 +145,16 @@ jobs:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
name: ghostty-appimage-aarch64

- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
name: ghostty-appimage-x86_64

- name: Ghostty Tip ("Nightly")
uses: softprops/action-gh-release@v2.2.1
uses: softprops/action-gh-release@v3.0.1
with:
name: '👻 Ghostty Tip ("Nightly")'
prerelease: true
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,10 @@ Sessionx.vim
tags
# Persistent undo
[._]*.un~

AppDir
ghostty-*
quick-sharun
uruntime2appimage
dist
appinfo
29 changes: 15 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -110,25 +110,26 @@ _Note: Ensure you have the necessary permissions to run these commands. For more
<details>
<summary><b>Graphical (Automatic)</b></summary>

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

> **🛈 NOTE**
Gearlever does not have official AppImage releases. You can use [this one](https://github.com/pkgforge-dev/Gear-Lever-AppImage) however.

</details>

Expand All @@ -154,7 +155,7 @@ Since AppImages are self-contained executables, there is no formal installation

## 🛠️ Troubleshooting

Refer [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) file
See [TROUBLESHOOTING.md](TROUBLESHOOTING.md) for known issues and fixes.

## 🤝 Contributing

Expand Down
34 changes: 22 additions & 12 deletions TROUBLESHOOTING.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,30 @@
## 🛠️ Troubleshooting
# Troubleshooting

**Known Issues**
## `Error opening terminal: xterm-ghostty` when using `sudo`

1. **[TERMINFO](https://ghostty.org/docs/help/terminfo) `xterm-ghostty` not-set/breaks functionality**
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:

**Fix:** Set the TERMINFO value to `xterm-256color` at runtime by running the AppImage as follows,
```
Error opening terminal: xterm-ghostty.
```

```bash
# Option 1
❯ TERM=xterm-256color ./Ghostty-${VERSION}-${ARCH}.AppImage
**Fix:** extract the terminfo entry from the AppImage and install it system-wide.

# Option 2: Add `export TERM=xterm-256color` to your .bashrc or .zshrc and launch the appimage normally
```
```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)

1. **Gtk-CRITICAL \*\*: 13:43:27.628: gtk_widget_unparent: assertion 'GTK_IS_WIDGET (widget)' failed**
# Install for the current user
mkdir -p ~/.local/share/terminfo/x
cp "$tmpdir/squashfs-root/share/terminfo/x/xterm-ghostty" ~/.local/share/terminfo/x/

**Fix:** Referenced in [#3267](https://github.com/ghostty-org/ghostty/discussions/3267), reported/resolved at [#32](https://github.com/psadi/ghostty-appimage/issues/32)
# 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/

_If you encounter any errors, check the terminal for error messages that may indicate missing dependencies or other issues_
# Clean up
rm -rf "$tmpdir"
```

This only needs to be done once, or again after upgrading to a new AppImage release.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.1.3
1.3.1
68 changes: 0 additions & 68 deletions assets/ghostty.appdata.xml

This file was deleted.

22 changes: 0 additions & 22 deletions assets/ghostty.desktop

This file was deleted.

67 changes: 67 additions & 0 deletions bin/build-ghostty.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/bin/sh

set -eux

ARCH="$(uname -m)"
GHOSTTY_VERSION="$(cat VERSION)"
PUB_KEY="RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV"

rm -rf AppDir dist ghostty-*

BUILD_ARGS="
-Dcpu=baseline \
-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 \
-Dstrip=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"-"$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"
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

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"

rm "ghostty-${GHOSTTY_VERSION}.tar.gz" \
"ghostty-${GHOSTTY_VERSION}.tar.gz.minisig"

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_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
zig build ${BUILD_ARGS}
)
Loading