ghostty-config
Guidance for editing Ghostty terminal configuration files. You must use this skill when creating or modifying Ghostty config files.
What this skill does
# Ghostty Configuration
Guidance for configuring the Ghostty terminal emulator. Ghostty uses text-based config files with sensible defaults and zero required configuration.
## Config File Locations
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/config`
- `XDG_CONFIG_HOME` defaults to `~/.config` if undefined
**macOS Additional Path:**
- `~/Library/Application Support/com.mitchellh.ghostty/config.ghostty`
- `~/Library/Application Support/com.mitchellh.ghostty/config`
**Loading 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.
## 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 |
|-----------------------------------------|----------------------------------------|
| `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 |
### Listing Commands
| 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 |
### Other Commands
| 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 |
### Launching with Options
Every config key works as a CLI flag:
```bash
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.
**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`.
### Prefixes
| 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.
### Special Values
- `keybind = clear` - Remove ALL keybindings
- `keybind = ctrl+a=unbind` - Remove specific binding
- `keybind = ctrl+a=ignore` - Prevent processing by Ghostty and terminal
## 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 |
|----------------|-------------------------------|
| `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 |
### What Shell Integration Enables
1. Smart close (no confirm when at prompt)
2. New terminals start in previous terminal's directory
3. Prompt resizing via redraw
4. Ctrl/Cmd+triple-click selects command output
5. `jump_to_prompt` keybinding works
6. Alt/Option+click repositions cursor at prompt
### Manual Setup (if auto-injection fails)
**Bash** (add to `~/.bashrc` at top):
```bash
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
fi
```
**Zsh:**
```zsh
source ${GHOSTTY_RESOURCES_DIR}/shell-integration/zsh/ghostty-integration
```
**Fish:**
```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 thRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.