ghostty-config
Use when configuring, troubleshooting, or exploring Ghostty terminal settings, themes, fonts, keybindings, colors, opacity, scrollback, or any Ghostty config option
Ghostty Config Management
The Iron Law
ALWAYS CHECK DOCS VIA MCP TOOL BEFORE GIVING CONFIG ADVICE.
NEVER ASSUME A VALUE'S TYPE, UNIT, OR BEHAVIOR FROM ITS NAME.
Config File Location
- macOS:
~/Library/Application Support/com.mitchellh.ghostty/config- This path takes priority over XDG. Both can coexist, macOS path wins.
- Linux:
${XDG_CONFIG_HOME:-~/.config}/ghostty/config
The config is a plain text file named config (no extension) inside the directory.
Config Syntax
key = value— spaces around=optional#comments only at line start —font-size = 14 # commentis WRONG,# commentbecomes part of the value- Empty value resets to default:
font-size = - Multi-value: repeat the key (e.g.
font-familyfor fallback chain) - Clear then set:
font-family = ""thenfont-family = NewFont keybind =(empty) removes ALL keybinds including defaults — this does NOT reset to defaults- Use
ctrl+slashnotctrl+/in keybinds —/is parsed as key table separator
Core Workflow: Changing Any Config Option
ghostty_get_config_option→ read full docs for the option- Check the value type and unit — e.g.
scrollback-limitis bytes, not lines - Edit the config file
ghostty_validate_config→ verify syntax- Most settings hot-reload; theme changes with
light:X,dark:Ysyntax may need full restart on macOS
Workflows
Theme
ghostty_list_themes— filter withcolor="dark"or"light"- Set
theme = <name>— manual color settings (background,foreground) override theme colors - Dual theme:
theme = light:catppuccin-latte,dark:catppuccin-mocha - After changing themes, if tab bar looks wrong → restart Ghostty (known macOS reload bug)
Font
ghostty_list_fonts→ name must match exactly (case-sensitive)- For fallback: repeat
font-familyon multiple lines ghostty_show_face→ verify which font renders specific characters- macOS CJK users: explicitly set a CJK font (e.g.
PingFang SC) to avoid oversized fallback
Keybind
ghostty_list_actions→ available actionsghostty_list_keybinds→ current bindings- Format:
keybind = super+shift+c=copy_to_clipboard - Chord:
keybind = ctrl+a>ctrl+b=action - Unbind:
keybind = super+c=unbind
Troubleshooting "Config Not Working"
ghostty_validate_config→ check syntax errorsghostty_show_current_configwithchanges_only=true→ see what's actually set- Check for inline
#comments (they become part of the value) - Check for conflicting settings (manual colors override theme)
- Try opening a new window — some settings need new window or full restart
- macOS: check both config paths — macOS path takes priority over XDG
Red Flags — STOP and Check Docs First
- "I know what this option does" → check anyway, units may surprise you
- "The value should be about 10000" → is it bytes? pixels? lines? check docs
- "This is similar to other terminals" → Ghostty syntax has unique rules
- "Just set it to true/false" → some options use
default,false, or specific enum values
Critical Gotchas (Inline)
scrollback-limit= bytes, not lines. Default10000000= 10 MB. Setting10000gives only ~10 KBbackground-opacityhas color blending bugs with light themes (premultiplied alpha). Tab appearance may break on Linuxmacos-titlebar-style = transparentsilently reverts tonativewhen background ≤#0c0c0c- Linux fractional scaling (125%, 150%): fonts will be blurry, no config workaround
copy-on-select = trueon macOS is effectively a no-op (no selection clipboard). Useclipboardto get "select to copy" on macOS
See references/config-gotchas.md for the complete list with details and workarounds.
See references/config-recipes.md for curated config patterns and combos (visual optimization, font tuning, macOS experience).