How exs-lab/exs-shell works
exs-shell is a GTK4 desktop shell for the Niri Wayland compositor. Its main runtime brings up system services and shell UI; users interact through shell surfaces or issue optional IPC commands that the running process dispatches. The tree and sampled code support the service registry, MPRIS controller, settings/configuration interaction, and IPC dispatch. Other listed UI modules are documented by their paths, but their internal wiring was not sampled, so those connections are intentionally not inferred.
Main entry points: services.py Desktop services · server.py IPC server · state Shared service state · cli exs CLI
Components 22
Startup and IPC
- exs CLI
exs_shell/cli - IPC server
exs_shell/controllers/ipc/server.py
System services
- Service initialization
exs_shell/app/init/before/services.py - Desktop services
exs_shell/app/init/before/services.py - Appearance service
exs_shell/ui/services/appearance.py - Idle service
exs_shell/ui/services/idle.py - Battery tracker
exs_shell/ui/services/battery_tracker.py
Shell surfaces
- Bar and widgets
exs_shell/ui/modules/bar - Launcher
exs_shell/ui/modules/launcher - Control center
exs_shell/ui/modules/control_center - Media controller
exs_shell/ui/modules/control_center/inners/controllers/mpris/controller.py - Notifications
exs_shell/ui/modules/notification - On-screen display
exs_shell/ui/modules/osd - Workspaces
exs_shell/ui/modules/workspaces
Settings and state
- Settings UI
exs_shell/ui/modules/settings - User configuration
exs_shell/configs/user
Runtime infrastructure
- Command registry
exs_shell/state - Application startup
exs_shell/app/init - Shared service state
exs_shell/state
Other components
- Desktop user
- Niri compositor
- Desktop system
Connections 20
- Desktop user → exs CLI: issues command
- exs CLI → IPC server: sends IPC
- IPC server → Command registry: looks up command
- IPC server → Command registry: dispatches command
- Application startup → Service initialization: initializes services
- Service initialization → Desktop services: gets defaults
- Service initialization → Appearance service: gets default
- Desktop services → Shared service state: stores services
- Appearance service → Shared service state: stores service
- Niri compositor → Desktop services: provides compositor service
- Desktop system → Desktop services: provides desktop data
- Shared service state → Media controller: provides MPRIS
- Desktop user → Settings UI: changes preferences
- Settings UI → User configuration: updates options
- Desktop user → Bar and widgets: interacts
- Desktop user → Launcher: interacts
- Desktop user → Control center: interacts
- Desktop user → Notifications: views alerts
- Desktop user → On-screen display: views status
- Desktop user → Workspaces: switches workspace