VR Headsets
Gnoblin can show your desktop in a VR headset. VR is an optional extension, gnoblin-vr, that you install next to Gnoblin. Plug a headset in and Gnoblin starts the right OpenXR runtime for it.
Two kinds of headset work, and each needs one runtime package:
| Headset | How it connects | Runtime package |
|---|---|---|
| Tethered: Valve Index, HTC Vive, Sony PSVR2, Pimax, Windows MR | A display cable (DisplayPort or HDMI) and USB | Monado (monado) |
| Standalone: Meta Quest 1, 2, 3, 3S and Pro, Pico 4, Vive Focus | A USB cable or Wi-Fi, streaming from the computer | WiVRn (wivrn) |
A tethered headset's display connector is leased to the runtime, so it never appears as a monitor on your desktop. A standalone headset runs a small app that receives the picture over the link.
Install
Install gnoblin-vr and the runtime for your headset. For a Quest, Pico or Vive Focus over USB, also install adb (the android-tools package). On Fedora:
sudo dnf install gnoblin-vr monado wivrn android-toolsIf your distribution has no WiVRn package, build the copy pinned in the Gnoblin source tree:
make vr-streamer INSTALL=1Turn it on
Enable the headset watcher, then load the default policy from your Lua configuration.
systemctl --user enable --now gnoblin-vr-watch.service
mkdir -p ~/.config/gnoblin/lua
cp /usr/share/gnoblin-vr/lua/gnoblin-vr*.lua ~/.config/gnoblin/lua/-- ~/.config/gnoblin/config.lua
require("gnoblin-vr-session").auto()Reload with gnoblinctl reload. To keep the streamer off until a headset is plugged in by USB, pass { streamer = "usb" }. The default "always" keeps it running so a headset can find the computer over Wi-Fi.
Connect a headset
A tethered headset comes up when you plug in both cables. Nothing else is needed.
A standalone headset needs one-time setup in the headset:
- Install the WiVRn app on the headset from its store, or install the APK with
adb install. - For USB, turn on developer mode for the headset in its phone app, plug the cable in, and accept the USB debugging prompt inside the headset.
- For Wi-Fi, start the WiVRn app. Gnoblin shows a pairing PIN in the
wivrn-serverlog;journalctl --user -u gnoblin-vr-runtime@wivrnprints it.
After that, plugging the cable in starts the stream, and the WiVRn app finds the computer on its own over Wi-Fi.
Check what Gnoblin sees
gnoblinctl output listEach headset is an output with kind = "xr". Its state says what to do next:
| State | Meaning |
|---|---|
waiting | Tethered USB is present but no display connector is leasable. Check the display cable. |
detected | A standalone headset is on USB and has no stream yet. The diagnostic field says why. |
ready | A tethered display can be opened. |
connected | A standalone headset is streaming to the computer. |
running | The OpenXR session is active and drawing to the headset. |
gnoblin-vr --devices prints the same list as the watcher sees it, and gnoblin-vr --connect retries the USB link by hand.