Skip to content

Feat/browse pcvr store button - #11

Open
moi952 wants to merge 12 commits into
Villagers654:mainfrom
moi952:feat/browse-pcvr-store-button
Open

moi952 wants to merge 12 commits into
Villagers654:mainfrom
moi952:feat/browse-pcvr-store-button

Conversation

@moi952

@moi952 moi952 commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Hey! I stumbled on this project a while back and it's been great being able to actually launch my Meta PC VR games on Linux - thanks for building it.

I ended up adding a bunch of stuff I wanted for myself, figured I'd share it back:

  • You can now browse and install any Rift/PC VR game you own on your Meta account straight from the app, instead of going to the store in a browser first
  • Redesigned the game page and added a proper full Settings screen, plus a custom title bar so the whole app looks consistent instead of mismatched OS chrome
  • Fixed a few launch bugs I hit while getting native Oculus-plugin games running under WiVRn (the Oculus runtime service wasn't staying alive under Wine, a Flatpak OpenXR runtime wasn't reachable from Steam's sandbox, and wineopenxr was wrongly disabled for XRizer-backed games)
  • When a launch fails for a known reason, it now shows up directly in the Activity log instead of only in a manually requested diagnostic report
  • I also added a translation system with user language detection; I added French.
  • I automated the script installation
  • Added an installation status in the settings

Basically, lots of cool stuff.

Installed game :
Installed-game

Not installed game :
Not-installed-game

Installation
Install

Settings page
Settings

Happy to tweak anything if you'd rather have it done differently.

@moi952
moi952 force-pushed the feat/browse-pcvr-store-button branch from e7941bc to a72677b Compare September 16, 2026 20:42
@Villagers654

Copy link
Copy Markdown
Owner

I'll give it a proper review in a bit- but at first glance, this looks awesome! Thank you for this

@moi952

moi952 commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

I'll give it a proper review in a bit- but at first glance, this looks awesome! Thank you for this

Thanks, that's great! I'm really happy with the result; I like having an interface that's nice and easy for the user to understand.

But I admit I was worried you might not be too keen on incorporating my changes 😂

Spent some time trying to get this free game running: https://www.meta.com/fr-fr/experiences/pcvr/epic-roller-coasters/2299465166734471/

It launches but never shows up in the headset. Dug into it and found the actual cause: OVRPlugin.dll (Unity's OculusXRPlugin) hits its own internal OpenXR compositor path and refuses any non-Meta OpenXR runtime with "Non-Oculus OpenXR runtime is not supported." - so it's a hardcoded vendor check on Meta's side, not a WiVRn/Monado bug (the runtime itself works fine, confirmed it separately).

Any idea if there's a way around this? I wondered if something like Revive's approach could help, but from what I could tell Revive only intercepts the classic LibOVR API (LibOVRRT64_1.dll), and this game's OVRPlugin build doesn't seem to go through that path at all for the OpenXR compositor - so not sure it actually applies here. Curious if you've run into this one before.

@moi952

moi952 commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

@Villagers654
I'm rebasing main and fixing a minor issue with the banner when I notice this message appearing. Wouldn't it be better to tuck that kind of large message behind a "See more" button in the banner—one that indicates something is wrong?
Having it displayed at the bottom doesn't look very nice.

Capture d'écran_20260916_233838

@moi952
moi952 force-pushed the feat/browse-pcvr-store-button branch from a72677b to 7de459d Compare September 16, 2026 21:57
@moi952

moi952 commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Found and fixed the XRizer error from that screenshot - turns out it's not specific to my setup, it'll hit any AppImage user.

python-appimage patches sys.executable to point at the AppImage itself (so an app can relaunch itself cleanly), but validate_openvr_library() uses sys.executable -c "..." to check the library, which ends up invoking RiftLift's own CLI instead of a real interpreter - hence the "riftlift: error: argument command: invalid choice" text showing up as "XRizer cannot load". Resolving the actual bundled interpreter via $APPDIR instead fixes it. Happy to open a PR with the fix if useful.

@Villagers654

Copy link
Copy Markdown
Owner

Spent some time trying to get this free game running: https://www.meta.com/fr-fr/experiences/pcvr/epic-roller-coasters/2299465166734471/

I went ahead fixed it by adding a compatibility layer that handles OVRPlugin’s runtime-name check and I also fixed a couple of missing Platform SDK responses that stalled startup afterward

Now let me take a look at everything else 😅

@moi952

moi952 commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Spent some time trying to get this free game running: https://www.meta.com/fr-fr/experiences/pcvr/epic-roller-coasters/2299465166734471/

I went ahead fixed it by adding a compatibility layer that handles OVRPlugin’s runtime-name check and I also fixed a couple of missing Platform SDK responses that stalled startup afterward

Now let me take a look at everything else 😅

Rift Lift is going to be awesome! There’s one issue I haven’t found a solution for: some cross-buy games never return the "PC" type, so they can’t be installed.

I’m not sure if it’s because they are free games I added today—perhaps there’s a delay before the "rights" are recognized.

It seems to be an issue on Meta’s end.

English and French string tables, used by the following commits.
Adds entitlements.py, a remove command, and description_lang tracking.
Also fixes catalog metadata fetching using a Meta game's Steam shortcut
id instead of its real store id once it's synced to Steam.
…itle bar

Merges owned and installed games into one list with install-from-detail,
adds a full Settings page (language, system status, compatibility setup),
and replaces the OS window chrome with a custom title bar.
…n games

OVRServiceLauncher.exe only probes the runtime and exits within
milliseconds under Wine instead of staying resident. Start
OVRServer_x64.exe directly instead and tear it down with the game.
Reads WiVRn's own recommended PRESSURE_VESSEL_* variables from its
server log instead of guessing them, validated by shape rather than a
fixed allow-list so future WiVRn releases don't need a RiftLift update.
XRizer already falls back gracefully without it, but disabling it
unconditionally broke other in-process Windows OpenXR clients sharing
the same Wine process, like Unity's OculusXRPlugin.
Adds quick_launch_diagnosis, plus a cause rule for Meta's OpenXR vendor
lock in OVRPlugin.dll (refuses non-Meta runtimes like WiVRn/Monado).
@moi952
moi952 force-pushed the feat/browse-pcvr-store-button branch from 4999094 to cc0764c Compare September 17, 2026 08:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants