Claude-skill-registry ghostty-config
Guidance for editing Ghostty terminal configuration files. You must use this skill when creating or modifying Ghostty config files.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ghostty-config" ~/.claude/skills/majiayu000-claude-skill-registry-ghostty-config && rm -rf "$T"
skills/data/ghostty-config/SKILL.mdGhostty Configuration
Guidance for configuring the Ghostty terminal emulator. Ghostty uses text-based config files with sensible defaults and zero required configuration.
Config File Locations
XDG Path (All Platforms):
$XDG_CONFIG_HOME/ghostty/config- Defaults to
if XDG_CONFIG_HOME undefined~/.config/ghostty/config
macOS Additional Path:
~/Library/Application Support/com.mitchellh.ghostty/config- If both XDG and macOS paths exist, both are loaded with macOS path taking precedence
Config Syntax
# Comments start with # background = 282c34 foreground = ffffff font-family = "JetBrains Mono" keybind = ctrl+z=close_surface font-family = # Empty value resets to default
Rules:
- Keys are case-sensitive (use lowercase)
- Whitespace around
is flexible= - Values can be quoted or unquoted
- Empty values reset to defaults
- Every config key works as CLI flag:
ghostty --background=282c34
Config Loading & Includes
Files processed sequentially - later entries override earlier ones.
# Include additional configs config-file = themes/dark.conf config-file = ?local.conf # ? prefix = optional (no error if missing)
Critical:
config-file directives are processed at the file's end. Keys appearing after config-file won't override the included file's values.
Runtime Reloading
- Linux:
ctrl+shift+, - macOS:
cmd+shift+,
Some options cannot be reloaded at runtime. Some apply only to newly created terminals.
CLI Commands
Ghostty provides CLI actions via
ghostty +<action>. Use ghostty +<action> --help for action-specific help.
Configuration Commands
| Command | Description |
|---|---|
| Show current effective configuration |
| Show default configuration |
| Show defaults with documentation |
| Validate configuration file for errors |
| Open config file in default editor |
Listing Commands
| Command | Description |
|---|---|
| List available fonts (fixed-width) |
| List available colour themes |
| Show current keybindings |
| Show default keybindings |
| List available colour names |
| List all available keybinding actions |
Other Commands
| Command | Description |
|---|---|
| Show version information |
| Show help |
| Show font face information |
| Manage SSH terminfo cache |
| Generate crash report |
| Open new window (Linux only) |
| Easter egg |
Launching with Options
Every config key works as a CLI flag:
ghostty --background=282c34 --font-size=14 ghostty -e top # Run command in terminal
macOS Note: The
ghostty CLI is a helper tool. To launch the terminal use open -na Ghostty.app or open -na Ghostty.app --args --font-size=14.
Keybinding Syntax
Format:
keybind = trigger=action
Triggers
Modifiers:
shift, ctrl/control, alt/opt/option, super/cmd/command
keybind = ctrl+a=select_all keybind = ctrl+shift+t=new_tab keybind = super+backquote=toggle_quick_terminal
Physical keys (W3C codes):
KeyA, key_a, Digit1, BracketLeft
- Physical keys have higher priority than unicode codepoints
- Use for non-US keyboard layouts
Key sequences (leader keys):
keybind = ctrl+a>n=new_window # Press ctrl+a, release, press n keybind = ctrl+a>ctrl+n=new_window # Both with ctrl
Sequences wait indefinitely for next key.
Prefixes
| Prefix | Effect |
|---|---|
| System-wide (macOS: needs Accessibility permissions; Linux: needs XDG Desktop Portal) |
| Apply to all terminal surfaces |
| Don't consume input (passes through) |
| Only consume if action succeeds |
Combine prefixes:
global:unconsumed:ctrl+a=reload_config
Note: Sequences cannot be used with
global: or all: prefixes.
Special Values
- Remove ALL keybindingskeybind = clear
- Remove specific bindingkeybind = ctrl+a=unbind
- Prevent processing by Ghostty and terminalkeybind = ctrl+a=ignore
Shell Integration
Auto-injection for: bash, zsh, fish, elvish
shell-integration = detect # Default - auto-detect shell shell-integration = none # Disable auto-injection shell-integration = fish # Force specific shell
Shell Integration Features
shell-integration-features = cursor,sudo,title shell-integration-features = no-cursor # Disable specific feature
| Feature | Description |
|---|---|
| Blinking bar at prompt |
| Preserve terminfo with sudo |
| Set window title from shell |
| SSH environment compatibility |
| Auto terminfo on remote hosts |
What Shell Integration Enables
- Smart close (no confirm when at prompt)
- New terminals start in previous terminal's directory
- Prompt resizing via redraw
- Ctrl/Cmd+triple-click selects command output
keybinding worksjump_to_prompt- Alt/Option+click repositions cursor at prompt
Manual Setup (if auto-injection fails)
Bash (add to
~/.bashrc at top):
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash" fi
Zsh:
source ${GHOSTTY_RESOURCES_DIR}/shell-integration/zsh/ghostty-integration
Fish:
source "$GHOSTTY_RESOURCES_DIR"/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish
macOS Note:
/bin/bash does NOT support automatic shell integration. Install Bash via Homebrew or manually source the script.
Common Configuration Patterns
Theme with Light/Dark Mode
theme = light:catppuccin-latte,dark:catppuccin-mocha
Quick Terminal (Drop-down)
quick-terminal-position = top quick-terminal-size = 50% quick-terminal-autohide = true keybind = global:super+backquote=toggle_quick_terminal
Custom Colour Palette
palette = 0=#1d2021 palette = 1=#cc241d # ... (0-255 supported)
Font Configuration
font-family = "JetBrains Mono" font-family-bold = "JetBrains Mono Bold" font-size = 14 font-feature = -calt # Disable ligatures font-feature = -liga
Background Transparency
background-opacity = 0.9 background-blur = true # macOS, KDE Plasma only
Platform-Specific Notes
macOS Only:
,window-position-x/y
,window-save-statewindow-step-resize
,window-vsyncwindow-colorspace
,macos-titlebar-styletoggle_window_float_on_top
,font-thickenfont-thicken-strength
,toggle_visibility
,undo
,redocheck_for_updates- Global keybindings require Accessibility permissions
Linux/GTK Only:
,window-title-font-familywindow-subtitle
(requireswindow-titlebar-background/foreground
)window-theme = ghostty
,window-show-tab-bargtk-single-instance
,toggle_maximizetoggle_window_decorations
,toggle_tab_overviewtoggle_command_paletteprompt_surface_title
Linux Wayland Only:
quick-terminal-keyboard-interactivity
,gtk-quick-terminal-layergtk-quick-terminal-namespace
FreeType (Linux) Only:
freetype-load-flags
Reference Files
For complete option and keybinding references, load:
- All config options by category (font, colour, window, etc.)references/options.md
- All keybinding actions with parametersreferences/keybindings.md
Load these when you need specific option details, valid values, or keybinding action syntax.