From Ghostty to Kitty: My Terminal Configuration

About 3 min reading time

Last year I wrote about switching from iTerm2 to Ghostty. Ghostty worked well overall, but after a while I noticed it was draining my MacBook battery more than I'd like — even when sitting idle. So I decided to evaluate Kitty as an alternative.

Installation

There are a few ways to get Kitty on macOS.

Via curl (the official installer):

curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin

Via Homebrew:

brew install --cask kitty

I manage my system configuration with nix-darwin and Home Manager, so for me it was just a matter of enabling programs.kitty in my Home Manager config. If you use nix-darwin, that's the path I'd recommend.

Configuration

Kitty is configured via a plain text file at ~/.config/kitty/kitty.conf. Here is my complete config:

font_family      JetBrainsMono Nerd Font
bold_font        JetBrainsMono Nerd Font Bold
italic_font      JetBrainsMono Nerd Font Italic
bold_italic_font JetBrainsMono Nerd Font Bold Italic
font_size        14.0

# Window
window_padding_width    12
background_opacity      0.95
hide_window_decorations no

# Cursor
cursor_shape          beam
cursor_blink_interval 0.5

# Tab bar
tab_bar_style       powerline
tab_bar_edge        bottom
tab_powerline_style round

# Scrollback
scrollback_lines              10000
scrollback_pager_history_size 100

# macOS
macos_option_as_alt yes

# Catppuccin Mocha
background           #1e1e2e
foreground           #cdd6f4
selection_background #585b70
selection_foreground #cdd6f4
url_color            #f5e0dc
cursor               #f5e0dc
cursor_text_color    #1e1e2e

active_border_color   #b4befe
inactive_border_color #6c7086
bell_border_color     #f9e2af

wayland_titlebar_color #1e1e2e
macos_titlebar_color   #1e1e2e

active_tab_foreground   #11111b
active_tab_background   #cba6f7
inactive_tab_foreground #cdd6f4
inactive_tab_background #181825
tab_bar_background      #11111b
tab_bar_margin_color    #11111b

color0  #45475a
color1  #f38ba8
color2  #a6e3a1
color3  #f9e2af
color4  #89b4fa
color5  #f5c2e7
color6  #94e2d5
color7  #bac2de
color8  #585b70
color9  #f38ba8
color10 #a6e3a1
color11 #f9e2af
color12 #89b4fa
color13 #f5c2e7
color14 #94e2d5
color15 #a6adc8

# Keybindings
map super+left  previous_tab
map super+right next_tab
map super+1     goto_tab 1
map super+2     goto_tab 2
map super+3     goto_tab 3
map super+4     goto_tab 4
map super+5     goto_tab 5
map super+6     goto_tab 6
map super+7     goto_tab 7
map super+8     goto_tab 8
map super+9     goto_tab 9

What each section does

Font — I use JetBrains Mono in the Nerd Font variant, which includes the icon glyphs needed for tools like Starship or NeoVim plugins. Explicitly setting the bold and italic variants avoids any font synthesis artifacts.

Window — A window_padding_width of 12 gives the terminal some breathing room. background_opacity at 0.95 lets the desktop bleed through slightly, which I find easier on the eyes than a fully opaque window. hide_window_decorations no keeps the standard macOS title bar so the window still behaves normally when tiling.

Cursor — The beam shape feels more precise than the default block cursor. A cursor_blink_interval of 0.5 seconds is fast enough to stay visible without being distracting.

Tab barpowerline style with round separators at the bottom of the window. The tab bar sits below the content rather than above, which keeps it out of the way during normal use. The colors are driven entirely by the Catppuccin Mocha palette below, so active and inactive tabs are immediately distinguishable.

Scrollback — 10,000 lines covers most debugging sessions. The scrollback_pager_history_size (in MB) allows the pager to handle long outputs without truncating.

macOS specificsmacos_option_as_alt yes makes the Option key behave as Alt, which is essential for shell shortcuts like alt+b / alt+f for word-by-word cursor movement in zsh.

Colors — I use the Catppuccin Mocha theme. The dark #1e1e2e background with the muted purple and teal accents is easy to look at for long sessions. Matching the title bar color (macos_titlebar_color) to the terminal background makes the window feel cohesive rather than bolted together.

Keybindingssuper+left / super+right to cycle tabs, and super+1 through super+9 to jump directly to a numbered tab. This mirrors how most browsers handle tab navigation, so it feels natural.

First impressions

So far the battery life looks noticeably better. The configuration format is more verbose than Ghostty's, but everything is clearly documented and the result is exactly what I was looking for. I'll report back once I've spent more time with it.


This post is based on my opinion and experience. It is based on what worked for me in my context. I recognize, that your context is different.
The "Just Sharing" Principle