DEV Community

J Now
J Now

Posted on

A Terminal Theme Tuned for Reading, Not Syntax Scanning

Most of my Claude Code screen is English. Tool output, reasoning traces, permission prompts — paragraphs of prose I read for hours, not import statements I scan for type errors. Every terminal theme I tried was tuned for syntax highlighting: high-chroma reds and greens optimized for the 20% of the screen that's code. The other 80% was just fatiguing.

So I built klein-blue: four Terminal.app themes tuned specifically for body-size prose legibility in Claude Code sessions, built around Yves Klein's IKB pigment.

The APCA contrast metric is the core design constraint. Where most themes inherit WCAG 2.1's blunt 4.5:1 ratio (which doesn't account for font size or weight), klein-blue uses APCA's perceptual Lc scale with per-role gates: body text ≥ Lc 90, subtle roles ≥ 75, muted roles ≥ 45. The strictest variation, Klein Void Prot, passes every gate — including accents — without exception.

The IKB anchor color created a real constraint. Pure IKB (hex 002FA7) on a dark ground measures Lc -12 — effectively invisible as text. The fix was to split it across two ANSI slots: pure IKB in ansi:blue for decorative borders and highlights where legibility isn't the point, and a lifted Klein-family blue (A8BEF0) in ansi:blueBright for permission-prompt text where it is.

The four variations differ in how they handle Claude Code's ansi:redBright slot — the slot Claude Code uses to render its claude-sand brand color:

  • Klein Void Refined: neutralizes sand, keeps IKB as the single accent
  • Klein Void Sand & Sea: accepts sand as a second hero, two-color contrast structure
  • Klein Void Prot: full APCA verification on every role, CommitMono-Regular
  • Klein Void Gallery: maximum void, one blue, everything else near-neutral

One non-obvious requirement: Claude Code must be set to dark-ansi via its /theme picker. If it's on any other setting, it renders its hardcoded RGB palette and ignores the Terminal.app ANSI profile entirely.

Installs via install.sh, fully reversible with restore.sh, built from source with a variation-aware Objective-C builder. MIT licensed.

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

Top comments (0)