## Defining intro themes

A theme defines the overall appearance of the intro. It is simply a way of grouping all the presentation files (styles and images) in one place that can be pointed at or switched as one.

### Definition

To define a theme, extend your intro configuration using the `org.eclipse.ui.intro.configExtension` and use the `theme` element, as shown in the example below:

       <extension
             point="org.eclipse.ui.intro.configExtension">
          <theme
                default="true"
                id="org.eclipse.ui.intro.universal.circles"
                name="%theme.name.circles"
                path="$nl$/themes/circles"
                previewImage="themes/circles/preview.png">
             <property
                   name="launchbarBackground"
                   value="#a1c2cb"/>
             <property
                   name="launchbarOverviewIcon"
                   value="$theme$graphics/launchbar/overview16.png"/>
             <property
                   name="launchbarFirststepsIcon"
                   value="$theme$graphics/launchbar/firststeps16.png"/>
             <property
                   name="launchbarTutorialsIcon"
                   value="$theme$graphics/launchbar/tutorials16.png"/>
             <property
                   name="launchbarSamplesIcon"
                   value="$theme$graphics/launchbar/samples16.png"/>
             <property
                   name="launchbarWhatsnewIcon"
                   value="$theme$graphics/launchbar/whatsnew16.png"/>
             <property
                   name="launchbarMigrateIcon"
                   value="$theme$graphics/launchbar/migrate16.png"/>
             <property
                   name="launchbarWebresourcesIcon"
                   value="$theme$graphics/launchbar/webresources16.png"/>
          </theme>
       </extension>

Consult the schema documentation for details on all the available attributes relating to themes.

Each theme has a unique identifier, translatable name, preview image, and a path to the root theme folder. The intro plug-in does not provide any UI for theme manipulation. The only way to select a theme is via the preference `org.eclipse.ui.intro/INTRO_THEME` in plugin_customization.ini.

### Enabling themes

Theme support by itself does not make intro implementations theme-enabled. Concrete intro implementations can choose to expose themes in a more substantial way (and in fact Universal Welcome implementation does exactly that with the General > Welcome preference page.

Theme-enabled intro implementation must make all the references to style and presentation resources using the `$theme$` substitution variable. Absolute paths for images, pages, styles, etc. will be computed by resolving the substitution variable using the path of the currently active theme.