Library stack
| Library | Purpose | Depends on |
|---|---|---|
| otter-utils | Bounded arrays, logging, file paths, inotify | none |
| otter-geo | Geometry types (Point, Rect, Padding, Transform) | none |
| otter-conf | Comptime config parser and hot-reload watcher | otter-utils |
| otter-render | CPU renderer, fonts, images, CommandList | otter-geo, otter-utils |
| otter-wayland | Wayland client, layer shell, input, clipboard | otter-geo, otter-render, otter-utils |
| otter-vte | Terminal cell rendering primitives | otter-geo, otter-render |
| otter-theme | Shared theme tokens and 12 presets | otter-geo, otter-render, otter-conf, otter-utils |
| otter-config-types | Typed config structs for all apps | otter-render, otter-geo, otter-conf |
| otter-tools-core | Pure-Zig helpers for small CLI tools | otter-conf, otter-utils |
| otter-desktop | XDG icons, D-Bus, PipeWire, PAM, sysinfo | otter-utils |
| otter-ui | Surface Description frame API and widgets | otter-geo, otter-render, otter-vte, otter-theme, otter-wayland, otter-utils, otter-desktop, otter-tools-core |
Compile-time flags
| Flag | Libraries affected | Effect |
|---|---|---|
-Denable_dbus=false | otter-desktop, otter-bar, otter-lock | Remove D-Bus services |
-Denable_pipewire=false | otter-desktop, otter-bar, otter-osd | Remove PipeWire audio |
-Denable_pam=false | otter-desktop, otter-lock, otter-greeter | Remove PAM auth |
-Denable_text=false | otter-render | No font/shaping |
-Dc_allocator=jemalloc|mimalloc | All with C deps | Override C allocator |
Source locations
Each library has its own repo under git.pika-os.com/otter-shell. Monorepo checkout layout:README.md for API examples and build instructions.
