Semantic tokens
Six tokens describe the meaning of a color, not its exact shade. That indirection is what lets a theme swap cleanly and what keeps system colors consistent across the app.
When a label or status references
accent or success, it’s pointing at these tokens — so re-theming recolors every entity that uses them at once.
Light and dark mode
A theme defines its base colors for light mode, then overrides only what needs to change in dark mode through adark object. You never have to restate values that stay the same.
dark replaces its base counterpart; everything else carries over. Synti follows your OS light/dark preference by default.
Color formats
Token values accept hex (#8b5cf6, or with alpha #8b5cf6cc), rgb() / rgba(), hsl(), oklch(), and CSS named colors.
How themes are layered
Synti resolves a theme by precedence, from highest to lowest:- Workspace theme — a theme set on a specific workspace.
- App default — your chosen default for the app.
- Override file — partial customizations in
~/.synti/theme.json. - Preset theme — the bundled or installed base theme.
Storage locations
theme.json apply live — Synti picks them up without a restart, which makes it easy to dial in a color.
Workspace themes
Open Settings → Appearance → Workspace Themes to give a workspace its own look, or leave it on the app default. This is handy for telling a “work” workspace apart from a “personal” one at a glance.Override file
~/.synti/theme.json is a partial theme: every field is optional, and only the tokens you list override the active preset. It’s the least invasive way to nudge a single color — for example, changing just accent — without maintaining a full theme.
Preset themes
A preset is a complete theme package. Alongside its colors it carries metadata:name, description, author, license, source, supportedModes (which light/dark variants it provides), and shikiTheme for code-block syntax highlighting. Install one under ~/.synti/themes/ and select it as your app default or per workspace.
Scenic mode
Scenic mode turns the window into an immersive full-bleed background with translucent glass panels floating over it. Set"mode": "scenic" and give a backgroundImage (a local filename or a URL).
paper, navigator, input, popover, and popoverSolid — so panels stay readable over the image. Synti runs scenic mode in dark mode to keep contrast against the backdrop.
Because scenic mode enforces dark surfaces, choose a
backgroundImage with enough contrast that light text on glass panels stays legible.Colors
Assign system tokens or custom colors to individual entities.
Icons
Theme-aware SVGs recolor to match your active tokens.