fix(docking): make workspace and lid transitions atomic
All checks were successful
Check / eval (push) Successful in 3m19s
All checks were successful
Check / eval (push) Successful in 3m19s
Restore the old flake's external-only workspace handoff, protect closed-lid cable removal with a verified low-level logind inhibitor, and use monitor-added as the settled audio reprobe boundary. Verified: V2 — nix flake check --no-build; docking-ux, option-docs, and template-sot checks; KVM tools/monitor-fallback.nix lifecycle test. V3 pending: closed-lid BenQ round 4 in agent/HARDWARE-QUEUE.md.
This commit is contained in:
@@ -110,6 +110,15 @@ iteration would otherwise rediscover.
|
||||
check onto the whole return set or lazy attr access skips it.
|
||||
|
||||
## Design invariants
|
||||
- **Dock transitions are ordered safety operations (#100):** dock in one
|
||||
`hyprctl --batch` (external on → every internal workspace moved → focus
|
||||
external → internal off); undock enables internal *before* moving anything.
|
||||
The Hyprland watcher, not a shell-pipeline subshell, owns a low-level
|
||||
`handle-lid-switch` inhibitor until the lid is physically open; startup
|
||||
cleans a validated stale process group. HDMI availability may appear only
|
||||
as `change:sink`, so fresh `monitoradded` is the intent boundary for the
|
||||
settled PipeWire/WirePlumber reprobe + sink pick; generic audio changes must
|
||||
not override a manual in-dock speaker choice.
|
||||
- **Waybar status is never color-only** (item 28 sweep, iteration #69):
|
||||
every status module must distinguish its states by SHAPE (glyph) or
|
||||
presence (self-hide), never color alone — good/warn/bad collapse under
|
||||
|
||||
Reference in New Issue
Block a user