bindgesture swipe:3:left/right -> workspace next_on_output/prev_on_output,
keeping swipes confined to the current monitor's workspace block.
Verified against installed sway 1.12 with 'sway -C'.
- Restore desktop DP-3=primary/DP-2=secondary workspace mapping that
broke when workspace routing switched from name-matching to raw
geometric ordering.
- Extract shared laptop/desktop detection + output ranking into
lib-outputs.sh (battery presence selects the profile automatically),
sourced by both select-workspace.sh and the new apply-outputs.sh, so
keybind routing and monitor placement can never disagree.
- Add apply-outputs.sh: on the laptop, automatically positions whatever
external display is plugged in (and re-runs on hotplug via swaymsg
-t subscribe), making it primary. No-op on the desktop, which keeps
its static fixed-arrangement config.