I used iTerm2 for a long time. It is a great terminal, and its tab management in particular is hard to give up. Over the last couple of weeks I kept going back and forth with Ghostty. I liked the speed and fluidity of Ghostty right away, but every time I switched, something small about the look pulled me back to iTerm2.

Last week it finally clicked. The two things I was missing were padding around the terminal content and the right background color. Once I had those, Ghostty felt like home.

Config

I keep my Ghostty config at ~/.config/ghostty/config. Ghostty also reads config files from macOS’s Application Support directory, which takes precedence if both locations exist; newer versions prefer the filename config.ghostty. There is no settings UI. Every option is a key = value line, and it ships with sensible defaults, so the file only needs to contain what you want to change. Here is mine:

font-size = 16
background = #282c34
background-opacity = 0.8
keybind = cmd+shift+o=toggle_background_opacity
split-divider-color = black
theme = "GitHub Dark High Contrast"
unfocused-split-opacity = 0.9
window-padding-x = 20
window-padding-y = 20

That is the whole file. A few notes on the parts that mattered.

Padding

By default the terminal content sits right against the window edge. Setting window-padding-x and window-padding-y to 20 gives it some breathing room, which is what I was used to from iTerm2. This was the single biggest change in how the terminal felt. Reloading the config does not update padding in splits that are already open; the new values show up in new splits.

Background color

I use the GitHub Dark High Contrast theme for the color palette, but its background was not quite what I wanted. Setting background explicitly overrides the theme’s background while keeping the rest of the palette. #282c34 is the One Dark background, and it pairs well with a bit of transparency.

Toggling opacity

background-opacity = 0.8 gives a slightly transparent window. Sometimes I want it fully opaque, for example when there is a busy browser window behind the terminal. Rather than editing the config, a single keybind toggles it:

keybind = cmd+shift+o=toggle_background_opacity

This is the part of Ghostty I appreciate most. Keybinds map directly to named actions in the config file, so there is nothing to click through and the whole setup lives in one file I can version.

Splits

split-divider-color and unfocused-split-opacity make it easier to see which split is active. The unfocused split dims slightly, and the divider is a clear line rather than blending into the background.

Useful commands

Reload the config without restarting with cmd+shift+,.

List the available themes:

ghostty +list-themes

Show every option with its default value and documentation:

ghostty +show-config --default --docs

I still miss a few things about iTerm2’s tabs. But the config is small enough to read in one glance, the terminal is fast, and I no longer feel the pull to switch back.