README.md

August 3, 2026 · View on GitHub

Dancheong

Dancheong

Color themes drawn from dancheong (단청) — the mineral pigment palette Korean artisans have painted on temple and palace woodwork for 1,500 years.
Deep indigo beams, cinnabar red, ochre gold, verdigris green — tuned for code.


Four variants

ThemeMoodBody text contrast
Dancheong NightThe flagship dark — indigo beams at dusk12.7 : 1
Dancheong DawnLight — warm hanji paper, ink, and pigment9.6 : 1
Dancheong StormHigh contrast dark — every accent ≥ 7.5 : 114.6 : 1
Dancheong MistMuted dark — desaturated, for long sessions8.5 : 1

Night

Dancheong Night

Dawn

Dancheong Dawn

Storm

Dancheong Storm

Mist

Dancheong Mist

Why another theme?

Most themes are tuned by eye. Dancheong is tuned by a build pipeline: every text color is checked against every background it ships on — editor, sidebar, inputs, terminal, the selection highlight, buttons and badges, even the syntax colors inside the autocomplete popup — 177 distinct pairs per build — and the build fails if any pair misses its gate: 7:1 body text; 4.5:1 for UI text, comments, syntax accents, and text on colored surfaces; 3:1 for text on selection, ANSI colors, diagnostics, and icons. Three documented exemptions: decorative ink (whitespace markers, indent guides) is intentionally quiet, the light variant keeps ANSI white light per terminal convention, and inactive UI states (unfocused tabs, git-ignored files) are held to 3:1 rather than 4.5:1 — WCAG 1.4.3 exempts inactive components, but we refuse to let them go lower than that.

The gate decides design questions, not just failures. Inlay hints ship with a transparent background because a tinted one measured 3.1–3.5:1; on the editor background they read at 4.6:1. Deprecated symbols are struck through instead of dimmed, because a strikethrough costs no contrast and a dimmer color does.

417 workbench keys and 37 semantic token rules per variant. Semantic highlighting means the language server's answer wins over a regex guess — a readonly binding colors as a constant, a parameter reads differently from a local, and Foo in type position differs from Foo in value position. The palette is one JSON file; every port is generated from it, so all apps match exactly.

Colors aren't decoration here. Contrast is why your eyes last through a six-hour session.

Install

VS Code: search Dancheong in the Extensions panel, or ext install dancheong.dancheong-theme — then ⌘K ⌘T and pick a variant. (Marketplace page)

Cursor / Windsurf / VSCodium: same — search Dancheong in Extensions. These editors install from Open VSX, where Dancheong is also published.

Neovim: also free, in its own repository — art220/dancheong.nvim. Same four variants, 376 highlight groups each, Tree-sitter captures and LSP semantic tokens, a lualine theme per variant, MIT licensed.

iTerm2 / Alacritty: free ports live in extras/ — import the .itermcolors file, or drop the .toml into your Alacritty config.

Dancheong PRO

The editors are free. PRO is the rest of the desk — the tools you keep open next to the editor, in the same pigments:

  • 9 more apps: JetBrains IDEs, Sublime Text, Obsidian, Kitty, Ghostty, Windows Terminal, Warp, tmux, Zed — 13 in total counting the free ports
  • Not thin ports. The JetBrains scheme sets 156 attributes of its own rather than inheriting Darcula for the console, diffs and debugger
  • All four variants everywhere, byte-identical colors
  • Lifetime updates — new apps and variants included

Get Dancheong PRO on Gumroad →

The five colors

Obangsaek (오방색) — the five cardinal colors of Korean cosmology — anchor the palette: blue (east), red (south), yellow (center), white (west), black (north). Dancheong pigments were ground from minerals, which is why they read muted yet vivid: real rocks, not neon. This theme keeps that quality — saturated enough to separate tokens, calm enough to live in.

License

MIT — the free themes in this repo are yours to use and modify.