Making themes

A theme is a folder with a theme.json and, if you like, a stylesheet: colours for Caspian's window, menus, popovers and its own pages, laid over one of the built-in presets. Websites are untouched. Zip it to install; publish it through the store to get the verified badge.

theme.json

Two fields are required, name and version, and a theme needs colours or a style. Everything else is optional.

theme.jsonjson
{
  "name": "Nord",
  "version": "1.0.0",
  "author": "You",
  "description": "The Nord palette over the dark theme.",
  "homepage": "https://www.nordtheme.com",
  "icon": "icon.png",
  "base": "dark",
  "colours": {
    "bg": "#2e3440", "bgAlt": "#3b4252", "surface": "#434c5e", "border": "#4c566a",
    "text": "#eceff4", "textMuted": "#a3aab8", "hover": "#4c566a", "pressed": "#5e6779",
    "accent": "#88c0d0"
  },
  "style": "theme.qss"
}
base

"dark" or "light": the preset the theme builds on. It fills in whatever the theme leaves out, tells sites which colour scheme you prefer, and picks which accent swatches apply.

colours

Any of bg (window, tab strip, address field), bgAlt (toolbar, menus, cards), surface (selected tab, inputs), border, text, textMuted, hover, pressed, accent and accentText (derived from the accent when absent).

style

A Qt stylesheet appended after Caspian's own, for the few things colours can't say — radii, borders. Same rules and tokens as a mod's window stylesheet.

id

32 letters a–p. Optional: the store assigns one; without it the id is derived from the name, so a theme installed from its zip and later from the store is one theme.

Trying it

Zip the folder (the folder itself may be the zip's only top-level entry) and use Install a theme… on caspian:themes; it becomes the active theme. While editing, the installed copy lives under %LOCALAPPDATA%\Caspian\themes\<id> on Windows (~/Library/Application Support/Caspian/themes on macOS): edit it there and click the theme's card again to re-read it.

Private windows keep their tint
A theme colours normal windows; private windows keep their own dark violet look so the mode stays unmistakable. The user's accent choice is overridden while a theme with its own accent is active.

Publishing

Upload the zip in the store's admin like an extension. The store reads theme.json, marks the listing as a theme, and signs the package; Caspian installs it into the Theme row with the verified badge. Until then, share the zip — it installs from a file just the same, without the badge.