docs: render How-it-works diagram with Mermaid

This commit is contained in:
Maksim Totmin
2026-08-06 12:33:20 +07:00
parent ab6cad0505
commit eefe7bcaf7
+21 -17
View File
@@ -20,23 +20,27 @@ Plugs into your dock — external monitors turn on, built-in turns off. Unplug
## How it works
```
┌─ Hyprland: socket2 .socket2.sock ──────┐
compositor ───┤ ├──▶ monitor-lets-go daemon
└─ Sway: i3 IPC $SWAYSOCK ────────────┘ │
hotplug events │
┌───────────────────────────────
│ debounce 1200ms
│ determine state (portable/docked)
│ apply layout
│ run hooks
└──────────────┬───────────────
┌────────▼────────┐
│ systemd │
│ watchdog 30s │
│ restart 1s │
└──────────────────┘
```mermaid
flowchart LR
subgraph WM["Compositor"]
HYPR["Hyprland<br/>socket2 .socket2.sock"]
SWAY["Sway<br/>i3 IPC $SWAYSOCK"]
end
HYPR -->|hotplug events| DAEMON["monitor-lets-go daemon"]
SWAY -->|hotplug events| DAEMON
subgraph LOOP["Event loop"]
DAEMON --> DEBOUNCE["debounce 1200ms"]
DEBOUNCE --> STATE["determine state<br/>(portable / docked)"]
STATE --> APPLY["apply layout"]
APPLY --> HOOKS["run hooks"]
end
APPLY -->|Hyprland: monitors.lua + hyprctl reload<br/>Sway: swaymsg batch| WM
SYSTEMD["systemd<br/>watchdog 30s / restart 1s"] --> DAEMON
POLL["fallback polling 5s"] --> STATE
```
1. **Startup** — daemon queries connected monitors, determines portable/docked, applies layout