ds_noir
devShakib Noir — silver and shadow, one red, one lamp.
devshakib.jumyn.com · github.com/devShakib015

The idea
Almost everything on this screen is a step of grey, which is the point: structure reads by value, the way it does on a black and white print. Calls are the brightest white on the page and plain text sits a full step beneath them.
Colour is rationed to what a noir frame would allow: a red for keywords, a lamp-gold for types, a faded rose for numbers, and a cold moonlight grey-blue for strings so they never blur into the comments. For people who find every other theme too loud.
| role |
colour |
contrast |
keyword, storage, this |
#E8574F |
5.4:1 · italic |
| function, method |
#FFFFFF |
19.2:1 |
| type, class, interface |
#E2C688 |
11.6:1 |
| string |
#A9BCCD |
9.8:1 |
| number, constant |
#D9958C |
7.9:1 |
| property |
#B8B2A7 |
9.1:1 |
| annotation, decorator |
#B8A1C9 |
8.2:1 · italic |
| variable |
#C9C5BE |
11.1:1 |
| parameter |
#A8A49D |
7.7:1 · italic |
| comment |
#8C8983 |
5.5:1 · italic |
Italics are structural rather than decorative: comments, keywords, storage,
this, parameters, annotations and attributes are the things you skim past or
read as scaffolding, so slanting them separates them without spending a colour.
Contrast
Measured at build time, not judged by eye. tool/build_themes.py refuses to
write the theme if any syntax colour, UI label or terminal colour falls below
4.5:1 on its own background, or if two roles a reader must tell apart sit
too close together. The lowest here is the escape
colour at 5.39:1.
Font
A theme cannot set your font — editor.fontFamily is a user setting. The
italics are designed around Victor Mono, whose italic is cursive, but any
monospace face with a real italic works.
"editor.fontFamily": "Victor Mono, JetBrains Mono, monospace",
"editor.fontSize": 15,
"editor.lineHeight": 1.7
The family
| theme |
|
| ds_retro |
green CRT with colour sparks |
| ds_amber |
amber phosphor, warm and blue-free |
| ds_synthwave |
neon on deep indigo |
| ds_paper |
ink on warm paper — the light one |
| ds_blueprint |
chalk lines on a navy drawing sheet |
| ds_noir |
silver greys, one red, one gold |
Building
python3 tool/build_themes.py # the theme JSON, refused if a check fails
python3 tool/make_icon.py # icon.png and icon-512.png
python3 tool/shots.py # preview.png, drawn from the theme JSON
npx @vscode/vsce package # the .vsix
The palette is tool/palette.py. Never hand-edit the theme JSON.
By
devShakib — devshakib.jumyn.com ·
github.com/devShakib015 ·
pub.dev/publishers/jumyn.com
Licence
MIT.