- Graphviz: `.dot` / `.gv` files open beside a live preview (a web view rendering with Graphviz compiled to WebAssembly) in any layout engine, with zoom, pan, Fit and SVG / PNG export through the save dialog. What Graphviz reports goes from the page to the plugin's code, which publishes it as problems on the named line. A DOT language, file icons and a New Graphviz Graph template. - Regex Tester: a tool window whose html view sends pattern, flags, text and replacement as you type; the plugin matches with Rust's regex (linear time) and answers with matches, groups and the replacement in UTF-16 offsets. Use Selection and Test Selection take the editor's selection. - License Header: files without a copyright / SPDX header are reported when they open and on save; a quick fix and a command add one in the file's comment syntax (after a shebang or encoding line); a project scan in a background task reports the rest. Holder and license are settings. - Harbor Night becomes an official plugin and the one source of the theme files: `openidea-plugin new --template theme`, the theme docs and tests start from it. - Tool windows' renders and events carry the window's active editor, as commands do, so a view's buttons can act on what the user is editing. - knip leaves plugins' web pages (projects of their own) alone.
2.5 KiB
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
- Run
openidea-plugin new --template theme, or copy the folder, for example to~/openidea-themes/my-theme. - In
plugin.toml, changeid(lowercase,a-z 0-9 - _ .),name,description,authorsand the two paths. - Rename the theme files. In the theme file, set
id,nameandkind("dark"or"light", the built-in base for anything you leave out). - 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.
- 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. - Select the plugin in the Installed tab and press Apply next to the theme.
- 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.