Ghostty: A New Terminal Emulator Worth Switching To
Terminal emulators are productivity-critical but rarely exciting. Most developers settle on one — iTerm2, Alacritty, WezTerm, Kitty — and stop thinking about it. Ghostty is the first terminal in years that's worth reconsidering your setup.
Built by Mitchell Hashimoto (founder of HashiCorp, creator of Vagrant and Packer) and released in December 2024, Ghostty combines GPU rendering with genuine native OS integration. On macOS, it uses AppKit/Metal properly — not Electron, not a wrapped cross-platform library. On Linux, it uses GTK4 with GPU rendering. The result is a terminal that feels native on each platform rather than a consistent compromise.

What Makes Ghostty Different
Native rendering with GPU acceleration: Ghostty renders via GPU on both platforms — Metal on macOS, OpenGL on Linux. This isn't unique (Alacritty and Kitty both do GPU rendering), but Ghostty combines it with...
Genuine native OS integration: On macOS, Ghostty uses native macOS APIs for windows, tabs, menus, accessibility, and system clipboard — not cross-platform abstractions. Command-key shortcuts work as expected. The font rendering uses Core Text. Accessibility tools like VoiceOver work because Ghostty integrates with the macOS accessibility stack.
Shell integration out of the box: Ghostty ships with shell integration scripts for bash, zsh, fish, and elvish. Features include:
- Semantic prompt zones (jump between prompts with keyboard shortcuts)
- Cursor shapes that change based on context (insert vs. normal mode)
- Working directory tracking across pane splits
- Command duration tracking
- Jump to any visible prompt with
Cmd+Shift+Up/Down
Built-in splits and tabs: No tmux required for basic multiplexing. Ghostty handles horizontal/vertical splits and tabs natively, with GPU-rendered borders.
Zero configuration required: Unlike Alacritty (which starts mostly unstyled and requires extensive config) or WezTerm (deep Lua configuration), Ghostty works well out of the box with sensible defaults.
Installation
macOS:
brew install --cask ghostty
Or download from ghostty.org.
Linux (Arch):
# AUR:
yay -S ghostty
# or
paru -S ghostty
Linux (building from source):
# Requires Zig 0.13+
git clone https://github.com/ghostty-org/ghostty
cd ghostty
zig build -p ~/.local -Doptimize=ReleaseFast
Pre-built binaries for common Linux distributions are available at ghostty.org/download.
Configuration
Ghostty uses a simple key=value config file at ~/.config/ghostty/config:
# Font
font-family = "JetBrains Mono"
font-size = 14
# Theme (built-in or custom)
theme = catppuccin-mocha
# Window
window-padding-x = 12
window-padding-y = 12
# Shell integration
shell-integration = detect # auto-detects your shell
# Opacity
background-opacity = 0.95
# Cursor
cursor-style = bar
cursor-style-blink = true
# Key bindings
keybind = cmd+shift+enter=toggle_fullscreen
keybind = ctrl+shift+t=new_tab
# Performance
gtk-single-instance = true # Linux: reuse process for new windows
Available built-in themes: Ghostty ships with 300+ themes including Catppuccin variants, Dracula, Tokyo Night, One Dark, Gruvbox, Nord, and many others. No download required.
# List themes:
ghostty +list-themes
# Preview a theme:
ghostty +list-themes | grep -i catppuccin
Shell Integration Features
Enable shell integration (automatic with shell-integration = detect):
Prompt navigation: Jump between commands in your scroll history with keyboard shortcuts — no mouse needed.
Default keybindings:
Cmd+Shift+Up — Previous prompt
Cmd+Shift+Down — Next prompt
Command marks: Each completed command gets a visual indicator in the scrollbar showing success (green) or failure (red). Quickly locate the last failing command in a long build output.
Split pane working directory: New splits inherit the working directory of the current pane — no cd needed.
OSC 133 compatibility: Ghostty's shell integration follows the OSC 133 standard (same as used by iTerm2, WezTerm, Kitty), so any shell scripts that emit semantic prompt markers work automatically.
Performance
Ghostty's GPU rendering is fast. Synthetic benchmark comparisons with other terminals are less interesting than real-world feel — scrolling through git log --oneline on a large repo, watching make output, tailing logs.
In practice, Ghostty is comparable to Alacritty and Kitty for throughput, and substantially faster than Hyper or terminals with JavaScript rendering layers. The difference is most noticeable when scrolling through dense output or with many open splits.
Splits and Tabs
Ghostty has built-in splits without requiring tmux:
| Action | macOS | Linux |
|---|---|---|
| Vertical split | Cmd+D |
Ctrl+Shift+D |
| Horizontal split | Cmd+Shift+D |
Ctrl+Shift+R |
| Navigate splits | Cmd+[ / Cmd+] |
Ctrl+[ / Ctrl+] |
| New tab | Cmd+T |
Ctrl+Shift+T |
| Close tab | Cmd+W |
Ctrl+Shift+W |
| Next tab | Cmd+Shift+] |
Ctrl+Tab |
Splits are rendered at the OS level — resizing is smooth, not blocked on terminal redraws.
Comparison with Alternatives
| Terminal | GPU Rendering | Native OS | Shell Integration | Config |
|---|---|---|---|---|
| Ghostty | Yes | Yes | Built-in | Simple INI |
| Alacritty | Yes | No (cross-platform) | None built-in | YAML |
| Kitty | Yes | No | Built-in | Complex |
| WezTerm | Yes | Partial | Built-in | Lua |
| iTerm2 | Partial | macOS only | Built-in | GUI |
| Warp | No (Electron) | macOS/Linux | Yes | GUI |
vs. Alacritty: Both are fast, both GPU-accelerated. Ghostty adds shell integration, built-in splits, tabs, and native OS integration. Alacritty is intentionally minimal — if you want a simple, no-frills terminal that you heavily customize via external tools (tmux, etc.), Alacritty's philosophy fits better.
vs. Kitty: Similar philosophy — GPU rendering, shell integration, extensible. Kitty is mature with a large extension ecosystem (kitten plugins). Ghostty is newer but has better native OS integration, especially on macOS where Kitty feels less native.
vs. WezTerm: WezTerm is the power user's choice — deeply customizable via Lua, runs everywhere including Windows, supports multiplexing via SSH. More complex to configure; Ghostty is simpler and more polished out of the box.
vs. iTerm2: iTerm2 is macOS-only, mature, feature-rich. Ghostty is faster (GPU rendering vs. iTerm2's CPU-heavy rendering), more minimal, and cross-platform. iTerm2's AI features and deep tmux integration may keep some users on it.
Font Configuration
Ghostty supports any system-installed font:
font-family = "Monaspace Neon"
font-family-bold = "Monaspace Neon"
font-size = 14
font-feature = liga # enable ligatures
font-feature = calt # contextual alternates
adjust-cell-height = 20% # increase line height
Common developer fonts that work well: JetBrains Mono, Cascadia Code, Monaspace variants (Neon/Argon/Xenon), Fira Code, Berkeley Mono, Operator Mono.
Should You Switch?
Ghostty is worth trying if:
- You're on macOS and care about native feel (Ghostty is the best macOS terminal for this)
- You want shell integration without configuring it yourself
- You want GPU rendering + splits without WezTerm's configuration complexity
- You're curious about what a ground-up terminal built in 2024 looks like
It's probably not worth switching if:
- You have a WezTerm config you're happy with
- You need Windows support (Ghostty is macOS and Linux only)
- You rely on specific iTerm2 features like AI integration or deep tmux integration
The bar for switching terminals is high because any terminal "works." Ghostty clears it for users who value native OS integration and shell features without configuration overhead.