mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 05:00:08 +02:00
Fix installed service and launcher paths; wait for the pointer helper
The service and menu-entry templates still pointed at the old frametop/ subfolder, so the pointer helper, input relay, and settings apps couldn't start after a clean install. The pointer helper's install step also failed when the service was still starting after 3 s; it now waits up to 20 s and doesn't abort the installer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d439bc3f25
commit
983773edbd
7 files changed
+12
-10
No files matched your search
@@ -3,7 +3,7 @@ Type=Application
|
|||||||
Name=Frametop Display Settings
|
Name=Frametop Display Settings
|
||||||
GenericName=Screens and layout for the VR desktop
|
GenericName=Screens and layout for the VR desktop
|
||||||
Comment=Number of screens, resolution, scale, and where they float around you
|
Comment=Number of screens, resolution, scale, and where they float around you
|
||||||
Exec=@REPO@/frametop/display-settings/ft-display-settings
|
Exec=@REPO@/display-settings/ft-display-settings
|
||||||
Icon=video-display
|
Icon=video-display
|
||||||
Categories=Settings;HardwareSettings;
|
Categories=Settings;HardwareSettings;
|
||||||
Keywords=display;screen;monitor;resolution;layout;arrange;steamvr;frametop;
|
Keywords=display;screen;monitor;resolution;layout;arrange;steamvr;frametop;
|
||||||
@@ -3,7 +3,7 @@ Type=Application
|
|||||||
Name=Reset Screen Layout
|
Name=Reset Screen Layout
|
||||||
GenericName=Put the VR desktop's screens back in their layout
|
GenericName=Put the VR desktop's screens back in their layout
|
||||||
Comment=Float the screens and arrange them in the layout from Frametop Display Settings
|
Comment=Float the screens and arrange them in the layout from Frametop Display Settings
|
||||||
Exec=@REPO@/frametop/layout/ft-layout apply
|
Exec=@REPO@/layout/ft-layout apply
|
||||||
Icon=view-restore
|
Icon=view-restore
|
||||||
Categories=Settings;
|
Categories=Settings;
|
||||||
Keywords=display;screen;layout;arrange;reset;steamvr;frametop;
|
Keywords=display;screen;layout;arrange;reset;steamvr;frametop;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Type=Application
|
|||||||
Name=Hide/Show Screens
|
Name=Hide/Show Screens
|
||||||
GenericName=Hide or show the VR desktop's screens
|
GenericName=Hide or show the VR desktop's screens
|
||||||
Comment=Hide the screens (and SteamVR's laser) for a VR game; press again to bring them back
|
Comment=Hide the screens (and SteamVR's laser) for a VR game; press again to bring them back
|
||||||
Exec=@REPO@/frametop/layout/ft-layout toggle
|
Exec=@REPO@/layout/ft-layout toggle
|
||||||
Icon=view-visible
|
Icon=view-visible
|
||||||
Categories=Settings;
|
Categories=Settings;
|
||||||
Keywords=display;screen;hide;show;steamvr;frametop;
|
Keywords=display;screen;hide;show;steamvr;frametop;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Type=Application
|
|||||||
Name=Frametop Input Settings
|
Name=Frametop Input Settings
|
||||||
GenericName=Mouse and keyboard settings for the 3D pointer
|
GenericName=Mouse and keyboard settings for the 3D pointer
|
||||||
Comment=Choose and map Bluetooth mice and keyboards for the SteamVR 3D pointer
|
Comment=Choose and map Bluetooth mice and keyboards for the SteamVR 3D pointer
|
||||||
Exec=@REPO@/frametop/input-settings/ft-input-settings
|
Exec=@REPO@/input-settings/ft-input-settings
|
||||||
Icon=input-mouse
|
Icon=input-mouse
|
||||||
Categories=Settings;HardwareSettings;
|
Categories=Settings;HardwareSettings;
|
||||||
Keywords=mouse;pointer;bluetooth;keyboard;steamvr;frametop;
|
Keywords=mouse;pointer;bluetooth;keyboard;steamvr;frametop;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# Template: the installer replaces @REPO@ with the repo path on the Frame.
|
# Template: the installer replaces @REPO@ with the repo path on the Frame.
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Frametop input relay: stable virtual mouse and keyboard for SteamVR
|
Description=Frametop input relay: stable virtual mouse and keyboard for SteamVR
|
||||||
Documentation=file://@REPO@/frametop/README.md
|
Documentation=file://@REPO@/README.md
|
||||||
# SteamVR opens input devices only at startup, so the virtual devices must exist first.
|
# SteamVR opens input devices only at startup, so the virtual devices must exist first.
|
||||||
Before=steamvr.service
|
Before=steamvr.service
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ Before=steamvr.service
|
|||||||
# READY=1 is sent only after the virtual devices exist.
|
# READY=1 is sent only after the virtual devices exist.
|
||||||
Type=notify
|
Type=notify
|
||||||
NotifyAccess=main
|
NotifyAccess=main
|
||||||
ExecStart=/usr/bin/python3 @REPO@/frametop/input/input-relay.py
|
ExecStart=/usr/bin/python3 @REPO@/input/input-relay.py
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=1
|
RestartSec=1
|
||||||
# systemd holds the virtual devices' file descriptors across relay restarts,
|
# systemd holds the virtual devices' file descriptors across relay restarts,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Template: the installer replaces @REPO@ with the repo path on the Frame.
|
# Template: the installer replaces @REPO@ with the repo path on the Frame.
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Frametop pointer helper: the universal 3D mouse (cursor, collision, ft_pointer driver)
|
Description=Frametop pointer helper: the universal 3D mouse (cursor, collision, ft_pointer driver)
|
||||||
Documentation=file://@REPO@/frametop/README.md
|
Documentation=file://@REPO@/README.md
|
||||||
# Needs SteamVR's IPC; it starts and stops with SteamVR.
|
# Needs SteamVR's IPC; it starts and stops with SteamVR.
|
||||||
After=steamvr.service frametop-input-relay.service
|
After=steamvr.service frametop-input-relay.service
|
||||||
PartOf=steamvr.service
|
PartOf=steamvr.service
|
||||||
@@ -10,7 +10,7 @@ PartOf=steamvr.service
|
|||||||
# Runs in the dev container (built there against its libraries). The helper process
|
# Runs in the dev container (built there against its libraries). The helper process
|
||||||
# lives in the container, so clean it up explicitly around distrobox enter.
|
# lives in the container, so clean it up explicitly around distrobox enter.
|
||||||
ExecStartPre=-/usr/bin/pkill -x ft-pointer
|
ExecStartPre=-/usr/bin/pkill -x ft-pointer
|
||||||
ExecStart=%h/.local/bin/distrobox enter dev -- @REPO@/frametop/pointer/helper/build/ft-pointer
|
ExecStart=%h/.local/bin/distrobox enter dev -- @REPO@/pointer/helper/build/ft-pointer
|
||||||
ExecStopPost=-/usr/bin/pkill -x ft-pointer
|
ExecStopPost=-/usr/bin/pkill -x ft-pointer
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=3
|
RestartSec=3
|
||||||
|
|||||||
@@ -14,8 +14,10 @@ case ${1:-status} in
|
|||||||
"$root/scripts/sync.sh" >/dev/null
|
"$root/scripts/sync.sh" >/dev/null
|
||||||
fill_template "$root/pointer/helper/$unit" | on_frame "mkdir -p ~/.config/systemd/user && cat > ~/.config/systemd/user/$unit"
|
fill_template "$root/pointer/helper/$unit" | on_frame "mkdir -p ~/.config/systemd/user && cat > ~/.config/systemd/user/$unit"
|
||||||
"$frame" --host "set -e; pkill -x ft-pointer || true
|
"$frame" --host "set -e; pkill -x ft-pointer || true
|
||||||
systemctl --user daemon-reload; systemctl --user enable --now $unit; sleep 3
|
systemctl --user daemon-reload; systemctl --user enable --now $unit
|
||||||
systemctl --user is-active $unit; tail -n 3 /dev/null; journalctl --user -u $unit --no-pager -o cat -n 3" ;;
|
# It comes up once SteamVR runs (it starts with it); distrobox enter takes a few seconds.
|
||||||
|
for i in \$(seq 20); do systemctl --user is-active --quiet $unit && break; sleep 1; done
|
||||||
|
echo \"$unit: \$(systemctl --user is-active $unit)\"; journalctl --user -u $unit --no-pager -o cat -n 3" ;;
|
||||||
uninstall) "$frame" --host "systemctl --user disable --now $unit 2>/dev/null; rm -f ~/.config/systemd/user/$unit; systemctl --user daemon-reload; echo removed" ;;
|
uninstall) "$frame" --host "systemctl --user disable --now $unit 2>/dev/null; rm -f ~/.config/systemd/user/$unit; systemctl --user daemon-reload; echo removed" ;;
|
||||||
start|stop|restart) if installed; then "$frame" --host "systemctl --user $1 $unit; systemctl --user is-active $unit"; exit; fi ;;&
|
start|stop|restart) if installed; then "$frame" --host "systemctl --user $1 $unit; systemctl --user is-active $unit"; exit; fi ;;&
|
||||||
log) if installed; then "$frame" --host "journalctl --user -u $unit --no-pager -o cat -n ${2:-30}"; exit; fi ;;&
|
log) if installed; then "$frame" --host "journalctl --user -u $unit --no-pager -o cat -n ${2:-30}"; exit; fi ;;&
|
||||||
|
|||||||
Reference in new issue
Block a user