Ghostty
Ghostty terminal emulator config. Lives at
~/.config/ghostty/config.
Shell
Every window opens inside tmux:
command = /usr/bin/zsh -l -c "exec tmux-attach"zsh -lsources.zprofile, so the XDG vars andPATHare set before tmux startstmux-attachrestores the saved layout on the first window after a boot, otherwise reuses a session no other window is on — seetmux-sessions.md- Panes inside tmux get their own interactive zsh, so
.zshrcis sourced there - Escape hatch:
TMUX_AUTOSTART=0 ghostty, orghostty -e zsh
Pin the integration scheme, since
commandis no longer a bare shell name fordetectto recognise:shell-integration = zsh
Keyboard input
- Ghostty does not compose dead keys itself — it hands keys to GTK’s input
method, and since GTK 4.20 that needs
export GTK_IM_MODULE=simplein.zprofileor^+eproduces nothing. Seesystem/keyboard.md.
Font / appearance
- Font:
font-family = JetBrains Mono, size 12 - Disable ligatures:
font-feature = "-calt, -liga, -dlig" - Theme:
theme = GitLab Dark Grey - Cursor:
cursor-style = block - Extra row spacing:
adjust-cell-height = 35%
Shell integration
- Keep cursor shaping and cwd reporting, drop the rest:
shell-integration-features = cursor,no-sudo,no-title,no-ssh-env,no-ssh-terminfo,path
Window
- No decorations:
window-decoration = none - Close without confirming:
confirm-close-surface = false(safe here — closing a window only detaches from the tmux session, seetmux-sessions.md) - Save size/position across sessions:
window-save-state = always - Display-P3 colorspace:
window-colorspace = "display-p3" - Padding 8px each side, balanced:
window-padding-x/y = 8,window-padding-balance = true - No cgroup isolation:
linux-cgroup = never
Mouse
- Auto-hide while typing:
mouse-hide-while-typing = true - Slower scroll:
mouse-scroll-multiplier = 0.5
Reload
- Ghostty auto-reloads on config save. If a change doesn’t apply, restart the terminal.