How shark-empire/mitos-gui works
MITOS GUI is a Rust Wayland compositor and desktop shell. Its main workflow is: users and Wayland clients provide input and surfaces; the compositor manages outputs, workspaces, and windows; the shell and renderer compose the desktop; and the backend presents frames. The graph also captures documented configuration, launching, notifications, screenshots, accessibility, and session-authentication capabilities. The README documents several subsystems whose implementation was not sampled; their paths use the existing source files named there, and uncertain internal wiring is omitted.
Main entry points: main.rs Compositor loop · keyboard.rs Keyboard actions · session_ipc.rs Session IPC · input.rs Input routing
Components 22
Compositor Core
- Compositor loop
src/main.rs - Compositor state
src/state.rs - Window manager
src/wm.rs
Desktop Shell
- Shell layout
src/desktop.rs - App launcher
src/shell_interaction.rs - Live config watcher
src/config_watcher.rs - Glass theme
src/theme.rs
Graphics and Input
- DRM backend
src/drm_backend.rs - Desktop renderer
src/renderer.rs - Input routing
src/input.rs - Keyboard actions
src/keyboard.rs - Touch gestures
src/gestures.rs
System Services
- Session IPC
src/session_ipc.rs - Auth prompts
src/auth.rs - Notifications
src/notifications.rs - Service readiness
src/notify.rs - Screenshots
src/screenshot.rs
Accessibility
- AT-SPI provider
src/atspi.rs
Other components
- Desktop user
- Wayland clients
- mitos-session
- Screen reader
Connections 25
- Desktop user → Input routing: provides input
- Wayland clients → Compositor loop: submit surfaces
- Compositor loop → Compositor state: updates
- Compositor loop → DRM backend: runs backend
- DRM backend → Desktop renderer: presents frames
- Compositor loop → Desktop renderer: renders scene
- Compositor loop → Window manager: dispatches requests
- Input routing → Keyboard actions: routes keys
- Input routing → Touch gestures: routes gestures
- Keyboard actions → Window manager: controls windows
- Keyboard actions → App launcher: launches apps
- Keyboard actions → Session IPC: requests lock
- Compositor loop → Shell layout: uses layout
- Compositor loop → Live config watcher: watches config
- Live config watcher → Compositor state: updates settings
- Desktop renderer → Glass theme: reads theme
- Compositor loop → Session IPC: polls messages
- Session IPC → mitos-session: exchanges IPC
- Compositor loop → Auth prompts: updates prompts
- Session IPC → Auth prompts: delivers auth events
- Compositor loop → Notifications: dispatches notifications
- Compositor loop → Screenshots: handles capture
- Compositor loop → Service readiness: signals readiness
- Compositor loop → AT-SPI provider: syncs shell state
- AT-SPI provider → Screen reader: exposes accessibility