Skip to content

How Themes Work

Color key structure (130 keys)

In v0.45.0, 13 text color items were added, bringing the total number of customizable keys to 130. Keys are classified into 5 types by purpose and identified by type icons in the customization screen.

Type icon Purpose Representative keys
Background Pane, panel, and row fills BackgroundBrush, NavPaneBackgroundBrush, ListRowAltBrush
Text Body, heading, status text colors TextBrush, SelectionTextColor, StatusBarTextColor, ActivePaneCellTextStyle
Border Rules, dividers, focus frames BorderBrush, AddressBarSeparatorColor, SelectionBorderBrush
Icon PackIconLucide fill IconBrush, NavPaneIconBrush
Accent Emphasis, progress, gradient AccentBrush, GlowBarBrush, ThemeAccent

The customization dialog (theme card right-click → "Customize Theme") has 7 tabbed sections (Base UI / File List / Search / Accent & Error / Context Menu / Nav Pane & Control Deck / Misc), with type-based quick filters within each tab. Free version is limited to 3 uses per day.

Live preview and save location

  • Color changes are reflected immediately via DynamicResource in App.xaml; all windows redraw (requires DynamicResource references, not StaticResource).
  • Only differences are saved to themes/_custom/{ThemeName}.json (the original themes/{ThemeName}.json is never modified).
  • Customized themes show a palette icon on the card; right-click → "Reset to Default" deletes the _custom/ file.

Theme schedule auto-switching

Auto-switches between a daytime and nighttime theme on a time-of-day basis. Configure via theme settings → Schedule with switch times and the theme for each slot. The ThemeService handles the switching logic. The switch event is broadcast as ThemeChanged (for mascot integration).

Theme Store

A community theme repository (served via Cloudflare Worker) for browsing, downloading, and rating. Upload is a Pro feature. Sort by downloads / rating / newest, with pre-apply preview. Installed themes can be diff-checked against the store version (Store Theme Diagnosis).

Automatic updates for built-in themes

The built-in 50 themes auto-download the latest versions from the store (user customizations remain independent in _custom/).

Unknown color keys

When a theme JSON is loaded, color keys the app does not recognise are ignored. A misspelled key name therefore has no effect rather than causing an error.