De ontwikkelaars van het bedrijf Collabora presenteerden het xrdesktop-project, waarin, met de steun van Valve, er wordt een bibliotheek ontwikkeld met elementen om te communiceren met traditionele desktops binnen driedimensionale omgevingen getraind met 3D-bril en virtual reality-helmen. De bibliotheekcode is geschreven in C en gedistribueerd onder de MIT-licentie. De voltooide builds zijn klaar voor Arch Linux en Ubuntu 19.04 en 18.04.
Momenteel heeft Linux al de middelen om direct virtual reality-headsets te genereren (Vulkan-extensies VK_EXT_acquire_xlib_display voor X11 en VK_EXT_acquire_wl_display voor Wayland), maar er is geen ondersteuning voor het juiste niveau van de venstertekening in 3D-ruimte en synchronisatie van de vernieuwingsfrequentie van het scherm.
Over Xrdesktop
Het doel van het xrdesktop-project is om methoden te ontwikkelen die het gebruik van klassieke interfaces in virtuele omgevingen mogelijk maken, gericht op output op een tweedimensionaal scherm en bediening met toetsenbord en muis.
De xrdesktop-componenten breiden de beschikbare venster- en composietmanagers uit met mogelijkheden om de runtime van virtual reality-systemen te gebruiken om vensters en de desktop weer te geven in driedimensionale virtuele omgevingen.
In xrdesktopwordt het idee van integratie in bestaande desktopomgevingen gepromoot zonder de noodzaak om een gespecialiseerde samengestelde beheerder te starten scheiden en toestaan dat bestaande gebruikersinstellingen die worden gebruikt met een gewone monitor, worden gebruikt met 3D-helmen.
De architectuur van het project impliceert de mogelijkheid om te integreren met elke desktop, maar in de huidige ontwikkelingsfase worden componenten geïmplementeerd om virtual reality-headsets voor KDE en Gnome te ondersteunen.
Voor KDE wordt ondersteuning voor 3D-helmen geïmplementeerd via de Compiz-achtige plug-in, en voor GNOME via een set pakketten voor GNOME Shell.
Deze componenten spiegelen bestaande vensters naar de virtuele omgeving van de 3D-helmen in de vorm van een aparte scène of in overlay-modus, waarin de desktopvensters over andere actieve virtual reality-applicaties heen kunnen worden gelegd.
Naast de representatiemechanismen, xrdesktop biedt componenten voor navigatie en invoerondersteuning met behulp van gespecialiseerde ruimtelijke controllers.
xrdesktop, op basis van informatie van VR-controllers worden invoergebeurtenissen gegenereerd gewoon, waarbij het gebruik van het toetsenbord en de muis wordt gesimuleerd.
Xrdesktop bevat verschillende bibliotheken die vensterstructuren creëren voor de VR-runtime met OpenVR, evenals een op API gebaseerd systeem voor het renderen van een volledige desktop in een 3D-omgeving.
Omdat xrdesktop geen eigen windowmanager heeft, is er werk nodig om te integreren met bestaande windowmanagers (xrdesktop kan naar elke X11- of Wayland-windowmanager worden geport).
De belangrijkste componenten van xrdesktop:
Gulkan: een eenvoudige binding voor Vulkan, die klassen biedt voor verwerkingsapparaten, shaders en het initialiseren van texturen uit geheugen of DMA-buffers.
gxr: is een API voor het abstraheren van software-interfaces om virtual reality-toepassingen te ontwikkelen. Momenteel wordt alleen OpenVR ondersteund, maar ondersteuning voor de OpenXR-standaard zal binnenkort worden toegevoegd.
libinputsynth: is een bibliotheek voor het synthetiseren van invoergebeurtenissen zoals muisbewegingen, klikken en toetsaanslagen, geïmplementeerd in de vorm van backends voor xdo, xi2 en Clutter.
xrdesktop: een bibliotheek om vensters in een 3D-omgeving te beheren, een set gerelateerde widgets en backends om de scène weer te geven.
kwin-effect-xrdesktop en kdeplasma-applets-xrdesktop: een KWin-plug-in voor KDE-integratie en een plasma-applet om KWin in uitvoermodus op een 3D-helm te zetten.
gnome-shell-patchset en gnome-shell-extension-xrdesktop: is een set patches voor Gnome om xrdesktop-ondersteuning te integreren en een plug-in om de uitvoer naar een 3D-helm in Gnome Shell te veranderen.
Het project ondersteunt verschillende methoden voor het organiseren van desktop- en vensterinteractie in een virtuele omgeving, die kan worden gebruikt om vensters vast te leggen, te schalen, te verplaatsen, te roteren, over een bol heen te leggen, vensters te ordenen en te verbergen, het bedieningsmenu te gebruiken en tegelijkertijd twee handen te besturen met behulp van meerdere controllers.