Replace the built-in battery module with a custom/battery script that
combines sysfs capacity/status with the power1 reading from `sensors`,
displaying it as "85% (5.4W)" next to the icon.
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.