Ghostty Installation & Configuration

March 12, 2026 5 minutes

Date: 2026-03-12 OS: Ubuntu 24.04.4 LTS System: Intel i7-13700K · 32GB RAM · NVIDIA RTX 4070 SUPER · CUDA 12.8


Overview

Installed Ghostty v1.3.0 (a modern GPU-accelerated terminal emulator written in Zig) on Ubuntu 24.04, configured fonts, theme, key bindings, and verified GPU rendering.


Step 1 — Installation

Ghostty provides no official Linux binary releases. It was installed via Snap, which ships the latest stable build with classic confinement:

sudo snap install ghostty --classic

Verified installation:

Ghostty 1.3.0
- channel:    stable
- app runtime: .gtk
- GTK version: 4.14.5 (build & runtime)
- libadwaita:  1.5.0
- renderer:    renderer.generic.Renderer(renderer.OpenGL)
- libX11:      enabled
- libwayland:  enabled

Binary location: /snap/bin/ghostty


Step 2 — Font Installation

JetBrains Mono

Installed from the Ubuntu apt repository:

sudo apt install fonts-jetbrains-mono

Nerd Fonts Symbols Only (v3.3.0)

Downloaded from GitHub releases and installed to user font directory:

mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
curl -fLo "NerdFontsSymbolsOnly.tar.xz" \
  "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/NerdFontsSymbolsOnly.tar.xz"
tar -xf NerdFontsSymbolsOnly.tar.xz
rm NerdFontsSymbolsOnly.tar.xz
fc-cache -fv ~/.local/share/fonts

Installed files:

  • SymbolsNerdFont-Regular.ttf
  • SymbolsNerdFontMono-Regular.ttf

Step 3 — Configuration

Config file location: ~/.config/ghostty/config

# Ghostty Configuration
# https://ghostty.org/docs/config

# --- Font ---
font-family = "JetBrains Mono"
font-family = "Nerd Fonts Symbols Only"
font-size = 13
font-feature = -liga          # disable ligatures (enable with +liga if preferred)
adjust-cell-height = 10%

# --- Theme ---
theme = "Catppuccin Mocha"

# --- Window ---
window-padding-x = 10
window-padding-y = 8
window-decoration = true
gtk-titlebar = true
background-opacity = 0.95
background-blur-radius = 20

# --- Cursor ---
cursor-style = block
cursor-style-blink = true

# --- Shell ---
shell-integration = zsh
shell-integration-features = cursor,sudo,title

# --- Scrollback ---
scrollback-limit = 10000

# --- Clipboard ---
clipboard-read = allow
clipboard-write = allow
clipboard-trim-trailing-spaces = true

# --- Mouse ---
mouse-hide-while-typing = true

# --- Tabs / Title ---
title = "Ghostty"

# --- Key Bindings ---
keybind = ctrl+t=new_tab
keybind = ctrl+shift+minus=new_split:down
keybind = ctrl+shift+backslash=new_split:right
keybind = ctrl+shift+h=goto_split:left
keybind = ctrl+shift+l=goto_split:right
keybind = ctrl+shift+k=goto_split:up
keybind = ctrl+shift+j=goto_split:down
keybind = ctrl+w=close_surface
keybind = ctrl+equal=increase_font_size:1
keybind = ctrl+minus=decrease_font_size:1
keybind = ctrl+zero=reset_font_size

Configuration notes

  • gtk-titlebar = true — Required for mouse dragging of the window. Initially set to false which removed the title bar and prevented dragging. Fixed by re-enabling.
  • theme = "Catppuccin Mocha" — Theme name must include quotes and use the exact display name (with spaces), not a hyphenated slug like catppuccin-mocha.
  • renderer — This field was removed from Ghostty config in recent versions. Ghostty uses OpenGL GPU rendering by default on Linux; the field is not needed.

Step 4 — Set as Default Terminal

Registered Ghostty with the system-wide terminal alternatives:

sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /snap/bin/ghostty 50
sudo update-alternatives --set x-terminal-emulator /snap/bin/ghostty

