This document explains SpiritStream themes and how to create custom ones.
- Themes are JSON or JSONC files (JSON with comments).
- Each file represents a single mode:
lightordark. - If you want both variants, create two separate themes (naming is up to you;
-light/-darkis just a convention). - Built-in themes include Spirit Light and Spirit Dark.
- Custom themes are loaded from the app data themes folder and reloaded dynamically.
Notes:
idmust be lowercase alphanumeric with-or_only.modemust belightordark.- JSONC supports
//and/* */comments. - Trailing commas are not supported.
The required token list is derived from apps/web/src/styles/tokens.css.
Each theme file must include every required token in its tokens map.
Custom themes are stored in the app data directory:
- Windows:
%APPDATA%\com.spiritstream.desktop\themes - macOS:
~/Library/Application Support/com.spiritstream.desktop/themes - Linux:
~/.local/share/com.spiritstream.desktop/themes
The app watches this folder and reloads themes automatically.
- Create a
.jsonor.jsoncfile. - Open Settings > Themes.
- Click Install Theme and select the file.
If validation fails, the theme is rejected and not copied.
themes/spirit-light.jsoncandthemes/spirit-dark.jsoncare reference exports of the built-in Spirit theme.themes/theme-template.jsoncis a single-mode template with placeholders.- Replace every
REPLACE_MEvalue before installing.
- Replace every
{ "id": "sunset-light", "name": "Sunset Light", "mode": "light", "tokens": { "--bg-base": "#FAF8F5", "--primary": "#FF6A3D" // ...all required tokens } }