Ghostty: A GPU-Accelerated Terminal That Works With Zero Config
Ghostty is a terminal emulator built by Mitchell Hashimoto, the founder of HashiCorp. Its goal is to nail speed, a rich feature set, and platform-native UI all at once — hitting exactly the points that iTerm2, Alacritty, and kitty each had to give up. This post covers what Ghostty replaces, how to get started from install to config file, and the traps worth knowing about up front.
A terminal that goes after speed, features, and native UI all at once
When you pick a terminal emulator, you usually end up giving up one of three things. iTerm2 is feature-rich but Mac-only and on the heavier side. Alacritty is blazing fast thanks to GPU acceleration, but it deliberately leaves out features like tabs and splits, so you have to layer tmux on top yourself. kitty is fast and feature-rich, but its UI is drawn with its own widgets, so it doesn't quite feel OS-native.
Ghostty's design philosophy is to compromise on none of those three axes (speed, features, native UI). Rendering is GPU-accelerated, tabs and splits are drawn with the OS's native UI components, and the keybindings follow platform conventions. The core engine lives in a shared library written in Zig called libghostty, while the macOS GUI is built natively in Swift (AppKit/SwiftUI) and the Linux GUI in Zig (GTK4).
| Terminal | Rendering | Notes |
|---|---|---|
| Ghostty | Metal (macOS) / OpenGL (Linux) | Native tabs & splits built in, zero-config defaults |
| Alacritty | GPU | Fast, but no tabs/splits (tmux recommended) |
| kitty | GPU | Feature-rich, UI uses its own widgets |
| iTerm2 | Mostly CPU | Feature-rich, macOS only |
Install it and you can use it right away, no config needed
Ghostty is designed so that most users can start using it immediately without creating a config file. It ships with the JetBrains Mono font built in, and defaults like the theme and keybindings are set up ahead of time. This "works with zero config" principle is the biggest difference from tools like Alacritty, where you have to write TOML from the very start.
Installation goes like this per platform. On macOS you can grab the .dmg from the official site or install via Homebrew Cask; on Linux there are official packages for some distros, and source builds are provided for everything else.
# macOS — Homebrew
brew install --cask ghostty
When you launch it for the first time after installing, the shell opens right away with no separate onboarding. On macOS, the first launch may surface system prompts about keyboard accessibility or secure input permissions, so if autocomplete or shell integration feels off, just check the permissions in System Settings.
Here's a look at the main features, one by one
GPU-accelerated rendering
Screen output is drawn on the GPU using Metal on macOS and OpenGL on Linux. You feel it when build output is flooding in fast or when you cat a large file. On top of that, it supports synchronized rendering, so when the screen refreshes all at once it draws without tearing.
Native tabs and splits
You can open multiple windows and run tabs and splits within each one. The key point is that this isn't a self-drawn widget but the OS's native tab UI. That means you can divide up the screen without a separate multiplexer (tmux and the like). Splits let you specify left/right or up/down direction via keybindings.
Hundreds of themes and automatic dark-mode switching
Ghostty ships with hundreds of themes built in, and it offers a feature that automatically switches the theme to match the system's light/dark mode. You can leave it to follow your OS setting — a light theme during the day, a dark theme at night.
Quick Terminal (macOS)
macOS has a feature called Quick Terminal. It's a lightweight dropdown terminal that slides down from below the menu bar. This single feature can replace the pattern of using iTerm2's Hotkey Window or a separate dropdown terminal app (like the Visor-style tools of the past).
Kitty graphics protocol and font handling
It supports the Kitty graphics protocol for rendering images directly inside the terminal, so CLI tools that use it can display images in the terminal. On the font side, it supports ligatures and correctly renders multi-codepoint emoji and right-to-left (RTL) text via grapheme clustering.
Configuration is done with a simple one-line key = value file
The defaults are plenty, but if you want to change the font or theme, just create a config file. The file is named config.ghostty (it was config before v1.2.3), and its location differs by platform.
- Linux:
$XDG_CONFIG_HOME/ghostty/config.ghostty(if unset,~/.config/ghostty/) - macOS:
~/Library/Application Support/com.mitchellh.ghostty/config.ghostty(the XDG path is also supported)
The syntax is a simple key = value format. Keys are case-sensitive, and values work with or without quotes. Comments start with # but must sit alone on their own line, and leaving a value empty reverts it to the default. Below is an example setting the font, theme, window padding, and split keybindings.
# ~/.config/ghostty/config.ghostty
font-family = JetBrains Mono
font-size = 13
theme = catppuccin-mocha
window-padding-x = 10
window-padding-y = 10
background-opacity = 0.95
keybind = cmd+d=new_split:right
keybind = cmd+shift+d=new_split:down
After changing the config, you can reload it at runtime with cmd+shift+, on macOS and ctrl+shift+, on Linux. That said, not every option applies instantly. Some options only take effect in newly opened terminals, or require a restart.
A few things worth knowing before you start
- There's no official GUI for Windows yet. The native GUI currently targets macOS and Linux. If you're on Windows, it isn't an option right now.
-
The config file path and name differ by version. As of v1.2.3 the filename changed from
configtoconfig.ghostty. If you follow an older guide, the path may not match. - Some settings don't reload at runtime. If pressing the reload shortcut doesn't change anything, it may be the type of option, so restart the app to check.
- Because it's GPU rendering, it's affected by the graphics environment. In environments where GPU acceleration is limited — like virtual machines or remote desktops — you may not get the performance you'd expect.
- libghostty is not yet a public external API. The core is split out into a library, but consider it not yet at a stage where third parties can stably build against and use it.
Who it's a good fit for
It's a great fit for macOS and Linux users who want native tabs and splits without layering on a multiplexer like tmux, and who liked Alacritty's speed but found writing a config file from scratch a hassle. On the flip side, if Windows is your main environment, or if a tmux-centered workflow is already second nature to you, there isn't a strong reason to switch. If you're trying it for the first time, I'd suggest not creating a config file at all — run with the defaults for a few days, then add just the font, theme, and split keybindings as in the example above.
Install & config notes — On macOS, install via
brew install --cask ghosttyor the official .dmg; on Linux, use your distro package or a source build. For the config file, on macOS put it at~/Library/Application Support/com.mitchellh.ghostty/config.ghostty— and since it works with zero config, you can leave it empty at first.
Sources
- Ghostty official docs — About
- Ghostty official docs — Features
- Ghostty official docs — Configuration
- Ghostty official site
This post is an objective overview compiled from the official documentation, not a first-hand usage report. Features, config paths, and version details can change over time, so please also check the official docs current at the time you read this.
Original with full infographics and visual structure: https://jessinvestment.com/ghostty-a-gpu-accelerated-terminal-that-works-with-zero-config/

Top comments (0)