DEV Community

J Now
J Now

Posted on

Why IKB Fails as Terminal Text (and How I Split It Across Two ANSI Slots)

Most terminal themes are built for code. Mine is built for Claude Code, which means most of what I read in it is prose — tool output, reasoning traces, permission prompts. After a few months of daily sessions, the default theme started feeling wrong in a way I couldn't immediately name.

The problem I eventually landed on: no one had tuned an ANSI theme for the specific slots Claude Code actually uses. So I built klein-blue — four Terminal.app variations anchored to Yves Klein's International Klein Blue pigment.

The interesting constraint is that pure IKB fails as text on a dark ground. APCA Lc -12. That's not a borderline fail — it's effectively absent. Which creates a real design problem when the whole point is IKB.

The fix I settled on: split the pigment across two ANSI slots with different jobs.

ansi:blue       002FA7   — decorative only: borders, dividers, highlights
ansi:blueBright A8BEF0   — readable Klein-family tone for permission-prompt text
Enter fullscreen mode Exit fullscreen mode

Claude Code routes permission-prompt text through ansi:blueBright, not ansi:blue. That slot assignment is the thing that makes the split workable — I'm not fighting Claude Code's rendering, I'm mapping to what it already does.

The four variations use APCA Lc gates per role: body >= 90, subtle >= 75, muted >= 45, accent >= 60. Klein Void Prot (V3, CommitMono) is the only one where every accent passes strict gates. The others make deliberate tradeoffs — Klein Void Gallery pushes maximum blue presence at the cost of some accent strictness.

The second design decision worth naming: ansi:redBright is the slot Claude Code uses for its claude-sand brand color. That's where the variations diverge most visibly. Klein Void Sand & Sea accepts it as a second hero color alongside the blue. Klein Void Refined neutralizes it to avoid competition. That single slot choice accounts for most of the visual difference between variations.

Ships as .terminal profile files for macOS Terminal.app. Requires Claude Code's /theme picker set to dark-ansi — otherwise Claude Code ignores the ANSI palette entirely and uses its hardcoded RGB values.

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

Top comments (0)