engineering

Ghostty vs GNOME Terminal: Why I Switched, and How to Fully Remove gnome-terminal on Ubuntu

TL;DR: GNOME Terminal renders through VTE on the CPU and has no native splits. Ghostty is GPU-accelerated, native on GTK4/libadwaita, and ships splits, ligatures, themes, and image support with almost no config. Below: why that matters, and the three places you need to point at Ghostty — x-terminal-emulator, the desktop's default-terminal setting, and Nautilus's "Open Terminal" — before you can purge gnome-terminal for good.


Why Ghostty over GNOME Terminal

GNOME Terminal draws everything through VTE, the same CPU-bound rendering library it's used for two decades. It's stable, but heavy scrollback or fast output (think cat on a big log) visibly drags. Ghostty renders through OpenGL/Metal and stays smooth under the same load.

A few other gaps GNOME Terminal never closed:

  • No native splits. Want two panes in one window? GNOME Terminal can't — you reach for Tmux or Terminator. Ghostty has splits built in.
  • Zero-config that's actually good. Ghostty works well with no config file at all: nerd-font glyphs, ligatures, and sane defaults out of the box. GNOME Terminal's preferences dialog covers maybe a tenth of what you'd want to tune.
  • Image rendering. Ghostty implements the Kitty graphics protocol, so tools like fastfetch or an image-preview script render inline. GNOME Terminal can't display a pixel.
  • Native everywhere. Ghostty uses GTK4/libadwaita on Linux and Swift/AppKit on macOS — no Electron, no shared toolkit pretending to be native on both.

None of this means GNOME Terminal is broken. It means Ghostty does more, faster, with less setup — which is the whole case for switching.

Point everything at Ghostty before you remove gnome-terminal

gnome-terminal isn't just an app — it's wired into three separate places: the x-terminal-emulator alternative (what scripts and older apps call), the desktop's default-terminal setting (what Ctrl+Alt+T opens), and Nautilus's right-click "Open Terminal." Miss one and something silently falls back to a terminal you just deleted — or errors out because there isn't one.

Install Ghostty first if you haven't:

sudo apt install ghostty   # Ubuntu 26.04 LTS and later (universe repo)
# Otherwise: https://github.com/mkasberg/ghostty-ubuntu/releases

1. Set it as x-terminal-emulator — this is what older apps and shell scripts invoke:

sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator "$(which ghostty)" 50
sudo update-alternatives --config x-terminal-emulator

2. Set it as the desktop default — this covers Ctrl+Alt+T and, on Ubuntu 25.04+, Nautilus's "Open Terminal" too, since both now read the same list:

echo "com.mitchellh.ghostty.desktop" > ~/.config/ubuntu-xdg-terminals.list

On Ubuntu 24.04 or earlier, Nautilus has no built-in "Open Terminal" — you need the nautilus-open-any-terminal extension:

sudo apt install python3-nautilus python3-pip
pip install nautilus-open-any-terminal --break-system-packages
glib-compile-schemas ~/.local/share/glib-2.0/schemas/
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal ghostty
nautilus -q

Note: While gnome-terminal is still installed, its own Nautilus integration can overwrite ~/.config/ubuntu-xdg-terminals.list in the background. Doing the removal step below right after step 2 avoids the fight.

Now remove gnome-terminal completely

sudo apt purge --autoremove gnome-terminal
dconf reset -f /org/gnome/terminal/

--autoremove drops any dependencies nothing else needs. The dconf reset clears leftover profiles, keybindings, and color schemes that apt purge doesn't touch. Restart Nautilus once more (nautilus -q) and confirm Ctrl+Alt+T and right-click → Open Terminal both launch Ghostty.

Key takeaways

  • GNOME Terminal's CPU-bound VTE rendering and lack of native splits are the two biggest reasons to move on; Ghostty fixes both and adds ligatures, themes, and image support for free.
  • gnome-terminal hooks into three separate places — x-terminal-emulator, the desktop default, and Nautilus — and you need to repoint all three or something will quietly break.
  • update-alternatives handles legacy script calls; ~/.config/ubuntu-xdg-terminals.list (Ubuntu 25.04+) handles Ctrl+Alt+T and modern Nautilus.
  • On 24.04 and earlier, Nautilus needs the nautilus-open-any-terminal extension since it has no built-in "Open Terminal."
  • sudo apt purge --autoremove gnome-terminal plus dconf reset -f /org/gnome/terminal/ is what actually clears it — apt remove alone leaves settings behind.
Thoughts? Leave a comment