Skills/ghostty-config/SKILL.md
Guidance for editing Ghostty terminal configuration files. You must use this skill when creating or modifying Ghostty config files.
npx skillsauth add sammcj/agentic-coding ghostty-configInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Guidance for configuring the Ghostty terminal emulator. Ghostty uses text-based config files with sensible defaults and zero required configuration.
Since Ghostty 1.2.3 the config file is named config.ghostty (the .ghostty extension lets editors apply syntax highlighting). The extensionless config name is still loaded for backwards compatibility.
XDG Path (All Platforms):
$XDG_CONFIG_HOME/ghostty/config.ghostty$XDG_CONFIG_HOME/ghostty/configXDG_CONFIG_HOME defaults to ~/.config if undefinedmacOS Additional Path:
~/Library/Application Support/com.mitchellh.ghostty/config.ghostty~/Library/Application Support/com.mitchellh.ghostty/configLoading order: all matching files are loaded, later files overriding earlier ones. Within a location config.ghostty loads before config. On macOS all macOS-path files load after all XDG-path files, so the macOS path wins on conflicts. Config is optional; with no file Ghostty uses its defaults.
# Comments start with #
background = 282c34
foreground = ffffff
font-family = "JetBrains Mono"
keybind = ctrl+z=close_surface
font-family = # Empty value resets to default
Rules:
= is flexibleghostty --background=282c34Files 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.
ctrl+shift+,cmd+shift+,Some options cannot be reloaded at runtime. Some apply only to newly created terminals.
Ghostty provides CLI actions via ghostty +<action>. Use ghostty +<action> --help for action-specific help.
| Command | Description |
|-----------------------------------------|----------------------------------------|
| ghostty +show-config | Show current effective configuration |
| ghostty +show-config --default | Show default configuration |
| ghostty +show-config --default --docs | Show defaults with documentation |
| ghostty +validate-config | Validate configuration file for errors |
| ghostty +edit-config | Open config file in default editor |
| Command | Description |
|------------------------------------|---------------------------------------|
| ghostty +list-fonts | List available fonts (fixed-width) |
| ghostty +list-themes | List available colour themes |
| ghostty +list-keybinds | Show current keybindings |
| ghostty +list-keybinds --default | Show default keybindings |
| ghostty +list-colors | List available colour names |
| ghostty +list-actions | List all available keybinding actions |
| Command | Description |
|-------------------------|------------------------------|
| ghostty +version | Show version information |
| ghostty +help | Show help |
| ghostty +show-face | Show font face information |
| ghostty +ssh-cache | Manage SSH terminfo cache |
| ghostty +crash-report | Generate crash report |
| ghostty +new-window | Open new window (Linux only) |
| ghostty +boo | Easter egg |
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.
Format: keybind = trigger=action
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
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.
Named key tables (Ghostty 1.3+): Switch into a modal set of bindings with activate_key_table:name / activate_key_table_once:name, leave with deactivate_key_table. Use end_key_sequence to flush a partial sequence to the terminal. In-terminal search (search, start_search, navigate_search, end_search) is also available. See references/keybindings.md.
| Prefix | Effect |
|----------------|---------------------------------------------------------------------------------------|
| global: | System-wide (macOS: needs Accessibility permissions; Linux: needs XDG Desktop Portal) |
| all: | Apply to all terminal surfaces |
| unconsumed: | Don't consume input (passes through) |
| performable: | Only consume if action succeeds |
Combine prefixes: global:unconsumed:ctrl+a=reload_config
Note: Sequences cannot be used with global: or all: prefixes.
keybind = clear - Remove ALL keybindingskeybind = ctrl+a=unbind - Remove specific bindingkeybind = ctrl+a=ignore - Prevent processing by Ghostty and terminalAuto-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 = cursor,sudo,title
shell-integration-features = no-cursor # Disable specific feature
| Feature | Description |
|----------------|-------------------------------|
| cursor | Blinking bar at prompt |
| sudo | Preserve terminfo with sudo |
| title | Set window title from shell |
| ssh-env | SSH environment compatibility |
| ssh-terminfo | Auto terminfo on remote hosts |
jump_to_prompt keybinding worksBash (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.
theme = light:catppuccin-latte,dark:catppuccin-mocha
quick-terminal-position = top
quick-terminal-size = 50%
quick-terminal-autohide = true
keybind = global:super+backquote=toggle_quick_terminal
palette = 0=#1d2021
palette = 1=#cc241d
# ... (0-255 supported)
font-family = "JetBrains Mono"
font-family-bold = "JetBrains Mono Bold"
font-size = 14
font-feature = -calt # Disable ligatures
font-feature = -liga
background-opacity = 0.9
background-blur = true # macOS, KDE Plasma only
macOS Only:
window-position-x/y, window-save-state, window-step-resizewindow-vsync, window-colorspacemacos-titlebar-style, toggle_window_float_on_topfont-thicken, font-thicken-strengthtoggle_visibility, undo, redo, check_for_updatestoggle_secure_input, toggle_background_opacity, reset_window_sizeLinux/GTK Only:
window-title-font-family, window-subtitlewindow-titlebar-background/foreground (requires window-theme = ghostty)window-show-tab-bar, gtk-single-instancetoggle_maximize, toggle_window_decorationstoggle_tab_overview, show_gtk_inspector, show_on_screen_keyboardLinux Wayland Only:
quick-terminal-keyboard-interactivitygtk-quick-terminal-layer, gtk-quick-terminal-namespaceFreeType (Linux) Only:
freetype-load-flagsFor complete option and keybinding references, load:
references/options.md - All config options by category (font, colour, window, etc.)references/keybindings.md - All keybinding actions with parametersLoad these when you need specific option details, valid values, or keybinding action syntax.
development
Use when answering questions from this machine-learning knowledge base. Triggers: questions about transformers, attention cost and efficiency, and long-context scaling; 'what do we know about attention', 'check the ML wiki'. Read-only querying of compiled knowledge; to add, update, supersede, lint, or audit, use the llm-wiki skill instead.
development
Use when building or maintaining a self-contained personal knowledge base (an LLM wiki) as plain markdown, optionally opened as an Obsidian vault. Triggers: ingesting sources into a wiki, querying wiki knowledge, linting wiki health, auditing article claims against their sources, superseding stale knowledge, 'add to wiki', or any mention of 'LLM wiki' or 'Karpathy wiki'.
tools
Provides guidance and tools for hardware design. Activate when using KiCAD, looking up electronic parts or designing PCBs.
testing
Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise.