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.