commit 69a538457d1ca44fbd19281685e7bfa7f456a12e
parent a19ba92081e5ef35d4493dc3e92c11dab2b3f85b
Author: Michael Neuper <michael@michaelneuper.com>
Date: Sun, 25 Oct 2026 12:01:43 +0200
add ghostty config
Diffstat:
1 file changed, 57 insertions(+), 0 deletions(-)
diff --git a/.config/ghostty/config.ghostty b/.config/ghostty/config.ghostty
@@ -0,0 +1,57 @@
+theme = dark:Gruvbox Dark,light:Gruvbox Light
+#theme = dark:Material Darker,light:Gruvbox Light
+window-padding-x = 10
+window-padding-y = 5,2
+adjust-cursor-thickness = +100%
+
+font-size = 14
+font-family = JetBrains Mono
+font-feature = -calt, +cv01, +cv10, +cv11, +cv12
+font-family = Symbols Nerd Font
+# Claude Code's icons (✻ ✔ ❯ ⏵ ⏺) aren't in JetBrains Mono, and macOS was falling back to an
+# installed pixel font. Use the smooth monospace font Iosevka Fixed for those ranges instead.
+font-codepoint-map = U+2700-U+27BF=Iosevka Fixed
+font-codepoint-map = U+23E9-U+23FA=Iosevka Fixed
+bold-is-bright = true
+
+# macOS settings
+macos-window-buttons = visible
+macos-icon = glass
+auto-update = off
+font-thicken = true
+
+# Cmd-1 … Cmd-9 switch tmux windows instead of Ghostty tabs.
+# Each sends ESC [ 900<n> ~, which ~/.tmux.conf binds as User<n>.
+keybind = cmd+digit_1=csi:9001~
+keybind = cmd+digit_2=csi:9002~
+keybind = cmd+digit_3=csi:9003~
+keybind = cmd+digit_4=csi:9004~
+keybind = cmd+digit_5=csi:9005~
+keybind = cmd+digit_6=csi:9006~
+keybind = cmd+digit_7=csi:9007~
+keybind = cmd+digit_8=csi:9008~
+keybind = cmd+digit_9=csi:9009~
+
+# Cmd-T opens a new tmux window instead of a Ghostty tab (~/.tmux.conf: User10).
+keybind = cmd+t=csi:9010~
+
+# Cmd-W closes the current tmux window instead of the Ghostty tab (~/.tmux.conf: User11).
+keybind = cmd+w=csi:9011~
+
+# Always run inside tmux: attach to the "main" session, creating it if needed.
+# Full path because apps launched from the Dock don't get Homebrew's PATH.
+command = /opt/homebrew/bin/tmux new-session -A -s main
+
+# Don't ask before closing: tmux is always "running", and the session survives
+# Ghostty closing anyway (reopening reattaches to "main").
+confirm-close-surface = false
+
+# Ctrl-G sends Escape (0x1b), so Ctrl-G cancels in Claude Code's dialogs and
+# search boxes the same way Esc does. Side effect: Ctrl-G is no longer zsh's
+# send-break in any Ghostty window.
+keybind = ctrl+g=text:\x1b
+
+# Cmd-C inside Claude Code (fullscreen mode): Ghostty has no selection because
+# Claude Code owns the mouse, so send Ctrl+Shift+C (CSI u), which Claude Code
+# binds to selection:copy. Tmux's own drag-select still copies via pbcopy.
+keybind = cmd+c=csi:99;6u