DEV Community

J Now
J Now

Posted on

A terminal theme tuned for prose, not syntax — built around Klein Blue

Most of my working hours in Claude Code are spent reading English. Tool output, permission prompts, reasoning traces, multi-paragraph explanations — syntax highlighting is nearly irrelevant. The ANSI themes I tried were optimized for token-colored code, which meant the prose I actually read all day had flat contrast: similar weights, muddy hierarchy, nothing to anchor the eye.

I built klein-void around a single pigment: International Klein Blue, IKB, the matte ultramarine Yves Klein registered in 1960. The problem is that pure IKB fails as readable text on a dark ground — APCA Lc -12, effectively invisible. So the theme splits it across two ANSI slots: pure IKB in ansi:blue for decorative borders and highlights where legibility isn't load-bearing, and a lifted Klein-family blue (A8BEF0) in ansi:blueBright for permission-prompt text that actually needs to be read.

There are four variations. Klein Void Prot is the strict one — every accent role passes APCA gates (body ≥ 90, subtle ≥ 75, muted ≥ 45, accent ≥ 60). The others trade some strictness for character: Sand & Sea accepts Claude's ansi:redBright claude-sand color as a second hero instead of neutralizing it; Gallery pushes toward maximum void with one blue and near-nothing else.

One non-obvious dependency: Claude Code has to have /theme set to dark-ansi, otherwise it ignores your Terminal.app ANSI palette entirely and falls back to hardcoded RGB. That took me longer to figure out than I'd like to admit.

Ships as .terminal profile files for macOS Terminal.app, built from an Objective-C builder, with install.sh and restore.sh for rollback. CommitMono-Regular on V1 and V3, IBM Plex Mono on V2 and V4, both dropped to ~/Library/Fonts/.

git clone https://github.com/robertnowell/klein-void
cd klein-void && ./install.sh
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)