Skip to content

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:

HeadsetHow it connectsRuntime package
Tethered: Valve Index, HTC Vive, Sony PSVR2, Pimax, Windows MRA display cable (DisplayPort or HDMI) and USBMonado (monado)
Standalone: Meta Quest 1, 2, 3, 3S and Pro, Pico 4, Vive FocusA USB cable or Wi-Fi, streaming from the computerWiVRn (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:

sh
sudo dnf install gnoblin-vr monado wivrn android-tools

If your distribution has no WiVRn package, build the copy pinned in the Gnoblin source tree:

sh
make vr-streamer INSTALL=1

Turn it on ​

Enable the headset watcher, then load the default policy from your Lua configuration.

sh
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/
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:

  1. Install the WiVRn app on the headset from its store, or install the APK with adb install.
  2. 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.
  3. For Wi-Fi, start the WiVRn app. Gnoblin shows a pairing PIN in the wivrn-server log; journalctl --user -u gnoblin-vr-runtime@wivrn prints 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 ​

sh
gnoblinctl output list

Each headset is an output with kind = "xr". Its state says what to do next:

StateMeaning
waitingTethered USB is present but no display connector is leasable. Check the display cable.
detectedA standalone headset is on USB and has no stream yet. The diagnostic field says why.
readyA tethered display can be opened.
connectedA standalone headset is streaming to the computer.
runningThe 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.