IntelliJ Platform Plugin SDK Help

Theme Structure

Themes are components within IntelliJ Platform plugins. The theme plugins should be stand-alone and not combined with other plugin functionality.

Themes have several components:

  • A required Theme description (JSON) file in the plugin project's resources folder.

  • A required themeProvider declaration in the plugin's plugin.xml file, located in the plugin project's META-INF folder.

  • An optional Editor Scheme description (XML) file derived from an exported IDE editor scheme. This file is located in the plugin project's resources folder.

  • An optional background image file, located in the plugin project's resources folder.

  • Optional icon image files, located in the plugin project's resources folder.

Theme Components

Theme Description File

The most important file in every theme project is the theme description file. The content of the default file generated with the Theme wizard is a short set of key–value pairs:

{ "name": "theme_basics", "author": "", "dark": false, "editorScheme": "/theme_basics.xml", "ui": { } }
  • name key matches the first portion of the Theme description $THEME_NAME$.theme.json file name. The value of name is displayed in the Theme Preferences dropdown when the theme's plugin is installed in the IDE.

  • author - specifies the theme author (empty by default).

  • dark - determines the base theme (Light or Darcula) that is customized.

  • editorScheme - specifies the editor scheme file that describes fonts and colors used in editors (see Adding a Custom Editor Scheme for more details).

  • ui - allows for overriding the base theme (Light or Darcula) properties (see Custom UI Control Colors for more details).

The wizard also creates a themeProvider declaration in the <extensions> section of the plugin's plugin.xml file. This declaration binds the theme description file to a theme provider extension using a generated unique id.

<extensions defaultExtensionNs="com.intellij"> <themeProvider id="eb9b7461-397b-4b98-a422-224fc0a74564" path="/theme_basics.theme.json"/> </extensions>

Theme Customization

The following sections describe the theme customization possibilities in detail:

Last modified: 24 November 2022