Four variants · open palette tokens · VS Code and terminals

Color that lets your eyes rest.

Kvile is a calm, perceptually balanced theme for your editor and terminal. Designed in OKLCH, checked for contrast and colorblind safety, generated from a single set of tokens.

Try it live

Why Kvile

Quiet colors, built with math.

Most themes are picked by eye and checked never. Kvile is generated, measured, and then tuned by eye.

Four variants, one system

Night, dusk, day and high contrast share the same roles and the same checks. Pick one, the whole page follows.

Contrast you can trust

7.4:1

Text on background in the current variant. Comments stay readable at 4.6:1 instead of fading away.

Safe for colorblind eyes

ΔE ≥ 6

Every pair of syntax colors stays separable under deuteranopia, protanopia and tritanopia. The build fails if one slips.

Designed in OKLCH

Accents are defined by perceptual lightness and chroma instead of hex guesses, so yellow does not shout over purple. Each hue is nudged only as far as it takes to stay distinct.

One source of truth

Edit the tokens once, regenerate everything.

  • VS Code
  • Ghostty
  • Alacritty
  • kitty
  • WezTerm
  • iTerm2
  • Windows Terminal

Wallpapers included

Technical specimen sheets drawn from the real palette data, for desktop and phone.

See wallpapers

Palette

Eight accents. Twelve neutrals.

Click any swatch to copy its hex value. The page you are reading uses exactly these colors.

Accessibility

Proof, not promises.

Contrast is measured with WCAG ratios. Colorblind separation uses the Machado simulation and OKLab distance, where about 2 is just noticeable and Kvile enforces 6 or more.

Colorblind simulation

The same eight accents as seen by different eyes. Each row has to stay distinguishable.

Normal visionclosest pair number / constant · ΔE 10.6
Deuteranopiaclosest pair number / constant · ΔE 6.5
Protanopiaclosest pair keyword / function · ΔE 6.8
Tritanopiaclosest pair number / special · ΔE 6.8
Normal visionclosest pair number / error · ΔE 10.7
Deuteranopiaclosest pair type / special · ΔE 6.5
Protanopiaclosest pair keyword / function · ΔE 6.6
Tritanopiaclosest pair string / function · ΔE 6.5
Normal visionclosest pair keyword / special · ΔE 11.1
Deuteranopiaclosest pair string / number · ΔE 6.2
Protanopiaclosest pair number / constant · ΔE 6.5
Tritanopiaclosest pair string / function · ΔE 6.3
Normal visionclosest pair number / constant · ΔE 10.6
Deuteranopiaclosest pair number / error · ΔE 6.3
Protanopiaclosest pair keyword / special · ΔE 6.5
Tritanopiaclosest pair special / error · ΔE 6.7

Contrast report

Generated from the build for the selected variant.

