Skip to main content
One src/*.zig file per app or daemon, each exporting a Config struct (plus nested widget configs).
ModuleApplicationNotes
barotter-barLayoutConfig, ClockConfig, WorkspacesConfig, BatteryConfig, widgets
launcherotter-launcherAppearance, sort order, keybinds
dockotter-dockWorkspace-only, not in metapackage
notificationsotter-notificationsTimeout, position, styling
wallpaperotter-wallpaperMode, paths, transitions
osdotter-osdVolume/brightness overlay
jadeotter-jadeLayer-shell pet
logoutotter-logoutPower menu overlay
polkitotter-polkitAuth dialog chrome
lockotter-lockColors, layout, PAM, focus output
greeterotter-greeterLogin UI tokens
idleotter-idleIdle timeouts and dim
monitorotter-monitorrefresh_interval_seconds (1..3600)
transcribeotter-transcribeModel and device prefs
termotter-termFont, scrollback, palette
theme_genotter-theme-genGeneration options
assistotter-assistWorkspace-only backend settings

Monitor example

pub const Config = struct {
    refresh_interval_seconds: u16 = 3, // clamped 1..3600 at runtime
};

Assist example (workspace-only)

pub const Backend = enum { cpu, vulkan };

pub const Config = struct {
    backend: Backend = .vulkan,
    vulkan_device: i32 = -1,
    idle_seconds: u32 = 120,
};
Small tool configs (calc, emoji, clip, etc.) live in otter-tools-core app_configs.zig, not here.