Files
l0ng-ai 9cc83c77b8 feat(plugins): plugin contributions in the IDE's own settings and menus; official plugins published with releases
- Themes: a plugin theme is an `appearance.theme` value
  (`plugin:<id>/<theme>`), offered by Settings › Appearance (and the
  preferred themes of Sync with OS), Quick Switch, the toolbar gear menu and
  Welcome › Customize. The project window selects it in the plugin host;
  picking a built-in theme clears it. While its plugin is off, the built-in
  theme of its kind shows and the choice is kept.
- File icon themes: chosen in Settings › Appearance › File icon theme and
  kept in `appearance.fileIconTheme`, so every window follows.
- Keymap: plugins' default shortcuts show in Settings › Keymap as the
  defaults of their actions: removable, changeable, resettable and part of
  conflict checks.
- Problems: a plugin's problems are withdrawn when it stops, fails, is
  disabled or uninstalled. Settings › Inspections lists them under Plugins by
  plugin name; stored overrides of `plugin:` producers parse correctly.
- Status bar items of plugins are named in the status bar menu and can be
  hidden.
- Languages added or removed by plugins refresh Override File Type, the
  Code Style pages and Inspections without a restart.
- Uninstalling a plugin deletes the secrets it declared.
- The Settings window follows plugin changes made elsewhere.
- The plugin system is marked Preview (Settings › Plugins, README); Harbor
  Night is versioned 0.1.0 like the other official plugins.
- Release: the official plugins are packed, signed (secret
  PLUGIN_SIGNING_KEY) and indexed into the release as
  `plugins-index.json`; released builds use it as the default marketplace.
  Without the key the step is skipped.
2026-11-04 02:41:46 +08:00
..

Harbor Night

An OpenIDEA theme plugin, Harbor Night: a dark theme with slate surfaces, a teal accent and a warm syntax palette. It is also where new themes start: openidea-plugin new --template theme copies its theme files, or copy this folder. Full documentation, the token reference and porting guides are in docs/plugins/themes.md.

harbor-night/
├─ plugin.toml                          # manifest: id, name, version, the theme files
└─ themes/
   ├─ harbor-night.theme.json           # UI colours, every themeable token, grouped like tokens.css
   └─ harbor-night.scheme.json          # editor colour scheme: syntax, editor, ANSI colours

A theme plugin is data only: no code, no WebAssembly, no build step.

Make your own

  1. Run openidea-plugin new --template theme, or copy the folder, for example to ~/openidea-themes/my-theme.
  2. In plugin.toml, change id (lowercase, a-z 0-9 - _ .), name, description, authors and the two paths.
  3. Rename the theme files. In the theme file, set id, name and kind ("dark" or "light", the built-in base for anything you leave out).
  4. Edit the colours. Each key is a CSS variable from src/styles/tokens.css, and the reference in the docs gives the Islands Dark and Light values. Comments (//, /* */) are allowed. Delete a line to keep the built-in value.

Porting an IntelliJ theme? pnpm theme:import-intellij <file.theme.json> [file.icls] --out <dir> in the OpenIDEA repository generates a package in this layout.

Package and install

The folder is the package. To share it, publish the folder as a Git repository or a zip that users extract.

  1. In OpenIDEA open Settings › Plugins, click the gear menu and choose Install Plugin from Disk… (or run the Install Plugin from Disk… action), then pick the folder that contains plugin.toml.
  2. Select the plugin in the Installed tab and press Apply next to the theme.
  3. Use Default Theme in the same place goes back to the built-in theme.

Iterate

Put (or symlink) the folder in <project>/.openidea/plugins/ of an open project. It loads as a dev plugin, and Reload in Settings › Plugins (or the Reload Plugins action) re-reads your edits without reinstalling. Invalid JSON or values are reported in Settings › Plugins with the file and line.

Licence

Harbor Night is part of OpenIDEA (Apache-2.0). When you port someone else's theme, keep its licence and credit its authors.