Before we begin:
If you missed out on TWinL 103 go watch it, Michael covered Collabora’s latest XRDesktop release that’s turning GNU/Linux into a first-class VR citizen and they’re only just getting started:
The Google Cardboard problem:
While XRDesktop’s developments are going to be amazing for HUD devices like the Valve Index we’re still at a loss for a Google Cardboard option because every emulator (ex: TrinusVR and VRidge) are only designed for Windows and even if they worked on Linux there’s no SteamVR app supporting a Linux desktop viewer. Over the years i’ve seen some mini-projects crop up but they never seem to make it past alpha and have long since depreciated.
With a lot of research and toying around last year I achieved a Linux VR Desktop by partnering TigerVNC (which was the fastest and let me share the existing X session (:0)) with an Android app named “VR Remote Desktop” which renders VNC connections in Cardboard view. Because I was sharing an X session it also meant I could use the machine’s keyboard and mouse without having to pass it through the connection. It was workable… but not great, videos bigger than 240p would lag pretty heavily but the magic sauce was:
x0vncserver -passwordfile ~/.vnc/passwd -display :0 -SecurityTypes VncAuth -Geometry 1920x1080 -ZlibLevel 2 -NeverShared -AcceptKeyEvents=0 -AcceptPointerEvents=0 -SendCutText=0 -AcceptCutText=0
Note: This was just for testing and used over reverse tether, anyone looking to use this should look at tunneling over SSH or isolating better.
Here comes WebRTC!!:
Today I completed an idea I had more than a year ago, to pass the Linux Desktop over WebRTC to an Android and render it in Google Cardboard view using WebVR via A-Frame with Firefox on both ends. I just watched a full screened 1080p movie in VR coming from my Debian machine with almost zero lag over wireless G. I need to do some tweaks and get the phone on gigabit LAN but this is looking damn good and i’m literally ecstatic lol.
This’ll be free & open sourced but there’s years of layered up experimental code that needs cleaning out so not quite today :). If anyone’s building their own version i’d be happy to help too. I’ll also do my best to make this work for the Pinephone as soon as i’m able to get one. Thank you to the people who frequent this forum, DL and Michael. Since I joined late last year it’s had a huge impact.