DEV Community

J Now
J Now

Posted on

Terminal themes optimize for code scanning. Claude Code isn't code.

After a few weeks of heavy Claude Code use, I noticed the fatigue wasn't from the work — it was from the screen. Tool output, reasoning traces, permission prompts: most of what Claude Code renders is paragraphs of English at body size, not syntax-highlighted source. My terminal theme was tuned for the wrong thing.

So I built klein-blue: four Terminal.app themes for macOS built around Yves Klein's IKB pigment, with contrast targets set per semantic role rather than per syntax class.

The contrast model is APCA Lc, not WCAG. WCAG treats all text the same; APCA distinguishes by size and role. The gates I used: body text >= 90 Lc, subtle text >= 75, muted >= 45, accents >= 60. The strictest variation (Klein Void Prot) passes every one of those. The others make deliberate tradeoffs — softening some accents to reduce visual noise — but body and subtle are held everywhere.

The IKB anchor created a real problem. Pure IKB on a dark ground measures Lc -12 — effectively invisible as readable text. The fix was to split across two ANSI slots: pure IKB in ansi:blue for decorative borders and non-text highlights, and a lifted Klein-family blue (Lc ~85) in ansi:blueBright for permission-prompt text that actually needs to be read.

Claude Code uses ansi:redBright for its claude-sand brand color. That slot becomes the differentiating decision between variations: Klein Void Sand & Sea treats it as a second hero color alongside IKB; Klein Void Refined neutralizes it to avoid brand competition. Klein Void Gallery strips nearly everything back to one blue on near-black — maximum void, minimum noise.

The whole thing ships as .terminal profile files built from an Objective-C builder (build.m), installed via install.sh, and fully reversible with restore.sh. CommitMono-Regular ships with V1 and V3; IBM Plex Mono with V2 and V4, both landing in ~/Library/Fonts/.

One non-obvious requirement: Claude Code's /theme picker must be set to dark-ansi. If it's on any other setting, Claude Code bypasses the ANSI palette entirely and uses its hardcoded RGB values — the theme does nothing.

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

Top comments (0)