How lovefromhsd/hsdwl works
hsdwl is a Wayland compositor and desktop manager built on wlroots. Its principal workflow is accepting Wayland or X11 client surfaces, managing them as views in workspaces, and presenting those workspaces on outputs; users interact through keyboard and pointer input. Distinct desktop features include staged workspace organization, tab groups, overview, layer-shell surfaces, and window decoration/capture. The sampled code confirms server setup, view handling, pointer operations, stage rendering, and overview capture; some links to unsampled modules are therefore omitted.
Main entry points: stage.c Stage manager · server.c Compositor server · view.c Window views · pointer.c Pointer handling
Components 25
Compositor runtime
- Process entry
src/main.c - Compositor server
src/server.c - Configuration
src/config.c
Client surfaces
- Window views
src/view.c - XWayland support
src/xwayland.c - Layer surfaces
src/layer-shell.c - Window decoration
src/deco.c
Workspace management
- Workspace state
src/server.c - Stage manager
src/stage.c - Stage sidebar
src/stage-sidebar.c - Tab groups
src/tab-group.c - Tab layout
src/tab-group-layout.c
Interaction and effects
- Pointer handling
src/pointer.c - Input handling
src/input.c - Wayland seat
src/seat.c - Workspace overview
src/expo.c - Animations
src/animation.c - View capture
src/view-capture.c
Display and shell
- Output management
src/output-management.c - Output rendering
src/output.c - Wallpaper
src/wallpaper.c
Other components
- Desktop user
- Wayland clients
- X11 clients
- Input devices
Connections 28
- Process entry → Compositor server: starts
- Compositor server → Configuration: loads
- Compositor server → Wayland seat: initializes
- Compositor server → Wallpaper: loads
- Wayland clients → Window views: provide surfaces
- X11 clients → XWayland support: connect through
- XWayland support → Window views: creates views
- Wayland clients → Layer surfaces: request surfaces
- Window views → Workspace state: occupy
- Window views → Window decoration: display with
- Desktop user → Input devices: operates
- Input devices → Input handling: deliver events
- Input handling → Pointer handling: dispatches pointer
- Input handling → Wayland seat: dispatches input
- Pointer handling → Window views: moves and focuses
- Pointer handling → Tab groups: manipulates
- Pointer handling → Workspace overview: controls
- Stage manager → Stage sidebar: renders
- Stage manager → Workspace state: organizes
- Stage manager → Tab groups: manages
- Tab groups → Tab layout: updates layout
- Workspace overview → Workspace state: captures desktops
- Workspace overview → View capture: uses captures
- Stage manager → View capture: captures views
- Stage manager → Animations: animates transitions
- Tab groups → Animations: animates changes
- Compositor server → Output rendering: configures
- Output management → Output rendering: manages