Design principles
The tenets every Slatewave theme is measured against.
Slatewave is small enough that a handful of principles can keep every theme aligned. These are the rules we apply when resolving ambiguity.
1. Coherent over distinctive
Every Slatewave theme is generated from the same palette. If a decision trades theme-to-theme consistency for a locally clever choice, the consistent option wins. A user moving from editor to terminal should experience continuity, not variety.
2. Calm over contrast
Slatewave is tuned for long sessions. Legibility matters more than pop. Saturated colors are used sparingly, always with purpose, and never layered on top of each other. The slate foundation carries most of the surface area; accents are incidents, not decoration.
3. Semantic over decorative
Each accent color means something:
- Teal — the signature. Focus, selection, and primary CTAs.
- Sky — keywords and control flow.
- Rose — constants, numbers, and errors.
- Purple — language built-ins (
this,self,super). - Amber — escape sequences, warnings, deprecations.
A theme that uses teal for errors breaks the palette.
4. One source of truth
The canonical palette lives in
vscode-slatewave/themes/slatewave-color-theme.json.
Every other theme — Obsidian, Oh My Posh, this website — mirrors from
there. When the palette changes, the VSCode theme is the source, and
everything downstream updates.
5. Open and portable
Every Slatewave theme is published in a public repo under the WTFPL — Do What The Fuck You Want To Public License, Version 2. Themes should work offline and be installable without accounts, subscriptions, or telemetry.