Skip to content

My Ghostty Settings

Published:6 min read

I already mentioned in my last post that I’m using Ghostty as my terminal. A few days ago @LLMJunky posted about his Ghostty config on X and I dropped a comment with some of my settings. And I noticed that a lot of people didn’t know about some of these settings.

I spent a lot of time reading through the Ghostty documentation. The docs are great. But they’re long. Really long. So here’s what I use and why.

The config file

On macOS you can open the config with CMD + , directly from Ghostty. It’s a simple key = value format - no JSON, no YAML, just plain text.

Here’s my full config:

term = xterm-256color

background-opacity = 0.9
background-blur = 15
unfocused-split-opacity = 0.5

# Themes
theme = Banana Blueberry
#theme = Ayu
#theme = Catppuccin Mocha
#theme = Challenger Deep

#focus-follows-mouse = true
copy-on-select = clipboard
#macos-non-native-fullscreen = true
window-save-state = always
window-new-tab-position = end
shell-integration-features = no-title
clipboard-paste-protection = false

# keybinds
keybind = super+r=clear_screen
keybind = super+f=toggle_fullscreen
keybind = super+shift+t=prompt_surface_title
keybind = super+arrow_left=previous_tab
keybind = super+arrow_right=next_tab

term

term = xterm-256color

This one saves you from SSH pain. Ghostty ships with its own terminfo (xterm-ghostty), but good luck explaining that to some random remote server. Setting this to xterm-256color is the safe choice that works everywhere - SSH sessions, tmux, older CLI tools. You avoid the annoying “unknown terminal type” errors.

The look: opacity and blur

background-opacity = 0.9
background-blur = 15
unfocused-split-opacity = 0.5

background-opacity at 0.9 gives you a nice transparency, enough to see your desktop or browser behind the terminal without losing readability. The value goes from 0 (fully transparent) to 1 (fully opaque).

background-blur adds a blur effect to whatever is behind the terminal window. Without blur, transparency looks messy. With blur at 15, everything behind the terminal becomes a nice soft backdrop. You can set it to true (which defaults to an intensity of 20) or use a specific number. On macOS this works out of the box.

unfocused-split-opacity is for when you use splits. Unfocused splits get slightly faded out so you can instantly see which one is active. I use 0.5, the default is already slightly faded, but the designer me likes a stronger visual difference.

Theme

theme = Banana Blueberry

I keep a few themes commented out so I can switch quickly. Ghostty ships with hundreds of built-in themes. To see all available themes, just run:

ghostty +list-themes

This opens an interactive preview in your terminal where you can scroll through themes and see them live.

copy-on-select

copy-on-select = clipboard

This is my absolute favorite. Select text, it’s in your clipboard. It just makes sense. The value clipboard copies to the system clipboard.

focus-follows-mouse

focus-follows-mouse = true

I have this one commented out right now, but it’s worth mentioning. When enabled, hovering over a split automatically focuses it, no clicking needed. If you work with splits a lot, try it out. I sometimes toggle it depending on what I’m working on.

Window behavior

window-save-state = always
window-new-tab-position = end

window-save-state = always means Ghostty saves and restores your entire window state - position, size, tabs, splits, even working directories (if shell integration is enabled). When you restart Ghostty, everything is exactly where you left it. The default on macOS only saves state when the app is forcibly terminated or if you’ve enabled it system-wide.

window-new-tab-position = end places new tabs at the end of the tab bar. Simple but I prefer it over the default behavior.

Shell integration

shell-integration-features = no-title

Ghostty has built-in shell integration for bash, zsh, fish and elvish. It gets automatically injected and enables features like jumping between prompts, cursor changes at the prompt, and sudo wrapping. By default all features are enabled.

I use no-title to prevent the shell from changing my terminal window title. I like to set my own titles with CMD + Shift + t) (see Keybinds) and don’t want the shell overwriting them with the current command or directory.

Clipboard paste protection

clipboard-paste-protection = false

By default Ghostty warns you when pasting content that could be dangerous, like multi-line commands that might auto-execute in your shell. I turned this off because I know what I’m pasting and the popup was getting in my way. If you’re cautious about what’s in your clipboard, keep it on.

Keybinds

keybind = super+r=clear_screen
keybind = super+f=toggle_fullscreen
keybind = super+shift+t=prompt_surface_title
keybind = super+arrow_left=previous_tab
keybind = super+arrow_right=next_tab

Ghostty keybinds follow a simple trigger=action format where the trigger is a combination of modifiers and a key.

super is CMD on macOS and the Windows / Super key on Linux.

Explore Ghostty from your terminal

One thing I love about Ghostty is that you can explore almost everything from the CLI:

# list all available fonts on your system
ghostty +list-fonts

# browse and preview all available themes
ghostty +list-themes

# list all available keybind actions
ghostty +list-actions

# show your current keybinds (or defaults)
ghostty +list-keybinds
ghostty +list-keybinds --default

# show your current full config
ghostty +show-config

# validate your config for errors
ghostty +validate-config

No need to Google around, the answers are already in your terminal.

Hot reload

One more thing: you don’t need to restart Ghostty after editing your config. Just hit CMD + Shift + , to reload. Some options only apply to new terminals, but most take effect immediately.


That’s my setup. The Ghostty documentation is excellent if you want to go deeper, there are hundreds of options I haven’t mentioned here.

If you have a cool Ghostty setup or a setting I should try, let me know on X.