lyingterminals.com
Date:
—
From:
Your terminal <tty@localhost>
To:
You
Subject:
Re: your colour scheme

Is your terminal theme lying to you?

Every terminal theme ships 16 ANSI colours and absolutely no rules. "Bright" is a suggestion. Bright black, the colour most apps use for secondary text, is often a rumour. Pick a theme and we'll run real WCAG 2 contrast maths on it (4.5:1 for text, 3:1 for UI), and then we'll be honest about it.

I. Pick a defendant
Fig. 1. Choose a theme and the whole page changes into it. Or paste your own from Ghostty or kitty.
II. The evidence

Every colour, measured against its own background.

Each tile shows a colour as text on your background, the way your terminal actually renders it. The number is its WCAG contrast ratio. Bright colours are checked against their normal twins.

≥ 4.5 readable textUI 3–4.5 borders onlyGHOST < 3 fails everything↑ more bright, more contrast↓ dimmerless bright, but less contrast= same identical hex
—
III. The verdict
    IV. Exhibit A

    A verdict card, drawn in your own theme.

    It's 1200 × 630, sized for link previews, and rendered pixel by pixel in your palette, including the bright black you insisted on.

    ← Swipe to see the whole card. The download is full size (1200 × 630). →
    V. Appendix: how to respect a user's colour choice
    1. i.Just use the user's 16 ANSI colours.🧠
    2. ii.Convert them to OKLCH, so "lighter" means lighter to an actual human eye.🧠
    3. iii.Nudge them in OKHSL, cap the chroma and apply a bell-shaped saturation falloff, because Catppuccin's pale pink #f4b8e4 came out hot pink #eb76d1 "at the same saturation". It was fixed to #cc92bd.🧠
    4. iv.Have a coding agent fit a fifth-degree polynomial to the contrast algorithm, ship only the coefficients, and call it "respecting user choice."contrast(L) ≈ c₀ + c₁L + c₂L² + c₃L³ + c₄L⁴ + c₅L⁵🧠
    VI. Cross-examination

    Put your theme on the stand.

    This terminal uses your theme's raw colours, with nothing adjusted for you. Run something that looks familiar, like git diff or npm test, then type lie to mark every span that wouldn't clear 4.6:1. Press ` anywhere to open it as a drop-down console.

    The terminal is open as a drop-down console. Press Esc to bring it back.
    you@localhost: ~
    Fig. 3. A tiny terminal drawn with plain DOM elements. Try help, theme dracula, judge, git diff, lie and export ghostty. Press Tab to complete and ↑/↓ for history.

    A note on the colours: this page is wearing your theme, but it doesn't take it on trust. Like Pi, it moves each accent in OKLCH until its own text clears 4.6:1. The tiles above are left exactly as your theme defines them.

    The floating bar above was envisioned by Seb Van Papple, visionary of navigation, who looked upon a long page and declared: let there be a way back up. Generations of scrollers, as yet unborn, stand forever in his debt.