DEV Community

J Now
J Now

Posted on

Klein Blue in the terminal: one pigment, four prose-tuned themes

Yves Klein registered International Klein Blue as a named pigment in 1960 — IKB 79, synthetic ultramarine in a matte binder, a blue so saturated it reads as depth rather than surface. Pure IKB fails as terminal text on dark ground. APCA puts it at Lc -12, effectively invisible. That constraint is the structural fact the whole theme is built around.

Claude Code is mostly prose. Tool output, reasoning traces, permission prompts — I was reading paragraphs of it for hours a day on a theme tuned for Python syntax highlighting. Syntax themes optimize for keyword salience and punctuation density; they're solving the wrong problem when your screen is 80% English sentences. I wanted something built for body-size reading over long sessions, anchored to a single color I cared about enough to actually look at.

The fix was splitting IKB across two ANSI slots. Pure IKB goes into ansi:blue — Claude Code uses that slot for decorative borders and UI chrome where legibility against text isn't required. A lifted Klein-family blue, hex A8BEF0, goes into ansi:blueBright — the slot Claude Code maps to permission-prompt text, where you're reading actual words.

Four variations ship, and they differ on one axis: what you do with ansi:redBright, which Claude Code uses for its claude-sand brand color.

  • Klein Void Refined — neutralizes sand, one blue anchor, nothing competing
  • Klein Void Sand & Sea — accepts sand as a second hero alongside the blue
  • Klein Void Prot — fully APCA-verified: body Lc ≥ 90, subtle ≥ 75, muted ≥ 45, accent ≥ 60
  • Klein Void Gallery — maximum void, one blue, everything else near-neutral

V3 Prot is the only variation where every slot clears strict APCA gates. Klein Void Gallery makes deliberate threshold concessions to push the void quality as far as possible.

Ships as macOS Terminal.app .terminal profile files. Install via install.sh, roll back via restore.sh. One prerequisite that isn't obvious: Claude Code's /theme picker must be set to dark-ansi. Any other setting and Claude Code ignores your ANSI configuration entirely, falling back to its hardcoded RGB palette.

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

Top comments (0)