DEV Community

J Now
J Now

Posted on

Terminal themes optimize for code. Claude Code is mostly prose.

Most of my time in Claude Code isn't spent reading syntax-highlighted code. It's spent reading tool output, permission prompts, reasoning traces, multi-paragraph explanations. The ANSI slots that matter aren't keyword and string — they're whatever color Claude Code uses for the text you read in bulk, the text that asks you to approve a bash command, the text that explains what just happened.

Existing dark themes are tuned for code editors. They either ignore those slots or map them to colors calibrated for short bursts of syntax, not paragraphs you stare at for hours.

I built klein-blue around the opposite premise: treat Claude Code as a prose reading environment first, with Yves Klein's IKB blue as the anchor color.

The main technical constraint that shaped everything: pure IKB (hex 002FA7) fails APCA contrast as readable text on a dark ground — it lands at Lc -12, which is effectively invisible. So I split it across two ANSI slots. ansi:blue gets pure IKB for decorative use (borders, highlights, visual anchors). ansi:blueBright — which Claude Code uses for permission-prompt text you actually need to read — gets a lifted Klein-family blue, A8BEF0, that clears the body-text contrast gate.

The theme ships in four variations:

  • Klein Void Refined — balanced, the default starting point
  • Klein Void Sand & Sea — accepts Claude's claude-sand brand color as a second hero rather than neutralizing it
  • Klein Void Prot — every accent APCA-verified; body >= 90 Lc, subtle >= 75, muted >= 45, accent >= 60
  • Klein Void Gallery — maximum void, single blue, everything else near-neutral

V3 Prot is the only variation where every slot passes strict per-role gates. The others make deliberate tradeoffs — Gallery trades some legibility for visual austerity, Sand & Sea lets the brand red compete.

One prerequisite worth knowing upfront: Claude Code has to be set to dark-ansi via its /theme picker. If it's on any other setting, it uses a hardcoded RGB palette and ignores the Terminal.app ANSI theme entirely — your profile changes do nothing.

Installation is install.sh, which drops .terminal profile files built from an Objective-C builder and installs either CommitMono-Regular (V1, V3) or IBM Plex Mono (V2, V4) to ~/Library/Fonts/. Full rollback via restore.sh.

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

Top comments (0)