· 6 min read · Developer Apps

Ghostty: a terminal that's just a terminal

Somewhere around month fourteen of using Warp, I was trying to run a deploy script and the terminal wanted to explain my own command to me. An AI suggestion had popped up — again — covering the output I was actually trying to read. I dismissed it, ran the command, and thought: I just want a terminal.

That was the moment. Not a dramatic breakup, just a quiet realisation that my terminal had become something I was working around instead of working with.

The Warp chapter

I came to Warp from iTerm2. The pitch was compelling — a modern, GPU-accelerated terminal with smart features for developers. And for a while, it delivered. The block-based command input was genuinely clever. Autocomplete worked well. It felt like someone had rethought what a terminal could be.

But over a year or so, the AI features kept growing. Warp added an AI command search, AI-powered suggestions, an AI chat panel. Each update seemed to bring another layer of intelligence I hadn’t asked for. The problem wasn’t philosophical — I use AI tools all day. The problem was practical. Suggestions appeared when I didn’t want them. The interface got busier. Things that used to be instant had a slight pause while something thought about what I might want to do.

A terminal is infrastructure. It should be invisible — fast, reliable, and out of the way. Warp was becoming the opposite: a tool that wanted my attention.

Why Ghostty

Ghostty is a terminal emulator by Mitchell Hashimoto — the person behind Vagrant, Terraform, and most of HashiCorp. It’s written in Zig, GPU-accelerated, and deliberately focused on doing one thing well: being a terminal.

Here’s what I noticed immediately:

  • It’s fast. Not “fast for a modern terminal” — genuinely fast. Launches in under a second, renders without hesitation, and never lags on large output. The difference from Warp is noticeable from day one.
  • No account required. You download it, open it, and start working. No sign-up, no cloud sync, no telemetry opt-out dance.
  • Plain text config. Everything lives in ~/.config/ghostty/config. No JSON, no YAML, no GUI settings panel — just key-value pairs in a text file. Change a value, hit ⌘⇧, to reload, done.
  • No AI anything. No suggestions, no explanations, no chat panels. The terminal runs your commands and shows you the output. That’s it.

The config file is refreshingly simple. Here’s a taste:

1font-family = JetBrains Mono
2font-size = 14
3theme = catppuccin-mocha
4window-padding-x = 8
5window-padding-y = 8
1font-family = JetBrains Mono
2font-size = 14
3theme = catppuccin-mocha
4window-padding-x = 8
5window-padding-y = 8

If you’ve ever configured a tiling window manager or a Vim plugin, you’ll feel right at home.

Keyboard shortcuts worth knowing

Ghostty ships with sensible defaults on macOS. If you’re coming from iTerm2 or Warp, most of these will feel familiar — and the ones that don’t will make sense quickly.

Splits — the ones I use most:

  • ⌘D — split right
  • ⇧⌘D — split down
  • ⌘] / ⌘[ — focus next / previous split
  • ⇧⌘↵ — toggle split zoom (like tmux’s prefix + z)
  • ⌃⌘= — equalise split sizes

Tabs:

  • ⌘T — new tab
  • ⌘W — close tab
  • ⌘1 through ⌘9 — jump to tab by number
  • ⇧⌘[ / ⇧⌘] — cycle through tabs

Windows and display:

  • ⌘N — new window
  • ⌘↵ — toggle fullscreen
  • ⌘+ / ⌘- / ⌘0 — increase, decrease, reset font size

Workflow:

  • ⌘K — clear screen
  • ⌘↑ / ⌘↓ — jump to previous / next prompt (requires shell integration)
  • ⌘, — open config file
  • ⇧⌘, — reload config

Bonus — Quick Terminal:

Ghostty has a Quake-style drop-down terminal you can summon globally. It’s not enabled by default, but one line in your config activates it:

1keybind = global:cmd+grave_accent=toggle_quick_terminal
1keybind = global:cmd+grave_accent=toggle_quick_terminal

Now ⌘` brings up a terminal overlay from anywhere on your system — even when Ghostty isn’t focused. You’ll need to grant Ghostty accessibility permissions in System Settings for the global keybind to work.

A note for German keyboards

If you’re on a German QWERTZ layout, you’ve probably noticed the problem already — [ and ] don’t exist as standalone keys on your keyboard. You type them with ⌥5 and ⌥6. That means every shortcut above that uses brackets needs a different approach.

Ghostty maps keybindings to physical key positions based on the US layout. So ⌘[ and ⌘] actually correspond to the physical keys where brackets sit on a US keyboard — that’s ⌘Ü and ⌘+ on German QWERTZ. Same for the tab-cycling shortcuts: ⇧⌘[ / ⇧⌘] become ⇧⌘Ü / ⇧⌘+.

Here’s the full mapping for the bracket-based shortcuts on German keyboards:

  • ⌘Ü / ⌘+ — focus previous / next split
  • ⇧⌘Ü / ⇧⌘+ — cycle through tabs

One more thing: make sure macos-option-as-alt is set correctly in your config. Ghostty defaults to false on non-US layouts, which is what you want — it lets the Option key produce special characters like [, ], {, }, @, ~, and |. If someone told you to set it to true, you’ll lose all of those. Leave it at false unless you specifically need Alt key behaviour for a program running inside the terminal — and even then, consider setting it to left or right so only one Option key changes behaviour while the other keeps producing characters.

1# Leave this at false for German keyboards (it's the default)
2macos-option-as-alt = false
1# Leave this at false for German keyboards (it's the default)
2macos-option-as-alt = false

The adjustment

Fair enough — there are things that took getting used to. Warp’s block-based input was nice for selecting and re-running previous commands. Ghostty doesn’t do that. You’re back to standard terminal interaction — for history, ⌃R for search, the usual.

The config-file-only approach means no settings UI. If you want to change your font or theme, you open a text file. I happen to prefer that, but if you liked Warp’s preferences panel, this is a different world.

And Ghostty is younger than the alternatives. It’s stable — I haven’t had a crash — but the ecosystem of themes and extensions is smaller than iTerm2’s. That’s changing quickly, though.

None of these were dealbreakers. They were speed bumps on the first day, forgotten by the second.

Would I recommend it?

If you’re a developer who wants a terminal that launches fast, stays out of your way, and doesn’t try to be anything more than a terminal — yes. Ghostty is the best terminal I’ve used on a Mac.

If you rely on Warp’s AI features and genuinely find them useful, you might not feel the same friction I did. That’s fine. But if you’ve been dismissing AI popups more than you’ve been using them, you already know the answer.

Download it from ghostty.org. Open your config. Make it yours.


Just a terminal. That’s all I wanted.