DEV Community

J Now
J Now

Posted on

A terminal theme tuned for prose, not syntax highlighting

Claude Code is mostly paragraphs. Tool output, reasoning traces, permission prompts — I read dense prose for hours in a terminal built around syntax highlighting conventions, where "readable" means "your keywords pop." That's the wrong optimization when your screen is 80% English at body size.

I built klein-blue to fix that. Four variations, all anchored to Yves Klein's IKB pigment, all verified against APCA contrast targets for prose reading rather than syntax pop.

The problem that shaped the design: pure IKB fails APCA contrast as text on a dark ground — Lc -12, effectively invisible. So the themes split Klein across two ANSI slots. ansi:blue gets pure IKB for decorative borders and highlights where contrast doesn't matter. ansi:blueBright gets a lifted Klein-family blue for permission-prompt text that actually needs to be read.

The four variations exist because one question doesn't have a single answer: how should Claude Code's brand color (that burnt sand/orange, routed through ansi:redBright) live in your terminal?

  • Klein Void Refined — neutralizes the brand color, lets IKB run the room
  • Klein Void Sand & Sea — accepts claude-sand as a second hero alongside IKB, the two-color Claude-brand read
  • Klein Void Prot — every accent color passes strict APCA gates (body >= 90, subtle >= 75, muted >= 45, accent >= 60); the only variation where nothing slips through on a technicality
  • Klein Void Gallery — one blue, maximum void, no competition

Ships as macOS Terminal.app .terminal profiles, built from an Objective-C builder, installed via install.sh, rollback via restore.sh. One prerequisite: Claude Code's /theme picker must be set to dark-ansi — otherwise Claude Code ignores your ANSI theme entirely and uses its hardcoded RGB palette.

Font options: CommitMono-Regular (V1, V3) and IBM Plex Mono (V2, V4), both installed automatically to ~/Library/Fonts/.

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

Top comments (0)