DEV Community

J Now
J Now

Posted on

Terminal themes are optimized for syntax. I read prose all day.

Most of what renders in my terminal during a working session is English. Tool output, reasoning traces, permission prompts, explanations — 80% prose, maybe 20% code. Every theme I tried was built around syntax highlighting: saturated keywords, jewel-toned strings, colors tuned for token density. Wrong problem for what I actually do.

I wanted a theme built around comfortable prose reading at body size over long sessions, anchored to a color I cared about: Yves Klein's IKB pigment.

The first constraint that forced a real design decision: pure IKB is invisible as text on a dark ground. APCA Lc score: -12. The color Klein spent years developing and legally protecting renders as a dark smear next to black when used as terminal text.

The fix came from looking at how Claude Code actually maps ANSI slots. The ansi:blue slot handles decorative work — borders, structural separators, visual chrome. The ansi:blueBright slot handles readable text, including permission prompts. So pure IKB (002FA7) lives in the decorative slot, where near-zero contrast is a feature rather than a failure: maximum pigment saturation, no legibility requirement. The readable slot gets A8BEF0, a desaturated Klein-family value that clears APCA Lc 60.

The broader APCA gates I used: body >= 90, subtle >= 75, muted >= 45, accent >= 60. I built four variations because I couldn't commit to a single set of tradeoffs. Klein Void Prot is strict — every slot passes every gate. Klein Void Gallery maximizes void by collapsing non-blue slots toward near-black, which means some muted elements are deliberately dim. Klein Void Sand & Sea accepts ansi:redBright — the slot Claude Code uses for its claude-sand brand color — as a warm second hero. Klein Void Refined is the baseline compromise.

One constraint that took trial and error to find: Claude Code's /theme picker must be set to dark-ansi. In any other mode, Claude Code substitutes its own hardcoded RGB palette and the Terminal.app ANSI profile is completely bypassed.

Four .terminal profiles for macOS Terminal.app. CommitMono-Regular on V1 and V3, IBM Plex Mono on V2 and V4, both copied to ~/Library/Fonts/ on install. MIT licensed.

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

Top comments (0)