- 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.