2022-11-24 15:11:20 +01:00

3.3 KiB
Raw Blame History

Overview of a theme plugin project structure and the most important elements.

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

To see a full example theme project, see the Theme Basics in IntelliJ SDK Code Samples.

{style="note"}

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 keyvalue 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 for more details).
  • ui - allows for overriding the base theme (Light or Darcula) properties (see 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>

Do not modify or re-use an existing value of the generated id attribute.

{style="warning"}

Theme Customization

The following sections describe the theme customization possibilities in detail: