docs: render How-it-works diagram with Mermaid
This commit is contained in:
@@ -20,23 +20,27 @@ Plugs into your dock — external monitors turn on, built-in turns off. Unplug
|
|||||||
|
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
```
|
```mermaid
|
||||||
┌─ Hyprland: socket2 .socket2.sock ──────┐
|
flowchart LR
|
||||||
compositor ───┤ ├──▶ monitor-lets-go daemon
|
subgraph WM["Compositor"]
|
||||||
└─ Sway: i3 IPC $SWAYSOCK ────────────┘ │
|
HYPR["Hyprland<br/>socket2 .socket2.sock"]
|
||||||
hotplug events │
|
SWAY["Sway<br/>i3 IPC $SWAYSOCK"]
|
||||||
┌───────────────────────────────
|
end
|
||||||
│ debounce 1200ms
|
|
||||||
│ determine state (portable/docked)
|
HYPR -->|hotplug events| DAEMON["monitor-lets-go daemon"]
|
||||||
│ apply layout
|
SWAY -->|hotplug events| DAEMON
|
||||||
│ run hooks
|
|
||||||
└──────────────┬───────────────
|
subgraph LOOP["Event loop"]
|
||||||
│
|
DAEMON --> DEBOUNCE["debounce 1200ms"]
|
||||||
┌────────▼────────┐
|
DEBOUNCE --> STATE["determine state<br/>(portable / docked)"]
|
||||||
│ systemd │
|
STATE --> APPLY["apply layout"]
|
||||||
│ watchdog 30s │
|
APPLY --> HOOKS["run hooks"]
|
||||||
│ restart 1s │
|
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
|
1. **Startup** — daemon queries connected monitors, determines portable/docked, applies layout
|
||||||
|
|||||||
Reference in New Issue
Block a user