Field defaults
Every field needs a default. Partial on-disk configs are fine.Nested structs
Flatten intheme.conf / app .conf files with underscores:
config.clock.enabled, config.clock.time_format.
Optional colors
- Explicit value in app config
- Matching
otter-themetoken - Compiled default on the struct
Enums
Use Zig enums for constrained choices (Position { top, bottom }, bar widget alignments). Config file uses the enum field name without quotes.
Adding a new app config
- Add
src/myapp.zigwithpub const Config = struct { ... }. - Re-export from
root.zig. - Load in the app with
otter_conf.load(Config, ...). - Add a tab in
otter-settings/src/tabs.zigthat edits the same struct. - Document user-facing keys in the app page under Apps or Desktop.
otter-assist, otter-dock) out of packaged install docs unless explicitly marked.
