Skip to content
| Marketplace
Sign in
Visual Studio Code>Themes>NishiruNew to Visual Studio Code? Get it now.
Nishiru

Nishiru

sumitjha

|
10 installs
| (0) | Free
night distilled to its exact violet.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
Nishiru

Nishiru

निशि · 見る · 西

Night-seeing. The dark that watches.

A VS Code color theme built entirely from first principles — color science, perceptual research, and three cultural traditions.

Version License Variants Score

Install · Variants · Science · Culture

Variants

Nishiru ships as a family of four. All variants share identical accent hues — only the background changes.

Variant Background Description For
Nishiru #171422 — violet void The base. Deep night. Evening / night coding
Nishiru Storm #0f0c1c — OLED void Maximum depth. Ultra-dark. OLED screens, max contrast
Nishiru Mist #201e38 — raised dark Fog, not void. Gentler. Bright rooms, afternoon coding
Nishiru Washi #f6f2e4 — cream paper Light. Ink on washi paper. Daylight, eye rest

The Science

Nishiru is the only published VS Code theme built from scientific research at every layer. This is not marketing — every decision has a citation.

1. OKLCH color space

Every color in Nishiru is computed in OKLCH — a perceptually uniform color space where equal mathematical distance equals equal perceived distance. Traditional HSL and even the older CIELCh have known failure modes: a yellow and a blue at 50% lightness look dramatically different in brightness. In OKLCH they don't.

All Nishiru accents are computed at L:0.82 (structural) or L:0.88 (primary content). Every accent appears equally bright to your eye. No color shouts over another.

OKLCH fixes the unexpected hue and lightness changes present in the H:240–280 blue band of CIELAB. We avoid this band entirely.

2. Background hue science

The background is not arbitrary. It is computed as oklch(L:0.16, C:0.025, H:308).

  • H:308 — pure violet, not blue. H:240–280 sits in the documented OKLCH blue-imperfection band and carries significant 415–455nm blue-wavelength energy. H:308 is genuine violet: same atmosphere, no blue shift. Your eye reads the bg as "deep dark" not "blue-grey cold."
  • L:0.16 — targets ~22 cd/m², which research identifies as the optimal background luminance for dim environments. Below L:0.10 causes LCD blooming and pupil overdilation. Above L:0.22 in a dim room causes contrast glare.
  • C:0.025 — low chroma creates atmosphere without oppression. The violet is felt, not seen.

3. APCA contrast

Nishiru uses APCA (Advanced Perceptual Contrast Algorithm) — not the broken WCAG 2.x ratio. WCAG 2.x far overstates contrast for dark colors and is documented as unreliable for dark mode design. APCA accounts for three things WCAG ignores: polarity (which color is text vs bg), font weight, and font size.

Element APCA Lc Threshold
Primary text Lc 90 Preferred for body text
Syntax accents Lc 72–89 Above Lc 60 minimum
Punctuation Lc 61 Above Lc 60 minimum
Comments Lc 38 Intentionally dim — annotations, not content
Ghost text Lc 30 Above Lc 15 invisibility threshold
Borders Lc 18–28 Above Lc 15 visibility minimum

4. Helmholtz–Kohlrausch effect

Highly saturated colors appear brighter than their mathematical luminance. APCA does not correct for this. Nishiru does. High-chroma strings (himal) and types (marigold) are computed at C:0.12 — below the point where the HK effect distorts perceptual balance. No token shouts.

5. Blue light and melatonin

Two categories of accents were shifted specifically to reduce blue-wavelength output:

  • Aparajita (variables) shifted from H:265 (deep blue) to H:285 (violet-blue). Blue light at 415–455nm has documented melatonin suppression effects. Violet at H:285 reads as blue to human vision but carries less of this wavelength band.
  • Fuji (functions) shifted from H:172 (cyan, 480nm) to H:175. Research identifies 460–530nm cyan wavelengths as maximally stimulating the intrinsically photosensitive retinal ganglion cells (ipRGCs) responsible for circadian disruption. A 3° hue shift moves fuji out of this peak band without any visible color change.

6. Color vision deficiency safety

~8% of men have deuteranomaly or deuteranopia — difficulty distinguishing red from green. Nishiru's git decorations are designed for full CVD safety:

  • Added → aparajita blue H:285 — blue is universally preserved in CVD
  • Modified → soul purple H:295 — preserved in all CVD types
  • Deleted → sindoor red H:22 — distinguishable even in protanomaly
  • Untracked → fuji teal H:175 — distinct from both blue and purple

Hue separation between Added and Modified is 10°. Between Added and Deleted it is 263°. Maximum possible discrimination at every git state.

