DEV Community

J Now
J Now

Posted on

Terminal themes for code syntax — useless when your screen is prose

After a few weeks of heavy Claude Code sessions, I noticed my eyes were fatiguing around hour two. The theme I was using (a well-regarded dark syntax theme) was tuned for token-level contrast: keywords pop, strings pop, comments recede. That's the right hierarchy for reading code. It's the wrong hierarchy when 80% of what's on screen is tool output, reasoning blocks, and permission prompts — paragraphs of English at body size.

So I built klein-blue: four Terminal.app themes for Claude Code, APCA-verified for prose legibility rather than syntax highlighting.

The interesting constraint was IKB itself — Yves Klein's International Klein Blue, pure pigment hex 002FA7. It fails APCA as text on a dark ground (Lc -12, effectively invisible). To keep the anchor color while staying readable, I split it across two ANSI slots: pure IKB in ansi:blue for decorative borders and highlights where it's large enough to carry, and a lifted Klein-family blue A8BEF0 in ansi:blueBright for permission-prompt text that has to be read at body size.

Contrast gates are set per semantic role rather than globally: body >= 90 Lc, subtle >= 75, muted >= 45, accent >= 60. Klein Void Prot is the only variation where every accent slot clears strict gates — the other three trade some accent contrast for a warmer feel or explicit brand accommodation.

The four variations exist because of one specific ANSI slot: ansi:redBright, which Claude Code uses for its claude-sand brand color. Depending on whether you want that second hero color competing with the blue or not, you pick Klein Void Sand & Sea (accepts it) or Klein Void Gallery (neutralizes it, maximum void).

One thing worth knowing before installing: Claude Code has to be set to dark-ansi via its /theme picker. If it's on any other setting it ignores your Terminal.app ANSI palette entirely and renders its hardcoded RGB values instead.

Ships as .terminal profile files, installed via install.sh, rollback via restore.sh. Includes CommitMono-Regular and IBM Plex Mono depending on variation.

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

Top comments (0)