Ghostty 1.4 is out, and if you're on Ubuntu 24.04 LTS, apt install ghostty won't get it for you. The release requires GTK 4.18 and libadwaita 1.7, the release notes say outright that 24.04 doesn't meet that, and Ghostty exits at startup if it loads older libraries. The notes offer two ways out: stay on an older Ghostty, or use the Flatpak.
That's awkward, because 1.4 is the release that makes the "should I switch terminals?" question worth asking again. It took seven months, 2,889 commits and 172 contributors. The fixes are the kind you notice: scrollback memory down 70–90%, plain ASCII parsing up from 128 MB/s to 725 MB/s, and on Linux, text that is finally sharp at fractional scaling. The Hacker News thread passed 1,000 points.
This post covers the changes you'll feel day to day, install and upgrade steps for macOS, Fedora, Arch and Ubuntu (24.04 included), the config lines that break on upgrade, and moving over from iTerm2, Kitty or Alacritty.
What's new in Ghostty 1.4 that you'll actually notice
I went through the full changelog, and these are the changes that show up in a normal working day. All numbers are the maintainers' own, from the release notes.
| Change | Before | 1.4 |
|---|---|---|
| Default scrollback limit | 10 MB | 50 MB |
| Physical memory for off-screen scrollback | uncompressed | 70–90% less (macOS, 64-bit Linux) |
| Page memory per new terminal (macOS) | 128 KiB | ~16 KiB |
| GPU memory, 20 hidden tabs (macOS) | ~385 MiB | ~18 MiB |
| Plain ASCII parsing | 128 MB/s | 725 MB/s |
| cat of a 150 MB file (macOS) | 1.5 s | 566 ms |
| Resize with large scrollback | baseline | ~6x faster |
To me the memory numbers matter more than the throughput ones. Nobody cats 150 MB files all day, but plenty of us have 30 tabs open with a week of build logs in scrollback. The default scrollback limit went up fivefold and the memory bill still went down.
The rest of what I'd care about:
- A new OpenGL renderer on GTK. It drops
GtkGLAreaand renders with EGL on its own thread, exporting DMABUF frames with triple buffering. This fixes the blurry text at fractional scales (#1938). If you run a laptop at 125% or 150%, this alone is reason enough to upgrade. ghostty +sshis a drop-insshwrapper that installs Ghostty's terminfo on the remote host and falls back toTERM=xterm-256color. It deals with the old "unknown terminal type xterm-ghostty" problem on servers you don't control.- Split drag and drop on GTK, controlled by the new
drag-handleoption (auto,always,never). - Full Kitty graphics support, now with animation and relative placements. The project calls Ghostty the first terminal outside Kitty to do this.
- macOS 27 fixes for the tab bar and titlebar. It still runs back to macOS 13, and launch to a window is about 15% faster.
The release also fixes ten security advisories. The one that concerns me most is GHSA-4hwh-wx3w-3fqg: paste protection didn't treat carriage returns as line endings, so a pasted command could run without confirmation in programs that don't use bracketed paste. Two of the advisories name 1.3.0 and 1.3.1 as affected, and I couldn't find a 1.3.2 patch release. Neither could hongminhee on Lobsters, who pointed out that getting the fixes means taking the GTK 4.18 bump and the new defaults along with them. That's a fair complaint, and it's why this post opens with Ubuntu 24.04.
How to install Ghostty 1.4 on macOS
macOS is the only platform with official prebuilt binaries. Get the DMG from ghostty.org/download or use the community Homebrew cask, which repackages the same DMG:
brew install --cask ghostty
# already installed?
brew upgrade --cask ghosttyIf you installed from the DMG, the built-in updater handles it. In 1.4, auto-installed updates no longer prompt you to restart.
How to install Ghostty 1.4 on Linux (Fedora, Arch, Ubuntu and others)
There are no official Linux binaries. Every package below is built by a distro maintainer or a community volunteer, and each one updates on its own schedule. Check the version before you assume you have 1.4:
ghostty --versionOn Fedora, use the community COPR:
sudo dnf copr enable scottames/ghostty
sudo dnf install ghosttyOn Arch it's in [extra], which tracks tagged releases:
sudo pacman -S ghosttyUbuntu 26.04 and later has Ghostty in the official repos, but the PPA README listed that package as 1.3.0 in May 2026, so check before you trust it. The mkasberg/ghostty-ubuntu PPA is usually ahead:
sudo add-apt-repository ppa:mkasberg/ghostty-ubuntu
sudo apt update
sudo apt install ghosttyWhen I checked, the PPA was still on 1.3.1. Its README lists Ubuntu 24.04 support as "up to Ghostty 1.3.1", so that route tops out at 1.3.1 on 24.04.
openSUSE, Gentoo, Void, Alpine, Solus and NixOS use zypper in ghostty, emerge -av ghostty, xbps-install ghostty, apk add ghostty (testing), eopkg install ghostty, and pkgs.ghostty. They're all listed on the official install page.
For anything else there's snap install ghostty --classic, or the community AppImage, which runs as ./Ghostty-${VERSION}-${ARCH}.AppImage after a chmod +x.
How to run Ghostty 1.4 on Ubuntu 24.04 LTS
Building from source on 24.04 doesn't help either. The release notes say builds against older GTK headers fail at compile time.
Building 1.4 from source
The build page was missing two things when I wrote this. Ghostty 1.4 needs Zig 0.17, and the build page still lists 0.15.2 for "1.3.x and tip". There's also a new -Dinstalled-exe-path option. Gingeh reported that leaving it out breaks the systemd unit for ~/.local installs:
tar -xf ghostty-1.4.0.tar.gz && cd ghostty-1.4.0/
zig build -p $HOME/.local -Doptimize=ReleaseFast \
-Dinstalled-exe-path=$HOME/.local/bin/ghosttyUse the tarball from release.files.ghostty.org. GitHub's auto-generated "Source code" archive is missing preprocessed files.
Upgrading from 1.3: config lines that will bite you
Read this before you upgrade, because two of the default changes are going to annoy people.
# macOS: copy-on-select now defaults to none (was true), so middle-click
# paste of the selection stops working. Restore 1.3 behavior with primary.
# An explicit "true" now copies to the system clipboard instead.
copy-on-select = primary
# copy-on-select = clipboard now copies ONLY to the system clipboard.
# For the old behavior, use:
# copy-on-select = both
# scrollback-limit was renamed (old name still works via a compat layer):
scrollback-limit-bytes = 50000000
# macOS: cmd+up/down went back to jump_to_prompt. Want scrolling?
keybind = cmd+arrow_up=scroll_to_top
keybind = cmd+arrow_down=scroll_to_bottomOn GTK, ctrl+shift+page_up/page_down now run move_tab, and jump_to_prompt moved to ctrl+shift+arrow_up/down. If a TUI you use needs those keys, unbind them.
Run ghostty +show-config after upgrading to see what's actually in effect. The new +explain-config documents any option from the command line.
Migrating from iTerm2, Kitty or Alacritty
The config file lives at ~/.config/ghostty/config.ghostty on both platforms. On macOS, ~/Library/Application Support/com.mitchellh.ghostty/config.ghostty also loads, after the XDG file, so it wins on conflicts. Reload with cmd+shift+, on macOS or ctrl+shift+, on Linux.
| What | Kitty (kitty.conf) | Alacritty (alacritty.toml) | Ghostty |
|---|---|---|---|
| Font | font_family JetBrains Mono | [font.normal] family = "JetBrains Mono" | font-family = JetBrains Mono |
| Size | font_size 13.0 | [font] size = 13.0 | font-size = 13 |
| Opacity | background_opacity 0.9 | [window] opacity = 0.9 | background-opacity = 0.9 |
| Padding | window_padding_width 8 | [window.padding] x = 8 | window-padding-x = 8 |
| Key | map ctrl+shift+t new_tab | [[keyboard.bindings]] | keybind = ctrl+shift+t=new_tab |
Coming from iTerm2, there's no import, and iTerm2's settings live in a plist, so you'll be retyping. Set macos-option-as-alt = true if you used Option as Meta, and try Ghostty's quick terminal as a stand-in for the hotkey window. If you rely on tmux -CC integration, keep iTerm2 installed. Commenters in the HN thread who want it say Ghostty doesn't have tmux control mode yet.
For Kitty users, the gap that came up on HN is hints mode. One commenter called it "the one feature keeping me from switching." Ghostty doesn't have an equivalent upstream yet, so if you live in hints mode, that may decide it for you.
From Alacritty, you gain tabs and splits without needing tmux. You keep a plain-text config, though it isn't TOML.
So, is it time to switch?
On macOS, I'd say yes. iTerm2 does more, but Ghostty is the faster native app, and 1.4 addresses the memory bloat from lots of tabs that used to be a fair criticism. On Linux it depends on your distro more than on Ghostty. Fedora and Arch ship a new enough GTK, so the upgrade is clean once the packages move: when I checked, Arch had 1.4.0 in extra-testing and the scottames COPR was still on 1.3.1. Ubuntu 24.04 users get a Flatpak or a security backlog. The project runs a six-month release cycle with 1.5 planned for March 2027, and there's been no 1.3.x patch release for the advisories. I'd like to see that change.
Ghostty, Kitty, WezTerm or iTerm2: what's your daily terminal, and what would actually make you switch? And if you're running 1.4 on 24.04 through the Flatpak, AppImage or Snap, tell me which one worked.
