How to Install Ghostty on Ubuntu: A Fast, GPU-Accelerated Terminal Emulator

Ghostty is a fast, feature-rich, cross-platform terminal emulator built around native platform UI and GPU-accelerated rendering. On Ubuntu it presents a GTK interface and draws with OpenGL, so output scrolls smoothly and text stays sharp even when a build is flooding the screen. Created by Mitchell Hashimoto, it sets out to be a terminal that is both extremely fast and easy to live with, shipping defaults good enough that a config file is entirely optional.

The engineering behind it is serious. Ghostty is aggressively standards-compliant, supporting the Kitty graphics protocol, clipboard sequences, and synchronised rendering, and it runs a multi-threaded core with separate read, write, and render threads. In everyday use that translates to a terminal that feels instant while still offering tabs, splits, and a deep bench of themes.

Ubuntu does not carry Ghostty in its default archives, and compiling it yourself requires the Zig toolchain and a set of build dependencies. The unofficial deb.griffo.io repository avoids all of that with a current prebuilt package installable via apt.

What Makes Ghostty Special?

  • ⚡ GPU acceleration - OpenGL rendering on Linux for fast, fluid text.
  • 🖼️ Native GTK front-end - Blends into the Ubuntu desktop instead of drawing its own window chrome.
  • 🗂️ Built-in tabs and splits - Manage panes and tabs without reaching for a multiplexer.
  • 🎨 Hundreds of themes - A large bundled theme collection you can preview from the terminal.
  • 🧵 Multi-threaded design - Separate read, write, and render threads keep everything responsive.
  • 🖥️ Modern terminal protocols - Kitty graphics, clipboard control, and synchronised rendering.
  • ⌨️ Rebindable keys - Map any action to any key through the config file.
  • 📄 Readable configuration - A plain key = value format with built-in validation.

Why Use the deb.griffo.io Repository?

  • Simple installs and upgrades through APT, exactly like any Ubuntu package.
  • Automatic dependency management provided by the packaging.
  • Tracks upstream releases closely, so new Ghostty versions arrive promptly.
  • No source builds and no Zig toolchain to install.
  • Supports current Ubuntu releases (Jammy, Noble, and newer).

Prerequisites

Make sure the following are in place first:

  • An Ubuntu system (Jammy 22.04 LTS, Noble 24.04 LTS, or newer)
  • sudo privileges
  • curl installed (sudo apt install curl if needed)
  • A graphical desktop session, since Ghostty is a GUI terminal emulator

Step 1: Add the deb.griffo.io Repository

Register the key and repository with APT:

# Create the keyrings directory
sudo install -d -m 0755 /etc/apt/keyrings

# Download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg

# Add the repository (auto-detects your distro codename)
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null

# Update the package list
sudo apt update

Step by step:

  1. Creates /etc/apt/keyrings with correct permissions for repository keys.
  2. Downloads and de-armours the GPG key so APT can verify package signatures.
  3. Adds the sources entry bound to that key, auto-detecting your Ubuntu codename.
  4. Updates the package index so APT sees the new packages.

Step 2: Update the Package List

If you skipped the last command above, run it now:

sudo apt update

Step 3: Install Ghostty

Install with APT:

sudo apt install ghostty

APT downloads the latest packaged Ghostty and resolves any dependencies. It then appears in the Ubuntu activities launcher, or you can start it from your current terminal.

Step 4: Verify the Installation

Check the version:

ghostty --version

Expect output similar to:

Ghostty 1.1.3

To confirm Ghostty is picking up your settings, print the effective configuration:

ghostty +show-config

Getting Started with Ghostty

Creating a Config File

Ghostty reads configuration from the XDG config directory. On Ubuntu, create the file here:

mkdir -p ~/.config/ghostty
$EDITOR ~/.config/ghostty/config

Each line uses a simple key = value form. A pleasant starting configuration might be:

font-family = FiraCode Nerd Font
font-size = 13
theme = dracula
background-opacity = 0.92
window-padding-x = 8
window-padding-y = 8

Ghostty applies configuration when a new window opens, and most builds provide a reload keybinding for iterating quickly.

Choosing Themes and Fonts

Ghostty bundles a large theme set and can list the fonts available on your system. Explore both from the command line:

# Preview all bundled themes interactively
ghostty +list-themes

# Show the font families Ghostty can use
ghostty +list-fonts

Set your pick with theme = <name> in the config, as shown above.

Custom Keybindings

Bind any action to any key with a keybind line, written as keybind = trigger=action:

keybind = ctrl+shift+t=new_tab
keybind = ctrl+shift+o=new_split:down
keybind = ctrl+shift+r=reload_config

List every available action and the current bindings with:

ghostty +list-keybinds

Native Splits and Tabs

Because Ghostty handles tabs and split panes itself, you can build simple multi-pane layouts without a separate multiplexer. The default GTK bindings cover opening tabs, splitting panes, and moving focus, and each is adjustable through the keybind entries above.

Checking Your Config

If a setting is not taking effect, have Ghostty validate the file:

ghostty +validate-config

It flags unknown keys and malformed values, which usually pinpoints the problem immediately.

Keeping Ghostty Updated

Since Ghostty comes from the repository, it updates with the rest of the system:

sudo apt update && sudo apt upgrade

Other Tools from deb.griffo.io

The repository packages several tools that round out a terminal setup:

  • zellij - A terminal multiplexer for persistent, scriptable layouts.
  • starship - A fast, customisable prompt that shines in Ghostty.
  • nushell - A modern shell to run inside your new terminal.
  • fastfetch - A system information tool to showcase your rig.

Troubleshooting

GPG or Key Errors

If APT reports the repository is not signed, re-import the key:

sudo rm -f /etc/apt/keyrings/deb.griffo.io.gpg
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update

Package Not Found

If APT cannot find the ghostty package:

  1. Re-run sudo apt update to refresh the index.
  2. Verify your Ubuntu release is supported (Jammy, Noble, or newer).
  3. Check the sources entry:
cat /etc/apt/sources.list.d/deb.griffo.io.list

Rendering or GPU Problems

Ghostty depends on OpenGL, which can be flaky inside virtual machines or when the desktop falls back to software rendering. If the window fails to draw or looks garbled, verify your graphics driver:

sudo apt install mesa-utils
glxinfo | grep "OpenGL renderer"

Also make sure you are launching Ghostty from a real graphical session rather than a plain SSH shell.

Uninstalling

To remove Ghostty:

sudo apt remove ghostty

To also remove the repository:

sudo rm -f /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm -f /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update

Conclusion

Ghostty shows that a terminal can be fast, modern, and a pleasure to configure all at once, combining GPU-accelerated rendering with native GTK integration and a config file you can read at a glance. On Ubuntu, installing it from deb.griffo.io gives you a current build that stays up to date through your regular apt upgrade.

Install it, add a few lines of configuration, and Ghostty quickly becomes the terminal you reach for by default.

Resources


Disclaimer: The deb.griffo.io repository is an unofficial community project and is not affiliated with the official Debian or Ubuntu projects, or with the upstream Ghostty project.