DEV Community

J Now
J Now

Posted on

Terminal themes assume you're scanning code. Most reading isn't.

Most of my screen time in a Claude Code session is reading reasoning traces, tool output, permission prompts — English paragraphs, not syntax trees. Every terminal theme I tried was tuned for the wrong thing: short identifiers at a glance, not sustained prose at body size for three-hour sessions.

So I built klein-blue: four Terminal.app themes anchored to Yves Klein's IKB pigment, with contrast targets set for prose legibility, not syntax scanning.

The contrast model is APCA Lc rather than WCAG ratio. WCAG treats all text sizes the same; APCA doesn't. For body-size prose at typical terminal font sizes, the gates I set are: body >= 90 Lc, subtle >= 75, muted >= 45, accent >= 60. The strictest variation, Klein Void Prot, is the only one where every single accent slot clears those gates.

The IKB color itself fails as readable text on a dark ground — it scores Lc -12, effectively invisible. The fix was splitting it across two ANSI slots: pure IKB in ansi:blue for decorative borders and highlights, and a lifted Klein-family blue (Lc -78) in ansi:blueBright for permission-prompt text that actually needs to be read quickly.

The four variations diverge on one axis: what happens to ansi:redBright, the slot Claude Code uses for its claude-sand brand color. Klein Void Sand & Sea treats it as a second hero alongside IKB. Klein Void Gallery neutralizes it entirely — one blue, maximum void.

One setup detail worth flagging: Claude Code has to be set to dark-ansi via /theme or it ignores the Terminal.app ANSI palette entirely and falls back to its hardcoded RGB values.

Ships as .terminal profile files for macOS Terminal.app, with full rollback via restore.sh.

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

Top comments (0)