fix(docking): dock automatically; repair cards parked on pro-audio
All checks were successful
Check / eval (push) Successful in 3m9s
All checks were successful
Check / eval (push) Successful in 3m9s
Bernardo's retest on the AMD dev box. Two of the four reports were never running the new code — both watchers are Hyprland `exec-once`, so a `nomarchy-home` switch leaves the old processes alive until relogin; only `nomarchy-dock-audio`, a user service, had picked the fix up. The journal showed the old watcher's `event=monitoradded` next to the new audio tool's `result=no-available-sink`, which is what gave it away. The other two were real. Automatic dock mode did not exist. The watcher auto-*undocked* when the last external left, but on plug it only ever matched a display profile — and with no profile saved and displayProfileAuto unset it did nothing at all, while `Dock mode` was reachable only from the menu. Half the pair being automatic is what made the dock feel broken: the session came home by itself but never left. Mirror it, letting a matched profile win as the more specific layout. The BenQ's audio was unreachable by any means because WirePlumber had the GPU's DisplayPort card pinned to `pro-audio`, whose raw `pro-output-N` sinks carry no ports, no routing and no volume — so no sink matched, nothing was selectable, and the profile is stored per card and so survived forever. The monitor's own USB card is input-only (every profile has sinks: 0), leaving DisplayPort as the only path to its speakers. Repair the card when a plug finds nothing routable, which is both the symptom and the only moment worth touching profiles: narrow to cards carrying an *available* HDMI/DP port — the monitor asking for audio over the cable — so the internal analog card is never touched and a considered pro-audio setup elsewhere survives. Verified V2: checks.docking-ux and checks.dock-audio pass with guards for both; the repair filter picks exactly the GPU card → HiFi against the dev box's live graph, leaving the BenQ USB, internal analog and Bluetooth cards alone. Hotplug itself still needs hardware — HARDWARE-QUEUE round 6, which now leads with the relogin requirement that invalidated round 5. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
10
flake.nix
10
flake.nix
@@ -957,6 +957,16 @@
|
||||
# followed explicitly or plugging in stops switching output.
|
||||
grep -q 'headphone_sinks' "$audio"
|
||||
grep -Fq '"$0" headphones jack' "$audio"
|
||||
# pro-audio/off publish no routable sink, and the profile is
|
||||
# stored per card — so a monitor's audio stays unreachable
|
||||
# however it is picked until the card itself is repaired.
|
||||
grep -q 'repair_dock_cards' "$audio"
|
||||
grep -q 'set-card-profile' "$audio"
|
||||
grep -q 'repaired-card=' "$audio"
|
||||
# Auto-undock without auto-dock leaves the pair half manual.
|
||||
grep -q 'auto_dock' "$watcher"
|
||||
grep -q 'auto-dock internal=' "$watcher"
|
||||
grep -Fq '"$TRANSITION" dock' "$watcher"
|
||||
! grep -q 'power_save' "$audio"
|
||||
echo "docking-ux: atomic display, lid inhibitor, and monitor-triggered audio reprobe present"
|
||||
touch $out
|
||||
|
||||
Reference in New Issue
Block a user