Tarnished
A dark gold VS Code theme with cinematic git overlays and a looping background track.
Theme
Warm void black (#0B0907) rather than neutral grey, with a deliberate colour hierarchy:
| Role |
Colour |
| Keywords, tags, module symbols |
gold #E8C56A |
| Functions and methods |
pale gold #F5E2A7 |
| Types, classes, interfaces |
jade #7FA69C |
| Numbers, constants, attributes |
bronze #B08442 |
| Strings |
parchment #D9C9A3 |
| Variables |
bone #C8D2C2 |
| Comments |
ash #5F5C52, italic |
| Errors |
#B8484A |
Gold accents carry through the cursor, active line number, tab top border, activity bar,
scrollbar and focus rings. Bracket pairs cycle gold → jade → bronze → sage. Semantic
highlighting is on, so Pylance and similar language servers drive the finer colours.
The outline panel and IntelliSense glyphs (symbolIcon.*) follow the same palette.
File icons
A matching file icon theme: 20 hand-drawn SVG glyphs covering 77 extensions, keyed to the same
palette — jade for Python, gold for JS and markup, bronze for data and archives, parchment for
prose, blood red for git files. Enable it with Preferences: File Icon Theme → Tarnished.
Product icons
A product icon theme replacing VS Code's own UI glyphs — activity bar, chevrons, close, play,
search, terminal, gear, diagnostics — with 24 drawn in the same geometric language as the file
icons. The font is generated in build_producticons.py and matches codicon.ttf metrics
(300 units/em, baseline at the icon's foot). Icons not defined here keep VS Code's defaults.
Enable with Preferences: Product Icon Theme → Tarnished.
Markdown preview
Markdown previews get serif gold headings, a fading rule under the title, gold list markers,
bronze-bordered code blocks and quote bars. Body colours come from the active theme's own
variables, so previews stay readable if you switch away from Tarnished.
Wallpapers
Three abstract 2560×1440 wallpapers — ring, ashfall, grace — generated from primitives in
build_wallpapers.py. Tarnished: Save wallpapers to Desktop copies them out for use as a
desktop background; the welcome view (Tarnished: Open welcome) uses one at random as its own
background.
Point tarnished.wallpaper.folder at a folder of your own images to use those instead, in both
the welcome view and — with tarnished.overlay.background set to wallpaper — as a dimmed
backdrop behind overlay text. Only the generated wallpapers ship with the extension; anything in
your own folder stays on your machine.
VS Code has no supported way to put an image behind the editor itself. Extensions that do it
patch the workbench HTML, which trips the "installation is corrupt" warning and breaks on
updates, so this extension does not attempt it.
Fonts
Cormorant Garamond (SIL Open Font License) ships with the extension and is used by the
overlay and welcome views, loaded as a webview resource — remote @import is blocked inside
webviews, so a bundled file is the only reliable route.
Victor Mono ships with the extension (SIL Open Font
License). Run Tarnished: Set up the editor font and it installs the four faces into your
user font directory — ~/Library/Fonts on macOS, %LOCALAPPDATA%\Microsoft\Windows\Fonts plus a
per-user registry entry on Windows, ~/.local/share/fonts and fc-cache on Linux. No admin
rights, nothing touched system-wide, and it sets editor.fontFamily for you.
Its cursive italics are the reason it is the default suggestion: this theme italicises comments,
so they render as script.
Fonts are read once when VS Code starts, so fully quit and reopen afterwards — "Reload
Window" is not enough. The fallback chain keeps Nirmala UI so Devanagari still renders.
Overlays
A full-screen overlay on git events, in four styles:
- pushed — gold, a light bar opening from centre, shimmer sweep, drifting embers
- grace — a quieter golden bloom, no band
- felled — a bright sheet wiping across behind the text
- death — crimson, slower, heavier grain
Each builds from the same stage: film grain, vignette, blur-to-sharp letter reveal with the
tracking tightening as it lands, and a slow scale across the full duration. prefers-reduced-motion
disables the motion.
Push fires an overlay by default. Commit and task-failure overlays are off until you set them.
Preview any style from the command palette: Tarnished: Preview '…' overlay.
Background music
A looping track, started from the status bar control or Tarnished: Toggle background music.
Volume is configurable, and tarnished.music.playOnStartup starts it with the editor.
One track ships with the extension: "Breves dies hominis", a solo vocal setting of a
12th–13th century Latin piece, performed by Magdalen Kadel and released under
CC0 via OpenGameArt. The composition
is public domain by age and the recording is public domain by licence.
Point tarnished.music.file at any other file to use your own instead.
Playback uses ffplay (from ffmpeg) when available, which handles looping and volume on every
platform. On Windows without ffmpeg it falls back to Windows Media Player's COM interface.
Settings
| Setting |
Default |
|
tarnished.overlay.enabled |
true |
Master switch for overlays |
tarnished.overlay.onPush |
pushed |
Style after a successful push |
tarnished.overlay.onCommit |
none |
Style after a commit |
tarnished.overlay.onTaskFailure |
none |
Style when a task exits non-zero |
tarnished.overlay.duration |
6000 |
Milliseconds on screen |
tarnished.overlay.soundFile |
"" |
Sound played with the overlay |
tarnished.overlay.text.* |
|
Overlay wording per event |
tarnished.music.file |
"" |
Looping background track |
tarnished.music.volume |
35 |
0–100 |
tarnished.music.playOnStartup |
false |
Start the track on launch |
tarnished.music.showStatusBarItem |
true |
Status bar play/stop control |
Audio and licensing
Everything that ships here is public domain:
- Background track — "Breves dies hominis", performed by Magdalen Kadel, CC0 via
OpenGameArt. The composition is
12th–13th century, public domain by age.
- Overlay sounds — short excerpts from "Fantasy Choir" by César da Rocha, CC0 via
OpenGameArt, cut and
fade-shaped for use as UI stingers.
tarnished.overlay.soundFile and tarnished.music.file override these with your own audio.
Game soundtracks are copyrighted and are not redistributed here; point those settings at files
you have the right to use.
Building
python build.py # regenerates themes/tarnished-color-theme.json and media/icon.png
npx @vscode/vsce package # produces tarnished-<version>.vsix
The palette lives in build.py; edit it there rather than in the generated theme file.
Licence
MIT. Not affiliated with, endorsed by, or derived from any game or its publisher.