DEV Community

J Now
J Now

Posted on

Terminal themes are built for syntax. Claude Code is mostly paragraphs.

Most of my Claude Code screen is English. Tool output, reasoning traces, permission prompts — I'm reading paragraphs, not scanning syntax. Terminal themes exist to make const and -> pop. That's not the job here.

I spent a few sessions mapping which ANSI slots Claude Code actually hits. ansi:blue for decorative borders, ansi:blueBright for permission-prompt text, ansi:redBright for the claude-sand brand color in UI chrome, ansi:yellow for warnings. The slots matter because Claude Code has two modes: its hardcoded RGB palette (default) and full ANSI passthrough when you set /theme to dark-ansi. In passthrough mode, your terminal theme drives every color decision.

I built klein-blue around Yves Klein's IKB pigment as the anchor color. The first problem: pure IKB on dark ground reads at APCA Lc -12 — effectively invisible as text. The fix was a slot split. IKB lives in ansi:blue as a decorative color (borders, highlights you glance at), while a lifted Klein-family blue goes into ansi:blueBright where permission-prompt text needs to actually be read.

For legibility I used APCA Lc thresholds rather than WCAG 4.5:1, which doesn't model body-size prose well. Per-role gates:

body    >= 90
subtle  >= 75
muted   >= 45
accent  >= 60
Enter fullscreen mode Exit fullscreen mode

Four variations ship with different tradeoffs:

Klein Void Refined    — balanced, general use
Klein Void Sand & Sea — IKB + claude-sand as two heroes
Klein Void Prot       — every slot APCA-verified, strictest gates
Klein Void Gallery    — maximum void, one blue, minimal chrome
Enter fullscreen mode Exit fullscreen mode

V3 Prot is the only one where every accent passes strict gates. Sand & Sea accepts ansi:redBright as a warm second hero rather than neutralizing it — the pairing holds at session length even though it competes with IKB.

Ships as macOS Terminal.app .terminal profiles built from build.m, a variation-aware Objective-C builder. install.sh drops profiles and fonts (CommitMono-Regular for V1/V3, IBM Plex Mono for V2/V4) into the right system directories. restore.sh rolls back cleanly.

One hard prerequisite: /theme dark-ansi must be set in Claude Code. Without it, Claude Code ignores the ANSI palette entirely and falls back to hardcoded RGB.

https://github.com/robertnowell/klein-void

Top comments (0)