mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 01:00:06 +02:00
SteamVR's tools find SteamVR from a terminal in the Frametop desktop
The desktop has its own XDG_CONFIG_HOME (~/.config/frametop), and SteamVR's tools and OpenVR read their path registry from there. So from a terminal in the desktop: - pointer/driver/install.sh (install.sh step 4, every reinstall or update from Konsole) wrote a new registry, ~/.config/frametop/openvr/openvrpaths.vrpath, with only our driver and "runtime": null, and never registered the driver with SteamVR. That stray file then hid SteamVR from every OpenVR program started in the desktop. - scripts/update-check.py (and so doctor.sh and report.sh) reported OpenVR "can't connect to SteamVR as a background app" (VRInitError_Init_PathRegistryNotFound, or InstallationNotFound with the stray file) and "vrcmd --overlays lists no overlays". A user's report of 2026-10-05 showed both, with SteamVR and Frametop's services fine. - ft-layout's vrcmd calls (the gamescope backend) found no overlays. They now run with XDG_CONFIG_HOME=~/.config: the driver installer (install, uninstall, probe, aimhere), update-check.py (for all its checks: nothing there reads the desktop's own config), report.sh's vrpathreg show, and ft-layout's vrcmd. report.sh doesn't set it for the whole report, since session/fix-panels.py --check reads the desktop's Plasma config through it. The driver installer also removes the stray registry (only vrpathreg's, with no runtime), and update-check.py warns about one. And vrpathreg runs `xdg-open vrmonitor://driverinstalled` to tell SteamVR's desktop monitor, which the Frame doesn't have: in the desktop that showed "could not read file vrmonitor://driverinstalled" on every install. A stand-in xdg-open on its PATH takes it, so install.sh no longer filters the step's output. Tested in a fake HOME with a copy of SteamVR's registry, a stray one, and the desktop's XDG_CONFIG_HOME: the new installer removes the stray file, registers the driver in the copy, and never reaches xdg-open; the old one wrote the stray file, left the copy alone, and ran xdg-open. update-check.py from that environment: OpenVR and vrcmd ok (the old one fails both); its stray-registry warning fires on a seeded file. ft-layout's vrcmd: 119 overlays (was 0). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d39fbb9146
commit
307e2b7308
6 files changed
+40
-9
No files matched your search
+2
-1
@@ -26,7 +26,8 @@ for u in frametop-input-relay frametop-pointer frametop-power; do
|
||||
done
|
||||
echo "desktop: $(pgrep -x ft-screens >/dev/null && echo running || echo 'not running'), plasmashell: $(pgrep -c plasmashell || true)"
|
||||
echo "paused for VR games: $(cat /run/user/$(id -u)/frametop-pause.json 2>/dev/null || echo 'no (never paused since boot)')"
|
||||
LD_LIBRARY_PATH=/opt/steamvr/bin/linuxarm64 /opt/steamvr/bin/linuxarm64/vrpathreg show 2>/dev/null | sed -n '/xternal/,$p'
|
||||
# SteamVR's config folder: a terminal in the desktop has the session's own (docs/design.md).
|
||||
XDG_CONFIG_HOME=$HOME/.config LD_LIBRARY_PATH=/opt/steamvr/bin/linuxarm64 /opt/steamvr/bin/linuxarm64/vrpathreg show 2>/dev/null | sed -n '/xternal/,$p'
|
||||
|
||||
section "What Frametop needs from SteamOS (scripts/update-check.py)"
|
||||
python3 "$repo/scripts/update-check.py" 2>&1 || true
|
||||
|
||||
@@ -35,6 +35,9 @@ KNOWN_GOOD = os.path.join(HOME, ".local/state/frametop/known-good.json")
|
||||
STEAMVR_BIN = "/opt/steamvr/bin/linuxarm64"
|
||||
LAUNCHER = os.path.join(HOME, ".local/share/applications/deckard-nested-desktop.desktop")
|
||||
VRPATHS = os.path.join(HOME, ".config/openvr/openvrpaths.vrpath")
|
||||
# The Frametop desktop has its own XDG_CONFIG_HOME (session/frametop-session.sh). An install from a
|
||||
# terminal there, before pointer/driver/install.sh set SteamVR's, left vrpathreg's registry here.
|
||||
STRAY_VRPATHS = os.path.join(HOME, ".config/frametop/openvr/openvrpaths.vrpath")
|
||||
BACKLIGHT = "/sys/class/backlight/ae94000.dsi.0/brightness" # as in power/ft-powerd.cpp
|
||||
EYE_MMAP = "/dev/shm/eye-server.mmap"
|
||||
VRSERVER = "http://127.0.0.1:27062" # its web socket: input/vrws.py
|
||||
@@ -227,6 +230,14 @@ def check_host():
|
||||
else:
|
||||
report("FAIL", "pointer driver", "not registered with SteamVR; run pointer/driver/install.sh install, "
|
||||
"then restart SteamVR")
|
||||
try:
|
||||
with open(STRAY_VRPATHS) as f:
|
||||
stray = json.load(f).get("runtime") is None
|
||||
except (OSError, ValueError, AttributeError):
|
||||
stray = False
|
||||
if stray:
|
||||
report("warn", "OpenVR path registry", f"{STRAY_VRPATHS} has no SteamVR in it, and hides SteamVR from "
|
||||
"OpenVR programs started in the Frametop desktop; pointer/driver/install.sh install removes it")
|
||||
|
||||
session = launcher_session()
|
||||
if session is None:
|
||||
@@ -474,6 +485,8 @@ def main():
|
||||
# A terminal in the desktop has its session's runtime dir and bus; systemctl needs the real ones.
|
||||
os.environ["XDG_RUNTIME_DIR"] = f"/run/user/{UID}"
|
||||
os.environ["DBUS_SESSION_BUS_ADDRESS"] = f"unix:path=/run/user/{UID}/bus"
|
||||
# And its own config folder, where SteamVR's path registry isn't: OpenVR and vrcmd need ours.
|
||||
os.environ["XDG_CONFIG_HOME"] = os.path.join(HOME, ".config")
|
||||
|
||||
versions = current_versions()
|
||||
check_versions(versions)
|
||||
|
||||
Reference in new issue
Block a user