name: ghostty-config
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: ghostty-config description: Configure and optimize Ghostty terminal with themes, fonts, keybindings, and performance settings. Use when setting up Ghostty, creating terminal configs, customizing keybinds, or troubleshooting terminal behavior. Keywords: ghostty, terminal, config, keybind, theme, font, terminal config, ghostty.conf
Ghostty Terminal Configuration
Configure Ghostty terminal emulator following best practices and XDG Base Directory specification.
Config File Location
Ghostty follows XDG spec:
- Primary:
~/.config/ghostty/config - Theme files:
~/.config/ghostty/themes/
Instructions
1. Identify Configuration Need
Determine what the user wants to configure:
- Initial setup: Create base config with sensible defaults
- Theming: Colors, fonts, appearance
- Keybindings: Custom shortcuts and actions
- Performance: GPU, scrollback, shell integration
- Behavior: Window management, tabs, quick terminal
2. Configuration Categories
Font Configuration
# Font family with fallbacks
font-family = "JetBrains Mono"
font-size = 13
# Font variants
font-family-bold = "JetBrains Mono"
font-family-italic = "JetBrains Mono"
# OpenType features (disable ligatures example)
font-feature = -calt
# Variable font axes (optional)
# font-variation = wght=450
Guidelines:
- Use monospace fonts with good Unicode coverage
- Size 12-14 for optimal readability
- Consider ligature preferences (coding vs terminal work)
- Test font rendering before committing
Theme & Appearance
# Use built-in theme
theme = "catppuccin-mocha"
# Or custom colors
background = #1e1e2e
foreground = #cdd6f4
cursor-color = #f5e0dc
# Transparency and effects
background-opacity = 0.95
background-blur-radius = 20 # macOS/KDE only
# Window styling
window-padding-x = 4
window-padding-y = 4
window-decoration = true
Best practices:
- Start with built-in themes:
catppuccin-*,solarized-*,gruvbox-* - Keep opacity ≥ 0.85 for readability
- Use background blur for aesthetics without sacrificing legibility
- Match padding to your workflow (minimal vs spacious)
Keybinding Patterns
Syntax: keybind = trigger=action
Common patterns:
# Navigation
keybind = ctrl+shift+h=goto_split:left
keybind = ctrl+shift+j=goto_split:bottom
keybind = ctrl+shift+k=goto_split:top
keybind = ctrl+shift+l=goto_split:right
# Splits
keybind = ctrl+shift+enter=new_split:right
keybind = ctrl+shift+\=new_split:down
# Tabs
keybind = super+t=new_tab
keybind = super+w=close_surface
keybind = super+1=goto_tab:1
keybind = super+2=goto_tab:2
# Copy/Paste
keybind = super+c=copy_to_clipboard
keybind = super+v=paste_from_clipboard
# Font sizing
keybind = super+plus=increase_font_size:1
keybind = super+minus=decrease_font_size:1
keybind = super+0=reset_font_size
# Quick terminal (dropdown)
keybind = global:super+grave=toggle_quick_terminal
# Unbind unwanted defaults
keybind = ctrl+shift+n=unbind
Advanced keybind features:
# Global keybinds (system-wide, macOS only)
keybind = global:super+shift+t=new_window
# Multi-key sequences
keybind = ctrl+a>c=new_window
# Prefixes
keybind = all:ctrl+shift+r=reload_config
keybind = unconsumed:ctrl+space=text:\x00
keybind = performable:super+c=copy_to_clipboard
Modifier aliases:
ctrl=controlalt=opt=optionsuper=cmd=command
Key types:
- Unicode codepoints:
ö,é,⌘ - Physical keys (W3C codes):
KeyA,Digit1 - Function keys:
F1,F12 - Special:
escape,enter,tab,backspace
Shell Integration
# Auto-detect shell features
shell-integration = detect
shell-integration-features = cursor,sudo,title
# Custom shell
command = /usr/bin/fish
# Environment variables
env = EDITOR=nvim
env = TERM=xterm-256color
Performance & Behavior
# Scrollback
scrollback-limit = 10000
# Mouse
mouse-scroll-multiplier = 3
copy-on-select = clipboard
# Window state
window-save-state = default
window-inherit-working-directory = true
# Tab behavior
window-new-tab-position = current
3. Configuration Workflow
-
Read existing config (if present):
Read ~/.config/ghostty/config -
Determine changes needed based on user request
-
Apply changes using Edit or Write:
- Use Edit for incremental changes to existing config
- Use Write for new configs or major rewrites
-
Validate syntax:
- Check modifier spelling (ctrl, shift, alt, super)
- Verify action names (use official docs reference)
- Ensure proper INI formatting
-
Test recommendations:
- "Changes apply to new terminals/windows only"
- Suggest restarting Ghostty or opening new window
- For global keybinds, mention accessibility permissions (macOS)
4. Common Configuration Tasks
Complete Initial Setup
Create minimal but functional config:
# Font
font-family = "JetBrains Mono"
font-size = 13
# Theme
theme = "catppuccin-mocha"
background-opacity = 0.95
# Shell
shell-integration = detect
command = /usr/bin/fish
# Behavior
copy-on-select = clipboard
window-inherit-working-directory = true
Add Vim-style Navigation
keybind = ctrl+h=goto_split:left
keybind = ctrl+j=goto_split:bottom
keybind = ctrl+k=goto_split:top
keybind = ctrl+l=goto_split:right
Theme Switching
# Built-in themes
theme = catppuccin-mocha # dark
theme = catppuccin-latte # light
# Custom theme file
theme = /Users/user/.config/ghostty/themes/custom.conf
Quick Terminal Setup
# Dropdown terminal
keybind = global:super+grave=toggle_quick_terminal
quick-terminal-position = top
quick-terminal-screen = main
quick-terminal-animation-duration = 0.2
5. Reference Documentation
For comprehensive options, reference:
- Main config: https://ghostty.org/docs/config/reference
- Keybindings: https://ghostty.org/docs/config/keybind
List all available actions and defaults:
ghostty +list-keybinds --default
6. Integration with Dotfiles
Since this is a dotfiles repo following XDG spec:
- Store config:
config/ghostty/config - Symlink to XDG location:
ln -sf ~/Development/dotfiles/config/ghostty ~/.config/ghostty - Update link-config.sh to include Ghostty
- Add to README in tools section
Output Format
When configuring Ghostty:
- Show changes clearly using code blocks
- Explain rationale for non-obvious settings
- Provide test commands when relevant
- Note runtime behavior: "Restart Ghostty or open new window to see changes"
- Include file paths using
file:lineformat for navigation
Project Context
This dotfiles repo:
- Uses Nix for package management (
flake.nix) - Symlinks configs from
config/**to~/.config/ - Follows XDG Base Directory spec
- Uses Fish shell by default
- Prioritizes reproducibility and cross-platform support
More by wcygan
View allname: zed-config
Configure lazygit TUI including config.yml setup, custom pagers (especially delta integration), themes, keybindings, and custom commands. Use when setting up lazygit, configuring git diff viewers, integrating delta, or customizing lazygit behavior. Keywords: lazygit, delta, git diff, pager, lazygit config, config.yml, git TUI, diff viewer
Manage Nix packages, flakes, and configurations using Determinate Nix installer patterns. Use when installing/updating packages, creating flakes, troubleshooting Nix issues, or optimizing Nix workflows. Keywords: nix, flake, package, nixpkgs, nix profile, flake.nix, flake.lock, determinate, nix-installer
Ensure cross-platform compatibility across macOS (Intel/ARM), Ubuntu, and Fedora for this dotfiles repository. Detects and auto-fixes hardcoded paths, platform-specific assumptions, package availability issues, and test coverage gaps. Use when adding features, updating configs, bumping Nix flake, or investigating platform-specific bugs. Keywords: cross-platform, compatibility, macOS, Linux, Ubuntu, Fedora, platform, portability, Nix flake, Docker test, CI