Publishing themes

Themes are shared as plugins. A theme plugin is data only: it has no main script, asks for no permissions, and never runs code.

Package a theme as a plugin · 0:03
Description

A theme of your own open in the theme editor. Plugin downloads it as a plugin package — a data-only theme pack — and the editor says to install it or publish it from Manage plugins.

Package layout

midnight-themes/
├── manifest.json
└── themes/
    ├── midnight.json
    └── dawn.json
{
  "id": "acme.midnight",
  "name": "Midnight Themes",
  "version": "1.0.0",
  "description": "A dark and a light theme in deep violet.",
  "contributes": {
    "themes": [
      { "id": "acme.midnight.dark", "label": "Midnight", "path": "themes/midnight.json" },
      { "id": "acme.midnight.light", "label": "Dawn", "path": "themes/dawn.json" }
    ]
  }
}

Each theme file uses the theme format. The id and label in the manifest override any id or name in the file.

Rules:

  • Theme ids: each theme id must start with the plugin id followed by a dot.
  • Code is optional: a plugin can contribute themes and have a main script and commands too.
  • JSON bundles: a single-file bundle puts theme objects under themes, keyed by path: { "manifest": {…}, "themes": { "themes/midnight.json": {…} } }.

The theme editor's Plugin button builds this package for you from any theme.

Installing

Install the .zip from ⋯ → Manage plugins… → Install from file. Its themes appear in the theme menu right away. Disabling or removing the plugin removes its themes. If one was active, PopCraft switches back to PopCraft Dark.

In the desktop app you can also drop the package, or an unpacked folder, into your plugins/ assets folder. A single theme doesn't need a plugin at all: put its .json file in the themes/ folder (see Theme editor).

Marketplace

Publish theme plugins like any other plugin; see Publishing. Theme-only plugins ask for no permissions.

To publish from a repository with GitHub Actions, see Publish from CI. The Comic Noir example is a complete semi-dark theme pack.