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:
@@ -54,6 +54,28 @@ the **T14s** (webcam case).
|
||||
`journalctl --user -t nomarchy-display-watch` should show
|
||||
`outputs-changed added=…`, and `-t nomarchy-dock-audio`
|
||||
`trigger=jack selected=…` on a headphone plug.
|
||||
|
||||
**Round 5 was itself run and failed (2026-07-14); this entry now covers
|
||||
round 6.** Two of the four reports were never actually testing the fix:
|
||||
both watchers are Hyprland `exec-once`, so `nomarchy-home` swaps the
|
||||
config but leaves the *old* processes running — only `nomarchy-dock-audio`
|
||||
(a user service) had picked up new code. **Relogin is mandatory before
|
||||
testing either watcher**; confirm with `tr '\0' '\n' < /proc/$(pgrep -f
|
||||
bin/nomarchy-display-profile-watch)/cmdline | sed -n 2p` and grep the
|
||||
script for `outputs-changed`. The other two were real and are fixed in
|
||||
the commit carrying this entry: automatic dock mode did not exist at all
|
||||
(the watcher auto-*undocked* but only ever matched display profiles on
|
||||
plug, and this box has none saved with `displayProfileAuto` unset, so
|
||||
nothing happened — `Dock mode` was interactive-only), and the BenQ's
|
||||
audio was unreachable because WirePlumber had `alsa_card.pci-0000_c3_00.1`
|
||||
pinned to `pro-audio`, whose raw `pro-output-N` sinks have no ports and
|
||||
no routing. The BenQ's own USB card is input-only (all profiles
|
||||
`sinks: 0`), so DisplayPort is the only path to its speakers.
|
||||
**Also check:** no display profile is saved, yet plugging the BenQ must
|
||||
now dock by itself; and `journalctl --user -t nomarchy-dock-audio` shows
|
||||
`repaired-card=alsa_card.pci-0000_c3_00.1 profile=HiFi` on the first
|
||||
plug, after which audio reaches the monitor's speakers. A saved+matching
|
||||
display profile must still win over auto-dock.
|
||||
- [ ] **Docking recovery round 4 (#100, closed-lid BenQ sequence)** — after
|
||||
updating to the commit carrying this entry, run `nomarchy-home` and
|
||||
relogin. With the lid open, put visible windows on at least workspaces
|
||||
|
||||
Reference in New Issue
Block a user