Contrast of key colors in Kvile Natt
PairRatioTargetResult
text on background12.8:17-13:1✓ pass
comment on background4.65:1>= 4.5:1✓ pass
text on selection9.78:1>= 4.5:1✓ pass
keyword on background9.55:1>= 4.5:1✓ pass
string on background8.95:1>= 4.5:1✓ pass
function on background7.01:1>= 4.5:1✓ pass
type on background10.98:1>= 4.5:1✓ pass
number on background8.03:1>= 4.5:1✓ pass
constant on background10.57:1>= 4.5:1✓ pass
special on background6.7:1>= 4.5:1✓ pass
error on background6.6:1>= 4.5:1✓ pass
Contrast of key colors in Kvile Skumring
PairRatioTargetResult
text on background9.13:15.5-10:1✓ pass
comment on background3.7:1>= 3.5:1✓ pass
text on selection6.49:1>= 4.5:1✓ pass
keyword on background5.46:1>= 4:1✓ pass
string on background7.14:1>= 4:1✓ pass
function on background5.62:1>= 4:1✓ pass
type on background8.63:1>= 4:1✓ pass
number on background5.51:1>= 4:1✓ pass
constant on background8.21:1>= 4:1✓ pass
special on background7.92:1>= 4:1✓ pass
error on background6.67:1>= 4:1✓ pass
Contrast of key colors in Kvile Dag
PairRatioTargetResult
text on background12.63:17-14:1✓ pass
comment on background4.7:1>= 4.5:1✓ pass
text on selection9.33:1>= 4.5:1✓ pass
keyword on background6.99:1>= 4.5:1✓ pass
string on background4.58:1>= 4.5:1✓ pass
function on background4.52:1>= 4.5:1✓ pass
type on background6.22:1>= 4.5:1✓ pass
number on background4.7:1>= 4.5:1✓ pass
constant on background7.18:1>= 4.5:1✓ pass
special on background4.84:1>= 4.5:1✓ pass
error on background6.63:1>= 4.5:1✓ pass
Contrast of key colors in Kvile Kontrast
PairRatioTargetResult
text on background17.73:112-21:1✓ pass
comment on background7.29:1>= 7:1✓ pass
text on selection14.71:1>= 4.5:1✓ pass
keyword on background9.67:1>= 7:1✓ pass
string on background9.91:1>= 7:1✓ pass
function on background13.18:1>= 7:1✓ pass
type on background14.2:1>= 7:1✓ pass
number on background11.37:1>= 7:1✓ pass
constant on background13.91:1>= 7:1✓ pass
special on background8.92:1>= 7:1✓ pass
error on background8.92:1>= 7:1✓ pass

Install

Two minutes to calmer.

Everything lives in the repository. Variants are Natt, Skumring, Dag and Kontrast.

VS Code
git clone https://github.com/asconix/kvile.git
cd kvile/ports/vscode
ln -s "$(pwd)" ~/.vscode/extensions/asconix.kvile-0.1.0

Reload VS Code, then run "Preferences: Color Theme" and pick a Kvile variant.

Ghostty
cp ports/terminal/ghostty/kvile-* ~/.config/ghostty/themes/

In your Ghostty config: theme = kvile-natt

Alacritty
mkdir -p ~/.config/alacritty/themes
cp ports/terminal/alacritty/*.toml ~/.config/alacritty/themes/

In alacritty.toml: general.import = ["~/.config/alacritty/themes/kvile-natt.toml"]

kitty
cp ports/terminal/kitty/*.conf ~/.config/kitty/

In kitty.conf: include kvile-natt.conf

WezTerm
mkdir -p ~/.config/wezterm/colors
cp ports/terminal/wezterm/*.toml ~/.config/wezterm/colors/

In wezterm.lua: config.color_scheme = "Kvile Natt"

iTerm2
open ports/terminal/iterm2/kvile-natt.itermcolors

Or: Settings > Profiles > Colors > Color Presets > Import.

Windows Terminal
ports/terminal/windows-terminal/kvile-schemes.json

Paste the entries into the schemes array in settings.json, then set colorScheme on your profile.

Wallpapers

The palette, painted.

A specimen sheet for each variant: the OKLCH plot of its eight accents, neutral ramp, contrast ladder and colorblind simulation, over a soft aurora. Full resolution PNGs for desktop and phone.

Abstract aurora wallpaper in Kvile Natt colors, desktop
Desktop · 3840×2160Download
Abstract aurora wallpaper in Kvile Natt colors, phone
Phone · 1290×2796Download
Abstract aurora wallpaper in Kvile Skumring colors, desktop
Desktop · 3840×2160Download
Abstract aurora wallpaper in Kvile Skumring colors, phone
Phone · 1290×2796Download
Abstract aurora wallpaper in Kvile Dag colors, desktop
Desktop · 3840×2160Download
Abstract aurora wallpaper in Kvile Dag colors, phone
Phone · 1290×2796Download
Abstract aurora wallpaper in Kvile Kontrast colors, desktop
Desktop · 3840×2160Download
Abstract aurora wallpaper in Kvile Kontrast colors, phone
Phone · 1290×2796Download