Skip to main content

Bundled presets

12 comptime presets in presets.zig:
PresetStyle
Otter ShellDefault matte continuous bar
Otter Shell IslandsGrouped floating bar
Catppuccin Mocha / Latte / Frappe / MacchiatoCatppuccin family
NordArctic blue dark
Gruvbox Dark / LightRetro
DraculaPurple dark
Tokyo NightCool blue dark
One DarkAtom-inspired dark
const presets = @import("otter_theme").presets;

if (presets.findPreset("Nord")) |preset| {
    const theme = preset.theme;
}
otter-theme-gen and settings UI write preset selections into theme.conf.

Loading

Fallback chain:
  1. ~/.config/otter-shell/theme.conf
  2. /etc/otter-shell/theme.conf
  3. Compiled defaults
const theme = otter_theme.loadTheme(allocator);

var buf: [std.fs.max_path_bytes]u8 = undefined;
if (otter_theme.getThemeConfigPath(&buf)) |path| {
    // watch with inotify for hot-reload
}
loadThemeFromPath parses a specific file without the fallback chain.

Example theme.conf

colors_background = "#18182566"
colors_foreground = "#ffffffff"
colors_accent = "#89b4faff"
bar_height = 32
spacing_icon_size = 18
fonts_font_family = "Inter"
transparency_global_alpha = 95
decorations_server_side = true
Apps reload on IN_CLOSE_WRITE and re-pass Theme to the next UI frame.