Where themes live
Redmine looks for themes in two locations:stylesheets/application.css:
The
themes/ directory at the root of your Redmine installation ships with only a README file. This is the correct place to install third-party themes.How Redmine loads themes
Redmine scans the theme directories once at startup (lazy-loaded on first access) and builds a list ofRedmine::Themes::Theme objects. Each Theme object exposes:
| Attribute/method | Description |
|---|---|
id | Directory name, used as the theme identifier |
name | Human-readable name (id.humanize) |
path | Absolute filesystem path to the theme directory |
stylesheets | Array of CSS file names (without extension) in stylesheets/ |
javascripts | Array of JS file names (without extension) in javascripts/ |
images | Array of image file names in images/ |
favicon | First file found in the favicon/ directory, or nil |
current_theme helper (included in ApplicationHelper) reads the Setting.ui_theme value and returns the matching Theme object:
Asset paths
Theme assets are served from the paththemes/<theme_dir>/. For example, a theme in themes/my_theme/ serves its stylesheet at:
stylesheets/application.css in every page when the theme is active. If the theme directory contains a file javascripts/theme.js, it is also included automatically:
Switching themes
- Place your theme directory (containing
stylesheets/application.css) inside<redmine_root>/themes/. - Restart Redmine if it is running in production mode.
- Go to Administration > Settings > Display.
- Select your theme from the Theme dropdown.
- Click Save.
Default theme
When no theme is selected (the setting is blank), Redmine uses the styles compiled intoapp/assets/stylesheets/. Theme authors typically use the default theme’s application.css as a baseline and override only the rules they want to change.
Creating a custom theme
Learn how to create a theme directory, required files, and how to override styles.