Additionally, constants were shifted from yellow H:82 to amber H:65 — off the blue-yellow axis that affects ~30% of neurodivergent users (tritan CVD correlation with ASD/ADHD per 2024 research).

7. Triadic color harmony

The three primary syntax roles form a mathematically exact color triad — 120° spacing on the OKLCH hue wheel:

Soul    H:295  (keywords)    ──  120°  ──  Fuji H:175  (functions)
                                                     │
                                                    120°
                                                     │
                                           Marigold H:55  (types)

Triadic schemes offer harmonious yet visually striking contrast — the palette feels intentionally designed rather than assembled.

8. Syntax hierarchy by luminance tier

Three deliberate tiers — your eye naturally reads code by importance:

Tier L value Colors Role
Primary L:0.88 marigold, himal Types and strings — most-read content
Structural L:0.82 soul, fuji, aparajita Keywords, functions, variables — scaffolding
Secondary L:0.76 clay, kurenai, sakura Numbers, warnings, decorators — present when needed

9. Semantic consequence coloring

Inspired by Poimandres' semantic-first approach — keywords are colored by semantic consequence, not syntax category:

Token Color Reason
void throw delete sindoor red Object destruction — highest consequence
new himal green Object creation — life
import export fuji teal Dependency graph — distinct from control flow
const readonly rosewater amber Immutability — golden rule
null undefined rosewater amber Literal absence — same family as constants

10. Neurodivergent accessibility

ADHD is associated with enhanced neural response to blue-yellow chromatic stimuli. Tritan color deficiency correlates with ASD/ADHD in ~30% of cases. Nishiru addresses both:

  • All accent chroma capped at C:0.14 — below the documented overstimulation threshold
  • Constants moved off the blue-yellow axis (H:82 → H:65 amber)
  • No two adjacent syntax roles share the same hue family within 30° OKLCH separation

Variants — full detail

Nishiru (base)

#171422 — oklch(0.16, 0.025, H:308)

The void. The night sky over Mithila at 2am. Background and soul purple (H:295) are 13° apart on the hue wheel — they share a family. Purple accents float on the background as though they belong there.

Nishiru Storm

#0f0c1c — oklch(0.10, 0.020, H:308)

4 stops darker than the base. Designed for OLED screens where true-near-black saves battery and maximizes contrast. Accents are lifted to L:0.88 across all roles to maintain visibility on the ultra-dark canvas. Not for everyone — for developers who want the deepest void.

Nishiru Mist

#201e38 — oklch(0.22, 0.018, H:305)

The fog between day and night. 6 stops lighter than base, lower chroma C:0.018. All accents pulled to C:0.11 — everything muted slightly. For coding in a bright room or during afternoon hours when maximum contrast feels harsh. Inspired by Ayu Mirage's relationship to Ayu Dark.

Nishiru Washi

#f6f2e4 — oklch(0.97, 0.010, H:90)

Light mode. Named after 和紙 — handmade Japanese paper that is warm cream, not clinical white. Background H:90 (warm yellow-cream) instead of H:0 (pure white). Text #1a1430 — deep violet-black ink. All accents darkened to Lc ≥ 60 on the cream background. Reading code on washi paper — the daylight counterpart of the void.


Cultural roots

Three traditions. Ten words each.

मिथिला — Mithila art's bold Kachni lines map to keyword color structure.

नेपाल — Sindoor vermillion anchors errors. Sayapatri marigold anchors types.

日本 — 間 (ma) negative space informs comment dimming. 紫 (murasaki) is soul.


Color palette

Name Hex Role OKLCH
soul #d4b0ff Keywords L:0.82, H:295
fuji #38ecc8 Functions L:0.82, H:175
marigold #f0c84a Types L:0.82, H:55
himal #58ecac Strings L:0.82, H:158
aparajita #9eb6ff Function calls L:0.82, H:285
variable #8abcf8 Variables L:0.79, H:222
clay #e8a870 Numbers L:0.80, H:50
sindoor #f57a6a Errors L:0.80, H:22
kurenai #ff8aa0 Warnings L:0.80, H:10
rosewater #ffcc66 Constants L:0.86, H:65
sakura #f8a0c4 Decorators L:0.80, H:355

Installation

Via marketplace:

  1. Open VS Code
  2. Ctrl/Cmd + Shift + X → search Nishiru
  3. Install → Ctrl/Cmd + K Ctrl/Cmd + T → select variant

Via VSIX:

code --install-extension nishiru-1.0.0.vsix

Build from source

All 4 variants are generated from a single file:

node build-variants.js

Edit the palette object at the top — all variants update simultaneously.


License

MIT — Sumit Jha, 2025


Built from OKLCH mathematics, APCA contrast science, CVD research, and three cultural traditions.
निशि · 見る · नीशि — night-seeing
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft