Skip to content

Terminal Config

Baidak.D edited this page Sep 12, 2026 · 15 revisions

English · Русский

A real, working kitty configuration — macOS. A Ghostty-flavoured look, Ghostty-style splits and rounded powerline tabs, and fixes for driving Cmd/Ctrl shortcuts on a Russian keyboard layout. It ships in the repo under config/ and is optional: the kittens run on any kitty.

These are personal Cmd-centric macOS bindings with Cyrillic key duplicates. Fork it, read it, adapt it — don't adopt the whole thing blindly. What to change for your machine and layout is in Adapting it.

the look — pill tabs, splits, Ghostty palette

The look

  • Palette — Ghostty's default dark theme, taken from ghostty +show-config --default (foreground/background + the 16 ANSI colors), in ghostty.conf.
  • Font — JetBrains Mono 12.
  • Tabs — top, rounded powerline "pill" style (tabs.conf). Titles are capped at 30 cells; a tab running Claude Code (kitty detects it by the ✳ the CLI puts in the window title) shows project❘topic instead, plain shell tabs keep their usual title. A kitten overlay titles itself Session / Review / Log, and a claude session opened by the session kitten gets the title claude · <project> — so those tabs read as the thing they are, not as a bare "kitty".
  • Splits — Ghostty-style panes (splits.conf).
  • Titlebar — tinted to the terminal background (macOS).
  • App icon — the familiar mascot: a kitty peeking out of a terminal. familiar enable copies it to kitty.app.icns in the kitty config directory, where kitty picks it up at startup; --no-icon keeps kitty's own and familiar disable puts it back (see Installation). The icon needs a full restart, and the Dock may need a killall Dock to drop its cached copy.

Requirements

  • macOS — the config uses macos_titlebar_color, hide_macos_app, minimize_macos_window, Cmd-based bindings, and a macOS-specific keyboard fix (see The Cmd+W fix).
  • kitty — tested on 0.47.
  • JetBrains Mono installed — otherwise kitty silently falls back to another font and the intended look changes. Change font_family in ghostty.conf to use your own.
  • Optional: the kittens from this repo — wire them in separately with familiar enable --kittens (see Installation).

Install

The easy path is the familiar helper: familiar enable --all pulls in this config (as terminal.conf) plus the kittens. See Installation.

To use just this terminal config by hand, copy the files and restart kitty:

cp -R config/kitty.conf config/terminal.conf config/keys config/look ~/.config/kitty/

cp overwrites same-named files (notably kitty.conf) — back up your existing config first if you have one.

The theme, splits, tabs and layout work right away. Add the kittens separately with familiar enable --kittens — it generates their maps with the absolute paths kitty needs.

What's in each file

Grouped into keys/ (shortcuts + layout) and look/ (appearance); the two hubs (kitty.conf, terminal.conf) stay at the root.

File What it sets
kitty.conf Thin entry for the manual cp path — just include terminal.conf.
terminal.conf Look-only hub — pulls in the others in order (restored-defaults first, so its clear_all_shortcuts runs before anything is mapped). This is what familiar enable --all includes.
keys/restored-defaults.conf clear_all_shortcuts + a curated macOS Cmd set: font size (Cmd+=/-/0), new window/tab (Cmd+N/T), tab nav (Cmd+Shift+[ ]), rename tab (Cmd+Shift+I), clipboard (Cmd+C/V), search (Cmd+F), clear screen (Cmd+K/L), scroll, quit/hide/minimize (Cmd+Q/H/M), edit/reload config (Cmd+, / Cmd+Ctrl+,).
look/ghostty.conf The look: Ghostty's default dark palette + JetBrains Mono 12 + macOS titlebar tinted to background. Needs the font installed.
keys/russian-ctrl.conf Remaps Ctrl+<Cyrillic> to the same control code as the Latin key, by physical ЙЦУКЕН→QWERTY position — so Ctrl+C/V/… keep working while typing Russian.
keys/splits.conf Ghostty-style panes: Cmd+D / Cmd+Shift+D split, Cmd+Shift+arrows move focus, Cmd+Shift+Enter zoom (stack), Cmd+Ctrl+T move the pane to another tab — kitty asks which (a new tab, a new OS window, or one already open), so the same key moves it back too, and pressing it again while the question is up does nothing — Cmd+W close pane, Cmd+Shift+W close tab.
keys/safety.conf Confirmations before the terminal loses anything: an OS window with more than one tab confirms on close (confirm_os_window_close 2), and Cmd+W confirms when the pane is running something — a pane at the shell prompt still closes in one press. Pressing Cmd+W again while the question is up does nothing — the confirmation is an overlay, and repeated presses used to stack one on top of another. Inside a kitten overlay Cmd+W closes the kitten itself (the same ⌃c its footer offers), so the tab layout comes back instead of staying stacked — except in the close question itself, where the key that raised the question is ignored instead of cancelling it. With familiar enabled the question itself is drawn by the close kitten, which names the Claude Code session or the program — see restore; this file is the fallback for a hand-copied config. Included after splits.conf, since it overrides its Cmd+W. Pairs with restore.
keys/mouse.conf Passes Shift+click through to a kitten that has grabbed the mouse (an unmap for grabbed mode only) — this is what Shift+click file marking in review rides on; ordinary Shift-selection in the shell is untouched.
look/tabs.conf Top rounded powerline "pill" tabs + colors, Cmd+1…9 go to tab. Titles capped at 30 cells; a Claude Code tab (title starts with ✳) renders as project❘topic, every other title (shell, kitten overlays, claude · <project>) is shown as-is.
look/darcula.conf Optional JetBrains Darcula theme (familiar enable --theme darcula). Loaded after ghostty.conf and tabs.conf, so it overrides their colors (terminal palette and tab bar); the font, the titlebar and the pill shape of the tabs stay.

Note: clear_all_shortcuts wipes all of kitty's built-in shortcuts, including the cross-platform Ctrl+Shift (kitty_mod) defaults — only the curated Cmd set above comes back. restored-defaults.conf is a snapshot of kitty's defaults frozen at a kitty version; re-check it after a major upgrade.

Russian keyboard layout

Two pieces make hotkeys work while the Russian layout is active:

  • russian-ctrl.conf maps every Ctrl+<Cyrillic> to the control code of the Latin key in the same physical position (Ctrl+с → Ctrl+C, …).
  • splits.conf carries Cyrillic duplicates of the Cmd bindings (D→в for split); the kittens' duplicates (S→ы, R→к, L→д) are generated by familiar. Cmd+W and Cmd+Ctrl+T need no duplicate — they go through --allow-fallback=ascii instead (see The Cmd+W fix). Tab switching uses number keys (Cmd+1…9), which are layout-independent — no duplicate needed.

Don't use a Russian layout? Delete russian-ctrl.conf (and drop its include from terminal.conf) and remove the Cyrillic duplicate map lines — the Latin bindings are unaffected.

The Cmd+W fix

The one genuinely non-obvious part. On macOS, kitty's built-in Cmd+W → close_tab is sticky: it has an ASCII fallback that pre-converts the physical W key — which types ц on the Russian layout — back to w and grabs it, so Cmd+W closed the tab instead of the pane, even in Russian.

  • clear_all_shortcuts yes is the only way to drop that default; then restored-defaults.conf brings back just the Cmd shortcuts I actually want.
  • splits.conf maps Cmd+W to close_window with --allow-fallback=ascii, which converts the physical W to Latin w and matches reliably on any layout.
  • A direct map cmd+ц does not work — the macOS input method swallows it (observed with kitty --debug-keyboard). The ASCII fallback is the robust path.

--allow-fallback=ascii only triggers for non-ASCII input, so Latin layouts (Dvorak, Colemak, …) are unaffected.

Adapting it

  • Not on macOS? Remove the macos_* options in ghostty.conf and rebind Cmd to Ctrl/Super throughout; the Cmd+W fix is macOS-only.
  • No Russian layout? See Russian keyboard layout.
  • Different font? Change font_family in ghostty.conf.
  • Terminal only? familiar enable --terminal wires in just this config, without any kittens (or use the manual cp above).

Writing your own theme (terminal palette + kitten highlighting): see Themes.

Clone this wiki locally