DEV Community

J Now
J Now

Posted on

Klein Blue in a Terminal: Tuning for Prose, Not Syntax

Yves Klein registered International Klein Blue as a pigment in 1960 — IKB 79, a saturated ultramarine that reads as depth rather than surface. It's the specific quality I wanted anchoring a terminal theme, because Claude Code isn't a syntax highlighter. It's a prose environment. Tool output, permission prompts, reasoning traces — I spend hours reading paragraphs of it, not scanning type annotations.

Most terminal themes are optimized for code: high-chroma greens and reds for keywords, muted grays for punctuation. That hierarchy is wrong when your screen is 80% English prose at body size.

So I built four Terminal.app themes around IKB, each handling the color-role tradeoffs differently.

The first constraint I hit: pure IKB fails APCA contrast as text on a dark background — Lc -12, effectively invisible. Klein's void quality comes from saturation and darkness together; that's exactly what makes it unreadable as text. The fix was splitting the pigment across two ANSI slots: pure IKB in ansi:blue for decorative borders and highlights where legibility isn't required, and a lifted Klein-family tone in ansi:blueBright for permission-prompt text that actually needs to be read.

The APCA gates I used per role: body text >= Lc 90, subtle text >= 75, muted >= 45, accent >= 60. Klein Void Prot (V3) is the only variation where every accent slot clears all four gates strictly — it's the one I reach for in long sessions. The other three make tradeoffs: Gallery (V4) maximizes the void by suppressing competing hues; Sand & Sea (V2) accepts Claude's brand orange as a second hero color rather than neutralizing it.

One setup detail that burned me during testing: you have to set Claude Code's /theme picker to dark-ansi. If it's on a hardcoded RGB palette, it ignores the Terminal.app ANSI colors entirely and the theme does nothing.

Installation is via install.sh — drops .terminal profiles and fonts (CommitMono or IBM Plex Mono depending on variation) into the right places. restore.sh rolls everything back.

git clone https://github.com/robertnowell/klein-void
cd klein-void
bash install.sh
# Then in Terminal.app: Shell > Use Settings as Default
# Then in Claude Code: /theme > dark-ansi
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)