Theme
A theme is a collection of settings that define the overall look and feel of your rice. Themes combine your palette, style, wallpaper, and more, and are the main way to switch between different desktop appearances.
Themes are stored in PIMP_CONFIG_DIR/themes/THEME_NAME/theme.json
and can be easily created, edited, and shared.
Directory structure
Here's what a theme directory looks like:
You can edit the current theme with:
Or a specific theme:
Theme structure
A theme is composed of:
All of this is configured in a theme.json
file:
Wallpaper
The wallpaper
field sets the background image for your theme. You can specify a mode
(e.g. fill
, fit
), which defaults to fill
if omitted.
Modes
A theme can have multiple modes (e.g. dark
, light
). Each mode can have its own palette, wallpaper, and style.
A mode is composed of:
- Palette
- Wallpaper (optional)
- Style (optional)
Example:
You can reference a global palette using from_global
:
Or define a palette inline:
Style
The style
field lets you override or extend the base style for the whole theme or for a specific mode. You can also inherit from a global style using from_global
:
Tags
Tags are used to categorize and filter themes, for example when using pimp random
.
Schema validation & autocomplete
Each theme.json
includes a $schema
field for JSON schema validation and editor autocomplete. This helps you write correct themes and get suggestions in supported editors.
Tips & Tricks
- Use global palettes and global styles to keep your themes DRY and consistent.
- You can override any field at the theme or mode level.
- Use tags to organize your themes and make random selection more fun.
- See the theme_dict page for how everything is merged and passed to modules.