Repository structure
The otter-shell organization has one git repo per component. The monorepo folder on disk is a checkout layout, not one repo. Commit and push per component.| Repository | Type |
|---|---|
otter-bar, otter-launcher, otter-term, … | Applications |
otter-ui, otter-render, otter-wayland, … | Shared libraries |
otter-zenith | Debian packaging and release assembly |
.deb packages for PikaOS.
Architecture
- Describe layout with otter-ui Surface Description nodes
- Emit draw commands into a CommandList (otter-render)
- Rasterize with quad_renderer to Wayland SHM buffers (otter-wayland)
Requirements
- Zig 0.16.0: required by all Otter packages
- System dev libraries:
libwayland-dev,libfontconfig-dev,libfreetype-dev,libxkbcommon-dev - Optional:
libpam0g-dev(lock/greeter),libghostty-vt-dev-git(terminal), FFmpeg dev (recorder) - A wlroots-based compositor with
zwlr_layer_shell_v1for most UI apps
Config convention
Apps read~/.config/otter-shell/<app>.conf. Shared styling is in ~/.config/otter-shell/theme.conf. See Configuration overview.
Workspace-only components
In the source tree but not packaged inotter-shell or otter-shell-extras:
otter-dock: application dock with magnificationotter-hypr: Hyprland layout and titlebar companionotter-theme-gen: wallpaper-reactive theme generator
Next steps
- Building from source: compile any component locally
- Creating an app: start a new app with Otter libraries
- Libraries overview: stack diagram and compile flags
- Individual library pages under Libraries in the sidebar

