Skip to main content
otter-desktop supplies desktop integration through leaf modules grouped under otter_desktop.dbus, .apps, .sys, and .pam. Services own their handles and receive environment/I/O explicitly when needed. Callers process readiness and observe state rather than storing callback/userdata pointers into movable application structs.

Package boundaries

  • otter_desktop: D-Bus, XDG applications/icons, system state, optional PAM.
  • otter_desktop_pipewire (otr/pipewire/): audio client, playback, capture, video sources.
  • otter_desktop_lua (otr/lua/): host-registered Lua desktop modules.
PipeWire is static by default; the separate package can select pipewire=system. Applications not using audio avoid that dependency. D-Bus uses vendored basu; PAM remains option-gated. Lua modules expose specific reads and capability-gated actions. A plugin cannot infer permission to launch, change audio, or power off from permission to inspect public state.

Reference pages

Source reference

otr/otr.toml, otr/ in the component repository.