Files
Frametop--frametop/pointer/dashpatch/run.sh
T
DeeJanuzandClaude Opus 5.5 6d0c542bb8 pointer: a dashboard patch lets the treadmill move SteamVR's windows
SteamVR's dashboard starts a floating window's move only for a press from
the head or a hand: UndockedOverlay.startFloatingWindowMove reads the
pressing device from the mouse event's CapsLock/NumLock bits and logs "mouse
event carried no input path" for anything else. So the 3D mouse as a
treadmill clicked and resized SteamVR's windows but couldn't move them, the
regression since 2026-10-09.

pointer/dashpatch wraps the grab bar's handler in the dashboard page: a
press with no device runs it as the right hand, with that pose answered by
/user/treadmill, and the move then follows /user/treadmill.
frametop-dashpatch.service puts it in over the dashboard's debugger, again
whenever SteamVR restarts. The installer turns the debugger on at
127.0.0.1:8089 (not 8087, which SteamOS forwards to the network on 8088);
the uninstaller turns it off if Frametop turned it on.

Headset test 2026-10-13: window moves with the treadmill role work.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:23:04 -06:00

26 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Install, start, stop, or inspect the dashboard patch (ft-dashpatch.py) on the Frame.
# Usage: pointer/dashpatch/run.sh install|uninstall # user service, starts with SteamVR; install also
# # turns on SteamVR's dashboard debugger (127.0.0.1:8089)
# pointer/dashpatch/run.sh start|stop|restart|status|log [lines]
set -euo pipefail
root=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
. "$root/scripts/_env.sh"
frame="$root/scripts/frame.sh"
unit=frametop-dashpatch.service
case ${1:-status} in
install)
fill_template "$root/pointer/dashpatch/$unit" | on_frame "mkdir -p ~/.config/systemd/user && cat > ~/.config/systemd/user/$unit"
on_frame "chmod +x pointer/dashpatch/ft-dashpatch.py"
on_frame "/usr/bin/python3 -I pointer/dashpatch/ft-dashpatch.py on" || true
"$frame" --host "set -e; systemctl --user daemon-reload; systemctl --user enable $unit
$(start_with_steamvr $unit)" ;;
uninstall)
"$frame" --host "systemctl --user disable --now $unit 2>/dev/null; rm -f ~/.config/systemd/user/$unit; systemctl --user daemon-reload; echo removed"
on_frame "/usr/bin/python3 -I pointer/dashpatch/ft-dashpatch.py off" || true ;;
start|stop|restart) "$frame" --host "systemctl --user $1 $unit; systemctl --user is-active $unit" ;;
status) "$frame" --host "systemctl --user is-active $unit" || true; on_frame "/usr/bin/python3 -I pointer/dashpatch/ft-dashpatch.py status" || true ;;
log) "$frame" --host "journalctl --user -u $unit --no-pager -o cat -n ${2:-30}" ;;
*) echo "usage: $0 install|uninstall|start|stop|restart|status|log" >&2; exit 2 ;;
esac