I got a Quest 3 and wanted PC VR on Linux without SteamVR. It works — better than I expected.
The stack
- WiVRn — streaming server on the PC, client app on the Quest. Works over WiFi or a USB cable; I use the cable.
- xrizer — for games that speak OpenVR (the SteamVR API), translates it to OpenXR. Games that speak OpenXR natively skip it and talk to WiVRn directly.
- Lutris + umu + Proton — same as my flat games.
No Steam, no SteamVR, no ALVR. The chain is either
game → Proton → xrizer → WiVRn → headset or, for OpenXR games, game → Proton → WiVRn → headset.
What runs
| Game | API | Notes |
|---|---|---|
| Half-Life: Alyx | OpenVR → xrizer | Needs the -vr launch argument. Texture memory one step below max, or it runs out of VRAM. |
| Vertigo 2 | OpenVR → xrizer | The first game I got running through the Lutris setup. |
| Gunman Contracts | OpenVR → xrizer | Just works. |
| Wanderer: The Fragments of Fate | OpenXR | Stay on the custom graphics preset — the top preset crashes the GPU. |
| Skydance’s BEHEMOTH | OpenXR | Needs the -steam launch argument, or it tries the Oculus entitlement check and quits. |
| Ghost Town VR | OpenXR | Sound needs routing to the headset once (see below). |
| SpaceEngine | OpenVR → xrizer | VR is a setting in its config, not a launch flag. The working directory must be the game root. |
| Resident Evil 7 | OpenXR (mod) | Flat game + REFramework VR mod. Must run in DX11. |
Flat games made VR: Resident Evil 7
REFramework loads itself as dinput8.dll, which the game pulls in on its own — no injector needed.
On Linux that only takes WINEDLLOVERRIDES=dinput8=n,b. Delete the mod’s openvr_api.dll and it
uses OpenXR straight to WiVRn.
Switch the game to DX11. And turn the mod’s “force anti-aliasing” option off: RE Engine renders some effects at half resolution in a dither pattern and needs TAA to clean it up — without it, everything has a fine checkerboard over it.
Standalone on the Quest
The Simpsons: Hit & Run — a fan port that runs on the Quest itself. You copy your own game files onto the headset. The files must be vanilla: if yours come with a mod launcher pre-installed, strip it first.
Desktop in the headset
wayvr puts my Linux desktop into the headset as floating windows, and WiVRn starts it automatically. Handy for checking something without taking the headset off.
Watching on the big screen
Anyone in the living room can watch: Sunshine on the PC streams the desktop (with the game’s mirror window) to Moonlight on the living-room PC and the projector.
The catch is audio. Sunshine makes its own sink the default when a stream starts, games follow the default, and the headset goes silent. The fix is routing the game’s audio to both the headset and the stream — PipeWire’s WirePlumber remembers the choice per game.
What doesn’t work (yet)
- HITMAN 3 — needs one OpenVR function (
GetPosesForFrame) that xrizer, OpenComposite and VapoR all leave unimplemented. There’s an experimental xrizer branch; watch it. - Hogwarts Legacy via UEVR — the mod injects, but no frames ever reach the headset. DX12 is the wall.
The settings that matter
- Check which API a game uses before configuring it:
openvr_api.dllin the game folder means OpenVR (→ xrizer); anopenxr_loader.dlland no OpenVR means native OpenXR (→ no xrizer). - Set WiVRn’s encoder to
nvencexplicitly. Onautoit picked a software encoder and everything was a black screen. gamescope: falsefor VR games in Lutris, or the game gets captured into a nested compositor and never reaches the headset.PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1so the game can see WiVRn from inside Proton’s container. Don’t setXR_RUNTIME_JSONto a host path.- Launch the real exe. Unreal games often have a tiny launcher shim in the root folder; point
Lutris at
...-Win64-Shipping.exeinstead. - Open the firewall port (9757) for WiFi. The headset finds the PC via mDNS and then waits forever if the port is blocked. Over USB it doesn’t matter.
- No sound in the headset? The game’s audio went to the default output. Move it once to
wivrn.sink(pactl move-sink-input) and WirePlumber remembers it. - Watch VRAM. A big game plus WiVRn’s encoder plus the desktop fills the card fast; that shows up as texture glitches and judder, not as an error.
- Turn off automatic hand tracking on the Quest, or hands vanish whenever it switches from controllers to hands.
On the list
Blade & Sorcery, Red Matter 2, Into the Radius 2 and The Room VR are installed but untested.