# Switching from iTerm2 to Ghostty **Published by:** [lostleaf.eth](https://paragraph.com/@lostleaf/) **Published on:** 2026-03-18 **Categories:** ghostty, macos, claudecode, terminal **URL:** https://paragraph.com/@lostleaf/switching-from-iterm2-to-ghostty ## Content I've been using iTerm2 for years, but recently switched to Ghostty — and I'm not going back. The nudge came from zhangchitc, who shared a polished Ghostty config along with a relevant data point: Boris, the lead on Claude Code, has said his team's go-to terminal is Ghostty — running five instances in parallel. If the people building Claude Code are running it in Ghostty, that's a reasonable signal worth paying attention to. zhangchitc open-sourced his config, I ran it for a few days, adjusted it to fit my workflow, and here's where I landed.What I Changedzhangchitc's config is already well thought-out — the changes I made are purely personal preference:Font: Maple Mono NF CN → Monaco Nerd Font Mono — just find Monaco easier on the eyes for codeTheme: Catppuccin Mocha → Selenized Black — pure black background, high contrast, easier to read logs for long stretchesNo background transparency: zhangchitc uses background-opacity = 0.85 for a frosted-glass look, which is nice, but I prefer a solid background for reading focusCursor: non-blinking block cursor (block + blink = false), with shell-integration-features = no-cursor to prevent shell integration from overriding itRemoved Ghostty's native splits: my workflow puts different SSH connections in separate Ghostty tabs, with tmux handling splits on the remote side — so the cmd+d split keybinds are goneNo window state persistence: dropped window-save-state = always, so each launch starts cleanNet result: pure black background, solid block cursor, no transparency, no native splits — as minimal as a terminal gets.Why Your Terminal Actually MattersThe terminal is one of those tools you use every day but rarely optimize. A few areas where Ghostty genuinely helps:GPU rendering: when backtests are dumping large volumes of log output, iTerm2 can stutter. Ghostty renders on the GPU — scrolling through dense output stays smoothQuick Terminal: global hotkey Ctrl+` drops a terminal down from the top of the screen from any app. Great for a quick script or a fast git push without switching contextClaude Code workflow: one tab running Claude Code, another SSH'd into a server tailing live logs, Quick Terminal for one-off commands — tab switching is fast and all tabs share a consistent color schemetmux on the remote: remote servers use tmux for multi-pane process management (data feeds, strategy processes, monitoring). Ghostty handles local tabs and connections; tmux handles remote layout. They don't step on each other.InstallationOn macOS: brew install --cask ghostty. Config goes in ~/.config/ghostty/config. One macOS gotcha (possibly a bug): the system config at ~/Library/Application Support/com.mitchellh.ghostty/config may contain a line like theme = TokyoNight Night. If it does, comment it out — otherwise it overrides your theme setting in ~/.config/ghostty/config, locking you into TokyoNight Night regardless of what you set.ConfigMy config:# ============================================ # Ghostty Terminal - My Config # ============================================ # Location: ~/.config/ghostty/config # Hot reload: Cmd+Shift+, # # Reference: config shared by zhangchitc # https://gist.github.com/zhangchitc/7dead7c1b517390e061e07759ed80277 # # Based on the reference config, adjusted to personal preferences: # - Font: switched to Monaco Nerd Font Mono # - Theme: switched to Selenized Black # - Transparency: no background transparency, solid color for focused reading # - Split keybinds: removed Ghostty native splits # different SSH connections separated by Ghostty tabs, remote splits handled by tmux # - Quick Terminal: enabled, globally summon with Ctrl+` anytime, supplements regular terminal windows # - Window state: not saved # --- Font & Typography --- font-family = "Monaco Nerd Font Mono" font-size = 14 # --- Theme --- theme = "Selenized Black" # Increase ANSI faint/dim text opacity to prevent it from being too light on the Selenized Black theme faint-opacity = 0.8 # --- Window Appearance --- # No transparency, solid background window-padding-x = 10 window-padding-y = 8 # --- Cursor --- # Non-blinking block cursor cursor-style = block cursor-style-blink = false shell-integration-features = no-cursor # --- Mouse --- # Hide mouse pointer while typing mouse-hide-while-typing = true # Selection is copied directly to system clipboard copy-on-select = clipboard # --- Quick Terminal (global dropdown terminal) --- # Global hotkey Ctrl+` to summon/dismiss from the top of the screen # Can be triggered from any app, useful for quick commands and git operations quick-terminal-position = top # Appears on the screen where the mouse is (multi-monitor friendly) quick-terminal-screen = mouse # Auto-hide when clicking another window quick-terminal-autohide = true quick-terminal-animation-duration = 0.15 # --- Security --- # Prevent malicious content from injecting commands via clipboard clipboard-paste-protection = true clipboard-paste-bracketed-safe = true # --- Shell Integration --- # Auto-detect zsh/bash/fish and inject integration scripts shell-integration = detect # --- Performance --- # ~25MB scrollback buffer scrollback-limit = 25000000 # --- Keybinds --- # Tabs (use case: different SSH connections in separate tabs) keybind = cmd+t=new_tab keybind = cmd+shift+left=previous_tab keybind = cmd+shift+right=next_tab keybind = cmd+w=close_surface # Quick Terminal global hotkey keybind = global:ctrl+grave_accent=toggle_quick_terminal # Font size keybind = cmd+plus=increase_font_size:1 keybind = cmd+minus=decrease_font_size:1 keybind = cmd+zero=reset_font_size # Hot reload config file (no restart needed after config changes) keybind = cmd+shift+comma=reload_config zhangchitc's original config: See zhangchitc's GitHub Gist. ## Publication Information - [lostleaf.eth](https://paragraph.com/@lostleaf/): Publication homepage - [All Posts](https://paragraph.com/@lostleaf/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@lostleaf): Subscribe to updates - [Twitter](https://twitter.com/lostleaf_eth): Follow on Twitter