Step 5 — GPU Rendering Verification

Ghostty on Linux uses OpenGL exclusively — GPU rendering is on by default and cannot be disabled via config. Confirmed the system is rendering with the discrete NVIDIA GPU (not software fallback):

DISPLAY=:1 glxinfo | grep -E "direct rendering|renderer string|vendor string|OpenGL version"

Output:

direct rendering: Yes
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce RTX 4070 SUPER/PCIe/SSE2
OpenGL version string: 4.6.0 NVIDIA 580.126.09

mesa-utils was installed to enable the glxinfo command:

sudo apt install mesa-utils

Key Bindings Reference

ActionShortcut
New tabCtrl+T
Close tab/paneCtrl+W
Split downCtrl+Shift+-
Split rightCtrl+Shift+\
Navigate split leftCtrl+Shift+H
Navigate split rightCtrl+Shift+L
Navigate split upCtrl+Shift+K
Navigate split downCtrl+Shift+J
Increase font sizeCtrl+=
Decrease font sizeCtrl+-
Reset font sizeCtrl+0

Packages Installed

PackageVersionMethod
ghostty1.3.0snap
fonts-jetbrains-mono2.304+ds-4apt
Nerd Fonts Symbols Only3.3.0manual (~/.local/share/fonts)
JetBrainsMono Nerd Font3.3.0manual (~/.local/share/fonts/JetBrainsMonoNerd)
mesa-utils9.0.0-2apt
starship1.24.2curl install script

Starship Prompt Installation

Installation

Installed via the official install script from starship.rs:

curl -sS https://starship.rs/install.sh -o /tmp/starship-install.sh
sudo sh /tmp/starship-install.sh --yes

Binary location: /usr/local/bin/starship

Disabling Powerlevel10k

The system had Oh My Zsh + Powerlevel10k already installed, which was overriding Starship. Three changes were made to ~/.zshrc:

  1. Commented out the P10k instant prompt block at the top
  2. Set ZSH_THEME="" (was powerlevel10k/powerlevel10k)
  3. Commented out source ~/.p10k.zsh

Activating Starship in zsh

Added to the bottom of ~/.zshrc:

# Starship prompt
eval "$(starship init zsh)"

Configuration

Config file: ~/.config/starship.toml

A custom two-line prompt with a segmented powerline style (Catppuccin Mocha colors):

SegmentContentColor
OS + UsernameUbuntu icon + usernamePurple #7B68EE
DirectoryFolder icon + path (truncated to 3)Indigo #4B4B8A
Git branch + statusBranch icon + dirty/ahead/behind indicatorsDark blue #2E2E5A
Language versionsPython / Conda / Node / Rust / Go (shown when active)Navy #1A1A3A
Command durationShows elapsed time for commands >2sYellow
Memory usageShows RAM when >75%Red
TimeCurrent time HH:MMMuted

Second line: ❯ (green on success, red on error).


Font Setup for Terminals

Problem

GNOME Terminal only loads a single font — it cannot fall back to a separate symbols font the way Ghostty does. This caused Nerd Font icons in the Starship prompt to render as boxes.

Solution

Installed JetBrainsMono Nerd Font (fully patched, all icons embedded):

curl -fLo /tmp/JetBrainsMono.tar.xz \
  "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/JetBrainsMono.tar.xz"
mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd
tar -xf /tmp/JetBrainsMono.tar.xz -C ~/.local/share/fonts/JetBrainsMonoNerd
fc-cache -fv ~/.local/share/fonts/JetBrainsMonoNerd

96 font files installed.

Final Font State

TerminalFontNotes
GhosttyJetBrainsMono Nerd FontUpdated from dual-font setup
GNOME TerminalSystem defaultReverted — custom fonts caused unacceptable letter spacing

Note: GNOME Terminal was tested with JetBrainsMono Nerd Font and JetBrainsMono Nerd Font Mono but both caused large letter spacing issues. Reverted to system default font. Starship icons may appear as boxes in GNOME Terminal but text is fully readable.