YAML theme trees for ThemeWeaver. Each subdirectory of themes/ is one theme. The folder name is the theme id used by the CLI (export, validate, etc.).
Each theme directory has three files:
| File | Role |
|---|---|
theme.yaml |
Metadata (display name, description, author, variants, tags) |
colorsystem.yaml |
Palette definitions (primary/secondary/syntax/group, etc.) |
mappings.yaml |
Semantic UI and syntax slot references; optional css_overrides for Spyder help CSS |
| Theme | Description |
|---|---|
Brutalism (brutalism) |
Brutalism palette inspired in the brutalist architecture |
Catppuccin Mocha (catppuccin-mocha) |
A personal version of the Catppuccin theme, Mocha variant |
Dracula (dracula) |
Based on the Dracula color palette by Zeno Rocha |
Gruvbox (gruvbox) |
A personal version of the classic Gruvbox theme |
IDLE (idle) |
A personal version of the default theme from the famous Idle editor |
Inkpot (inkpot) |
A port of the Vim InkPot theme |
Miami Nights (miami-nights) |
Synthwave / Miami Nights palette from JupyterLab Miami Nights (timkpaine) |
Monokai (monokai) |
A personal version of the popular Monokai theme |
Notepad++ (notepad++) |
A personal version of the default theme from the Notepad++ editor, originally from Eclipse |
Obsidian (obsidian) |
A personal version of the Obsidian theme from Eclipse |
Solarized (solarized) |
Based on the Solarized color palette by Ethan Schoonover, enhanced with a wider range of colors |
Spyder (spyder) |
The original Spyder theme, based on the default QDarkStyleSheet color palette |
Zenburn (zenburn) |
A low-contrast color scheme easy for your eyes and designed to keep you in the zone for long programming sessions |
Run all pixi / CLI commands from the ThemeWeaver repository root (the directory that contains pyproject.toml and this themes/ folder). The tools resolve themes/ relative to the current working directory unless you pass --theme-dir.
- Install Pixi and run
pixi installin the repo root. - Python and dependencies are provided by the Pixi environment (see the main README).
generate writes theme.yaml, colorsystem.yaml, and mappings.yaml under themes/<name>/. It does not write to build/; use export after you are satisfied.
You need six seed colors in order: primary, secondary, error, success, warning, group (see the table in Theme generation in the main README). Each color must be #RRGGBB (six hex digits; shorthand #RGB is not accepted).
Minimal example:
pixi run generate my_theme \
--colors "#1e1e2e" "#b4befe" "#f38ba8" "#a6e3a1" "#fab387" "#eba0ac" \
--display-name "My Custom Theme"Other inputs:
- YAML definition:
pixi run generate my_theme --from-yaml theme-definition.yaml(see From a YAML definition file). - Syntax seeds or full 17-color syntax lists, editor bold/italic:
--syntax-colors-dark,--syntax-colors-light,--syntax-format, or the equivalent fields in the YAML definition.
Useful flags: --overwrite, --output-dir <path> (if not ./themes, pass --theme-dir to export / validate), --variants dark light, --no-validate-contrast.
Full detail: Theme generation, Syntax colors, Syntax format.
pixi run validate my_theme
pixi run validate-contrast my_theme
pixi run export my_theme # dark + light into build/
pixi run export-dark my_theme # dark only
pixi run export-light my_theme # light onlyvalidate checks YAML structure; validate-contrast checks colors against bundled Spyder UI rules. Export uses QDarkStyle and writes assets under build/, including Spyder help default.css per variant. Themes may override help CSS color mappings via optional css_overrides in mappings.yaml (see Help CSS overrides).
Shell quoting: If the theme id contains characters the shell treats specially (e.g. notepad++), quote it:
pixi run export 'notepad++'You may hand-edit colorsystem.yaml, mappings.yaml, and theme.yaml after generation or as a fully manual theme. A heavily commented reference for syntax slot layout is catppuccin-mocha/colorsystem.yaml (CatppuccinMochaSyntaxDark / CatppuccinMochaSyntaxLight).
Optional css_overrides in mappings.yaml replace built-in help CSS color map entries. Omit the section to keep defaults (the spyder theme has none). Example:
css_overrides:
--hover-color: COLOR_ACCENT_2
--border-color:
dark: Primary.B60
light: Primary.B100After edits, run validate / validate-contrast and export again.
pixi run list-themes
pixi run theme-info solarizedThe underlying CLI subcommand for listing is list (pixi run cli list).
- Preview (Qt): export first, then
pixi run previewfrom the repo root (see Quick start). - Dev sync:
pixi run dev-sync <name>exports and copies into an editablespyder_themestree for a fast edit loop (see Dev sync). - Local deploy:
pixi run deploy-local <name>exports that theme, then packages everything already underbuild/and installs editable (see Local deploy). - Spyder wheel/sdist:
exportorexport-all, thenpixi run package(see Spyder Python package).
Palette, gradient, and interpolation commands are documented under Color utilities. They print to stdout and do not modify themes/ unless you copy values yourself.