From 61502c414a5a3d7ba5872c6f575208ef8b2cdfc7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Mar 2025 19:20:17 +0000 Subject: [PATCH] deploy: ef7a26449234d8a455732776ed939b94c5216e9d --- 404.html | 4 ++-- assets/js/{2185e383.238a8fba.js => 2185e383.a6b0eab0.js} | 2 +- .../{runtime~main.c6a78d62.js => runtime~main.8ef35fd2.js} | 2 +- docs/dive-deeper/brief-overview.html | 4 ++-- docs/dive-deeper/deep-overview.html | 4 ++-- docs/dive-deeper/make-clients.html | 4 ++-- docs/dive-deeper/terminology.html | 4 ++-- docs/get-started/Quickstart.html | 4 ++-- docs/get-started/What-is-Stardust.html | 4 ++-- docs/get-started/manual.html | 4 ++-- docs/get-started/quest-3-setup.html | 4 ++-- docs/get-started/setup-openxr.html | 6 +++--- index.html | 4 ++-- roadmap.html | 4 ++-- 14 files changed, 27 insertions(+), 27 deletions(-) rename assets/js/{2185e383.238a8fba.js => 2185e383.a6b0eab0.js} (63%) rename assets/js/{runtime~main.c6a78d62.js => runtime~main.8ef35fd2.js} (98%) diff --git a/404.html b/404.html index 9a8d9920..2cd7be93 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Page Not Found | Stardust XR - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/js/2185e383.238a8fba.js b/assets/js/2185e383.a6b0eab0.js similarity index 63% rename from assets/js/2185e383.238a8fba.js rename to assets/js/2185e383.a6b0eab0.js index dd576275..bbc459e2 100644 --- a/assets/js/2185e383.238a8fba.js +++ b/assets/js/2185e383.a6b0eab0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[450],{5680:(e,t,r)=>{r.d(t,{xA:()=>u,yg:()=>h});var n=r(6540);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),m=a,h=d["".concat(p,".").concat(m)]||d[m]||g[m]||i;return r?n.createElement(h,o(o({ref:t},u),{},{components:r})):n.createElement(h,o({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>g,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=r(8168),a=(r(6540),r(5680));const i={sidebar_position:3},o="Setup OpenXR Runtime",s={unversionedId:"get-started/setup-openxr",id:"get-started/setup-openxr",title:"Setup OpenXR Runtime",description:"This guide will help you set up your VR or AR headset for use with Stardust. Although support for many headsets on Linux is still under active development, there are a number of good options available. If you already have OpenXR set up on your Linux distribution, head to the Full Installation page to get Stardust XR installed.",source:"@site/docs/01-get-started/03-setup-openxr.md",sourceDirName:"01-get-started",slug:"/get-started/setup-openxr",permalink:"/docs/get-started/setup-openxr",draft:!1,editUrl:"https://github.com/StardustXR/website/edit/main/docs/01-get-started/03-setup-openxr.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Quick Start Guide",permalink:"/docs/get-started/Quickstart"},next:{title:"Full Installation",permalink:"/docs/get-started/manual"}},p={},l=[{value:"Other options for installation",id:"other-options-for-installation",level:3}],u={toc:l},d="wrapper";function g(e){let{components:t,...i}=e;return(0,a.yg)(d,(0,n.A)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"setup-openxr-runtime"},"Setup OpenXR Runtime"),(0,a.yg)("p",null,"This guide will help you set up your VR or AR headset for use with Stardust. Although support for many headsets on Linux is still under active development, there are a number of good options available. If you already have OpenXR set up on your Linux distribution, head to the ",(0,a.yg)("a",{parentName:"p",href:"manual"},"Full Installation")," page to get Stardust XR installed. "),(0,a.yg)("admonition",{type:"info"},(0,a.yg)("p",{parentName:"admonition"},"If you want to try Stardust in a window on your existing device you can skip this step and checkout the ",(0,a.yg)("a",{parentName:"p",href:"Quickstart"},"Quick Start Guide"),". ")),(0,a.yg)("h1",{id:"envision"},"Envision"),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},(0,a.yg)("img",{alt:"Envision",src:r(2845).A,width:"500",height:"138"})),(0,a.yg)("p",{parentName:"admonition"},"We highly recommend using ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/fossvr/envision/"},"Envision"),", an easy to use GUI for utilizing ",(0,a.yg)("a",{parentName:"p",href:"https://monado.dev/"},"Monado")," which is what you likely use if you have a wired headset. Envision also comes with ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/WiVRn/WiVRn"},"WiVRn")," support for connecting to headsets like the Meta Quest wirelessly. ")),(0,a.yg)("p",null,"Check the ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/hardware/"},"hardware table")," (for Monado/WiVRn support) to ensure your hardware and headset are compatible. If you're using an Nvidia card, you'll need to install ",(0,a.yg)("a",{parentName:"p",href:"https://rpmfusion.org/Howto/NVIDIA"},"proprietary drivers"),". If you're using a modern Nvidia card on Fedora (with RPMFusion) or Ultramarine, this command will install the driver:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"sudo dnf install akmod-nvidia\nsudo akmods\n# Wait for this to finish before rebooting, this may take up to 15 minutes\n")),(0,a.yg)("p",null,"AMD graphic cards do not require additional drivers."),(0,a.yg)("h3",null,(0,a.yg)("img",{src:"/img/docs/Fedora_logo.svg",alt:"Fedora Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),(0,a.yg)("img",{src:"/img/docs/ultramarine-logo.svg",alt:"Ultramarine Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),"Fedora and derivatives (except Enterprise Linux)"),(0,a.yg)("admonition",{type:"info"},(0,a.yg)("p",{parentName:"admonition"},"Envision is packaged in the ",(0,a.yg)("a",{parentName:"p",href:"https://terra.fyralabs.com/"},"Terra repository"),". If you are using ",(0,a.yg)("a",{parentName:"p",href:"https://ultramarine-linux.org"},"Ultramarine Linux"),", ",(0,a.yg)("a",{parentName:"p",href:"https://bazzite.gg"},"Bazzite"),", or ",(0,a.yg)("a",{parentName:"p",href:"https://getaurora.dev"},"Aurora"),", this repository comes pre-installed, otherwise you will need to add the repository:"),(0,a.yg)("p",{parentName:"admonition"},"If you are using a ",(0,a.yg)("a",{parentName:"p",href:"https://fedoraproject.org/atomic-desktops/"},"Fedora Atomic Edition")," or derivative you will need to run the following command:"),(0,a.yg)("pre",{parentName:"admonition"},(0,a.yg)("code",{parentName:"pre"},"curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo\nsudo rpm-ostree install terra-release\n")),(0,a.yg)("p",{parentName:"admonition"},"Standard Fedora Editions and derrivatives can directly install terra-release:"),(0,a.yg)("pre",{parentName:"admonition"},(0,a.yg)("code",{parentName:"pre"},"sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release\n"))),(0,a.yg)("p",null,"Then, install Envision using:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"sudo dnf install envision\n")),(0,a.yg)("h3",null,(0,a.yg)("img",{src:"/img/docs/arch.png",alt:"Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),"Arch Linux"),(0,a.yg)("p",null,"For Arch Linux, Envision is available via the ",(0,a.yg)("a",{parentName:"p",href:"https://aur.archlinux.org/packages/envision-xr-git"},"AUR"),". We suggest using an AUR helper, like Paru:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"paru -S envision-xr-git\n")),(0,a.yg)("h3",null,(0,a.yg)("img",{src:"/img/docs/nixos.svg",alt:"Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),"NixOS"),(0,a.yg)("p",null,"On NixOS, it's generally easiest to follow the instructions at ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/distros/nixos/"},"https://lvra.gitlab.io/docs/distros/nixos/")," as Envision is currently unstable on NixOS and troubleshooting SteamVR can be tricky. "),(0,a.yg)("h3",{id:"other-options-for-installation"},"Other options for installation"),(0,a.yg)("p",null,"You can also download the ",(0,a.yg)("a",{parentName:"p",href:"https://gitlab.com/gabmus/envision/-/pipelines?ref=main&status=success"},"Envision AppImage"),". Once downloaded, unzip the archive, you should find a file named Envision-x86_64.AppImage. You can do this from the properties menu in your file manager, or run ",(0,a.yg)("inlineCode",{parentName:"p"},"chmod +x Envision-x86_64.AppImage")," in your terminal."),(0,a.yg)("p",null,"Then double click the file to run it.\n",(0,a.yg)("img",{alt:"Envision App Image",src:r(7456).A,width:"1103",height:"398"})),(0,a.yg)("p",null,"When you launch Envision, you will have to build a profile for your headset, check the ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/fossvr/envision/"},"Envision website")," for instructions specific to what you have. You can take a look at ",(0,a.yg)("a",{parentName:"p",href:"https://youtu.be/Rgj9-9UwA2g?si=Rt23rZf01fzQt3RB&t=280"},"this section")," of our Meta Quest setup video for an example using WiVRn.\n",(0,a.yg)("img",{alt:"Envision Build Profile",src:r(647).A,width:"577",height:"734"})),(0,a.yg)("p",null,"Once you have one of these options installed, a quick way to test on the headset is by running ",(0,a.yg)("inlineCode",{parentName:"p"},"xrgears"),". ",(0,a.yg)("a",{parentName:"p",href:"https://gitlab.freedesktop.org/monado/demos/xrgears"},"xrgears")," is a demo that comes with Monado."),(0,a.yg)("admonition",{type:"tip"},(0,a.yg)("p",{parentName:"admonition"},"If you run into any problems during installation, the ",(0,a.yg)("a",{parentName:"p",href:"quest-3-setup"},"Meta Quest Walkthrough")," may contain information helpful in regards to dependencies, firewalls and drivers.")),(0,a.yg)("h1",{id:"alvr"},"ALVR"),(0,a.yg)("p",null,"Another option is ALVR, you can check the GitHub repository for more information ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/alvr-org/ALVR"},"https://github.com/alvr-org/ALVR")),(0,a.yg)("h1",{id:"steamvr"},"SteamVR"),(0,a.yg)("p",null,"If you'd like to use SteamVR, head over to ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/steamvr/"},"https://lvra.gitlab.io/docs/steamvr/"),", although it is not the recommended way to use VR within Linux due to poor support."))}g.isMDXComponent=!0},2845:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/Envision_Monado-9d09381bf57cc8f8605ac03541f88a3d.png"},7456:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/envisionappimage-148384a30f4f08d5b694e830eea45461.png"},647:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/envisionbuildprofile-d6d2287ef25447479c30e3c291de624c.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[450],{5680:(e,t,r)=>{r.d(t,{xA:()=>u,yg:()=>h});var n=r(6540);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),m=a,h=d["".concat(p,".").concat(m)]||d[m]||g[m]||i;return r?n.createElement(h,o(o({ref:t},u),{},{components:r})):n.createElement(h,o({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>g,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=r(8168),a=(r(6540),r(5680));const i={sidebar_position:3},o="Setup OpenXR Runtime",s={unversionedId:"get-started/setup-openxr",id:"get-started/setup-openxr",title:"Setup OpenXR Runtime",description:"This guide will help you set up your VR or AR headset for use with Stardust. Although support for many headsets on Linux is still under active development, there are a number of good options available. If you already have OpenXR set up on your Linux distribution, head to the Full Installation page to get Stardust XR installed.",source:"@site/docs/01-get-started/03-setup-openxr.md",sourceDirName:"01-get-started",slug:"/get-started/setup-openxr",permalink:"/docs/get-started/setup-openxr",draft:!1,editUrl:"https://github.com/StardustXR/website/edit/main/docs/01-get-started/03-setup-openxr.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Quick Start Guide",permalink:"/docs/get-started/Quickstart"},next:{title:"Full Installation",permalink:"/docs/get-started/manual"}},p={},l=[{value:"Other options for installation",id:"other-options-for-installation",level:3}],u={toc:l},d="wrapper";function g(e){let{components:t,...i}=e;return(0,a.yg)(d,(0,n.A)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"setup-openxr-runtime"},"Setup OpenXR Runtime"),(0,a.yg)("p",null,"This guide will help you set up your VR or AR headset for use with Stardust. Although support for many headsets on Linux is still under active development, there are a number of good options available. If you already have OpenXR set up on your Linux distribution, head to the ",(0,a.yg)("a",{parentName:"p",href:"manual"},"Full Installation")," page to get Stardust XR installed. "),(0,a.yg)("admonition",{type:"info"},(0,a.yg)("p",{parentName:"admonition"},"If you want to try Stardust in a window on your existing device you can skip this step and checkout the ",(0,a.yg)("a",{parentName:"p",href:"Quickstart"},"Quick Start Guide"),". ")),(0,a.yg)("h1",{id:"envision"},"Envision"),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},(0,a.yg)("img",{alt:"Envision",src:r(2845).A,width:"500",height:"138"})),(0,a.yg)("p",{parentName:"admonition"},"We highly recommend using ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/fossvr/envision/"},"Envision"),", an easy to use GUI for utilizing ",(0,a.yg)("a",{parentName:"p",href:"https://monado.dev/"},"Monado")," which is what you likely use if you have a wired headset. Envision also comes with ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/WiVRn/WiVRn"},"WiVRn")," support for connecting to headsets like the Meta Quest wirelessly. ")),(0,a.yg)("p",null,"Check the ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/hardware/"},"hardware table")," (for Monado/WiVRn support) to ensure your hardware and headset are compatible. If you're using an Nvidia card, you'll need to install ",(0,a.yg)("a",{parentName:"p",href:"https://rpmfusion.org/Howto/NVIDIA"},"proprietary drivers"),". If you're using a modern Nvidia card on Fedora (with RPMFusion) or Ultramarine, this command will install the driver:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"sudo dnf install akmod-nvidia\nsudo akmods\n# Wait for this to finish before rebooting, this may take up to 15 minutes\n")),(0,a.yg)("p",null,"AMD graphic cards do not require additional drivers."),(0,a.yg)("h3",null,(0,a.yg)("img",{src:"/img/docs/Fedora_logo.svg",alt:"Fedora Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),(0,a.yg)("img",{src:"/img/docs/ultramarine-logo.svg",alt:"Ultramarine Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),"Fedora and derivatives (except Enterprise Linux)"),(0,a.yg)("admonition",{type:"info"},(0,a.yg)("p",{parentName:"admonition"},"Envision is packaged in the ",(0,a.yg)("a",{parentName:"p",href:"https://terra.fyralabs.com/"},"Terra repository"),". If you are using ",(0,a.yg)("a",{parentName:"p",href:"https://ultramarine-linux.org"},"Ultramarine Linux"),", ",(0,a.yg)("a",{parentName:"p",href:"https://bazzite.gg"},"Bazzite"),", or ",(0,a.yg)("a",{parentName:"p",href:"https://getaurora.dev"},"Aurora"),", this repository comes pre-installed, otherwise you will need to add the repository:"),(0,a.yg)("p",{parentName:"admonition"},"If you are using a ",(0,a.yg)("a",{parentName:"p",href:"https://fedoraproject.org/atomic-desktops/"},"Fedora Atomic Edition")," or derivative you will need to run the following command:"),(0,a.yg)("pre",{parentName:"admonition"},(0,a.yg)("code",{parentName:"pre"},"curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo\nsudo rpm-ostree install terra-release\n")),(0,a.yg)("p",{parentName:"admonition"},"Standard Fedora Editions and derivatives can directly install terra-release:"),(0,a.yg)("pre",{parentName:"admonition"},(0,a.yg)("code",{parentName:"pre"},"sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release\n"))),(0,a.yg)("p",null,"Then, install Envision using:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"sudo dnf install envision\n")),(0,a.yg)("h3",null,(0,a.yg)("img",{src:"/img/docs/arch.png",alt:"Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),"Arch Linux"),(0,a.yg)("p",null,"For Arch Linux, Envision is available via the ",(0,a.yg)("a",{parentName:"p",href:"https://aur.archlinux.org/packages/envision-xr-git"},"AUR"),". We suggest using an AUR helper, like Paru:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"paru -S envision-xr-git\n")),(0,a.yg)("h3",null,(0,a.yg)("img",{src:"/img/docs/nixos.svg",alt:"Logo",style:{verticalAlign:"middle",height:"1em",marginRight:"0.5em"}}),"NixOS"),(0,a.yg)("p",null,"On NixOS, it's generally easiest to follow the instructions at ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/distros/nixos/"},"https://lvra.gitlab.io/docs/distros/nixos/")," as Envision is currently unstable on NixOS and troubleshooting SteamVR can be tricky. "),(0,a.yg)("h3",{id:"other-options-for-installation"},"Other options for installation"),(0,a.yg)("p",null,"You can also download the ",(0,a.yg)("a",{parentName:"p",href:"https://gitlab.com/gabmus/envision/-/pipelines?ref=main&status=success"},"Envision AppImage"),". Once downloaded, unzip the archive, you should find a file named Envision-x86_64.AppImage. You can do this from the properties menu in your file manager, or run ",(0,a.yg)("inlineCode",{parentName:"p"},"chmod +x Envision-x86_64.AppImage")," in your terminal."),(0,a.yg)("p",null,"Then double click the file to run it.\n",(0,a.yg)("img",{alt:"Envision App Image",src:r(7456).A,width:"1103",height:"398"})),(0,a.yg)("p",null,"When you launch Envision, you will have to build a profile for your headset, check the ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/fossvr/envision/"},"Envision website")," for instructions specific to what you have. You can take a look at ",(0,a.yg)("a",{parentName:"p",href:"https://youtu.be/Rgj9-9UwA2g?si=Rt23rZf01fzQt3RB&t=280"},"this section")," of our Meta Quest setup video for an example using WiVRn.\n",(0,a.yg)("img",{alt:"Envision Build Profile",src:r(647).A,width:"577",height:"734"})),(0,a.yg)("p",null,"Once you have one of these options installed, a quick way to test on the headset is by running ",(0,a.yg)("inlineCode",{parentName:"p"},"xrgears"),". ",(0,a.yg)("a",{parentName:"p",href:"https://gitlab.freedesktop.org/monado/demos/xrgears"},"xrgears")," is a demo that comes with Monado."),(0,a.yg)("admonition",{type:"tip"},(0,a.yg)("p",{parentName:"admonition"},"If you run into any problems during installation, the ",(0,a.yg)("a",{parentName:"p",href:"quest-3-setup"},"Meta Quest Walkthrough")," may contain information helpful in regards to dependencies, firewalls and drivers.")),(0,a.yg)("h1",{id:"alvr"},"ALVR"),(0,a.yg)("p",null,"Another option is ALVR, you can check the GitHub repository for more information ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/alvr-org/ALVR"},"https://github.com/alvr-org/ALVR")),(0,a.yg)("h1",{id:"steamvr"},"SteamVR"),(0,a.yg)("p",null,"If you'd like to use SteamVR, head over to ",(0,a.yg)("a",{parentName:"p",href:"https://lvra.gitlab.io/docs/steamvr/"},"https://lvra.gitlab.io/docs/steamvr/"),", although it is not the recommended way to use VR within Linux due to poor support."))}g.isMDXComponent=!0},2845:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/Envision_Monado-9d09381bf57cc8f8605ac03541f88a3d.png"},7456:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/envisionappimage-148384a30f4f08d5b694e830eea45461.png"},647:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/envisionbuildprofile-d6d2287ef25447479c30e3c291de624c.png"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.c6a78d62.js b/assets/js/runtime~main.8ef35fd2.js similarity index 98% rename from assets/js/runtime~main.c6a78d62.js rename to assets/js/runtime~main.8ef35fd2.js index 7e7f9e07..7ed1e284 100644 --- a/assets/js/runtime~main.c6a78d62.js +++ b/assets/js/runtime~main.8ef35fd2.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,r,a,o,n={},f={};function i(e){var t=f[e];if(void 0!==t)return t.exports;var r=f[e]={id:e,loaded:!1,exports:{}};return n[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,i.c=f,e=[],i.O=(t,r,a,o)=>{if(!r){var n=1/0;for(u=0;u=o)&&Object.keys(i.O).every((e=>i.O[e](r[d])))?r.splice(d--,1):(f=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);i.r(o);var n={};t=t||[null,r({}),r([]),r(r)];for(var f=2&a&&e;"object"==typeof f&&!~t.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,i.d(o,n),o},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"assets/js/"+({61:"1f391b9e",140:"69369ae2",375:"b74877f5",393:"a2f9352b",401:"17896441",450:"2185e383",488:"75e80871",581:"935f2afb",634:"c4f5d8e4",698:"90eee115",714:"1be78505",773:"b2400e94",801:"0c83e9a7",902:"997b62c1",908:"b4e94af8",987:"c4348237",996:"81253b24"}[e]||e)+"."+{55:"46a8d801",61:"491486ac",113:"96a447f5",140:"20ee0827",261:"2e796b47",375:"1be6b822",393:"aa6314f4",401:"5f242564",428:"2aadad0c",450:"238a8fba",488:"03f9273c",581:"b439ceca",615:"5c077adb",634:"0d8c138f",698:"a7faaa41",714:"40b2c3bf",773:"00ee335a",774:"054ba7c6",801:"cab5469e",902:"9b886659",908:"dc0c06c1",987:"d1cf9227",996:"77394c2b"}[e]+".js",i.miniCssF=e=>{},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},o="stardust-website:",i.l=(e,t,r,n)=>{if(a[e])a[e].push(t);else{var f,d;if(void 0!==r)for(var c=document.getElementsByTagName("script"),u=0;u{f.onerror=f.onload=null,clearTimeout(l);var o=a[e];if(delete a[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach((e=>e(r))),t)return t(r)},l=setTimeout(s.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=s.bind(null,f.onerror),f.onload=s.bind(null,f.onload),d&&document.head.appendChild(f)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="/",i.gca=function(e){return e={17896441:"401","1f391b9e":"61","69369ae2":"140",b74877f5:"375",a2f9352b:"393","2185e383":"450","75e80871":"488","935f2afb":"581",c4f5d8e4:"634","90eee115":"698","1be78505":"714",b2400e94:"773","0c83e9a7":"801","997b62c1":"902",b4e94af8:"908",c4348237:"987","81253b24":"996"}[e]||e,i.p+i.u(e)},(()=>{var e={354:0,869:0};i.f.j=(t,r)=>{var a=i.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(354|869)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=i.p+i.u(t),f=new Error;i.l(n,(r=>{if(i.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;f.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",f.name="ChunkLoadError",f.type=o,f.request=n,a[1](f)}}),"chunk-"+t,t)}},i.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,n=r[0],f=r[1],d=r[2],c=0;if(n.some((t=>0!==e[t]))){for(a in f)i.o(f,a)&&(i.m[a]=f[a]);if(d)var u=d(i)}for(t&&t(r);c{"use strict";var e,t,r,a,o,n={},f={};function i(e){var t=f[e];if(void 0!==t)return t.exports;var r=f[e]={id:e,loaded:!1,exports:{}};return n[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,i.c=f,e=[],i.O=(t,r,a,o)=>{if(!r){var n=1/0;for(u=0;u=o)&&Object.keys(i.O).every((e=>i.O[e](r[d])))?r.splice(d--,1):(f=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);i.r(o);var n={};t=t||[null,r({}),r([]),r(r)];for(var f=2&a&&e;"object"==typeof f&&!~t.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,i.d(o,n),o},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"assets/js/"+({61:"1f391b9e",140:"69369ae2",375:"b74877f5",393:"a2f9352b",401:"17896441",450:"2185e383",488:"75e80871",581:"935f2afb",634:"c4f5d8e4",698:"90eee115",714:"1be78505",773:"b2400e94",801:"0c83e9a7",902:"997b62c1",908:"b4e94af8",987:"c4348237",996:"81253b24"}[e]||e)+"."+{55:"46a8d801",61:"491486ac",113:"96a447f5",140:"20ee0827",261:"2e796b47",375:"1be6b822",393:"aa6314f4",401:"5f242564",428:"2aadad0c",450:"a6b0eab0",488:"03f9273c",581:"b439ceca",615:"5c077adb",634:"0d8c138f",698:"a7faaa41",714:"40b2c3bf",773:"00ee335a",774:"054ba7c6",801:"cab5469e",902:"9b886659",908:"dc0c06c1",987:"d1cf9227",996:"77394c2b"}[e]+".js",i.miniCssF=e=>{},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},o="stardust-website:",i.l=(e,t,r,n)=>{if(a[e])a[e].push(t);else{var f,d;if(void 0!==r)for(var c=document.getElementsByTagName("script"),u=0;u{f.onerror=f.onload=null,clearTimeout(l);var o=a[e];if(delete a[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach((e=>e(r))),t)return t(r)},l=setTimeout(s.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=s.bind(null,f.onerror),f.onload=s.bind(null,f.onload),d&&document.head.appendChild(f)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="/",i.gca=function(e){return e={17896441:"401","1f391b9e":"61","69369ae2":"140",b74877f5:"375",a2f9352b:"393","2185e383":"450","75e80871":"488","935f2afb":"581",c4f5d8e4:"634","90eee115":"698","1be78505":"714",b2400e94:"773","0c83e9a7":"801","997b62c1":"902",b4e94af8:"908",c4348237:"987","81253b24":"996"}[e]||e,i.p+i.u(e)},(()=>{var e={354:0,869:0};i.f.j=(t,r)=>{var a=i.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(354|869)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=i.p+i.u(t),f=new Error;i.l(n,(r=>{if(i.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;f.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",f.name="ChunkLoadError",f.type=o,f.request=n,a[1](f)}}),"chunk-"+t,t)}},i.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,n=r[0],f=r[1],d=r[2],c=0;if(n.some((t=>0!==e[t]))){for(a in f)i.o(f,a)&&(i.m[a]=f[a]);if(d)var u=d(i)}for(t&&t(r);c Brief Overview | Stardust XR - +

Brief Overview

Stardust XR is an XR display server designed for Linux-based systems.
Unlike traditional display servers that focus on 2D screens, Stardust XR introduces new conventions to utilize unbounded 3D space in virtual or real environments.

Priorities

  • 3D Environment Focus: While supporting 2D clients through the Wayland protocol, Stardust XR primarily aims to create and manage 3D environments.

  • Standard Interfaces: Utilizes Wayland and OpenXR for 2D and XR app integration.

  • Stardust Protocol: Implements a special protocol for:

    • Creating virtual objects
    • Developing 3D UIs around 2D apps (Panel Shells)
    • Handling data as Items that can represent files, Wayland surfaces, etc.
  • Personal Device Interaction: Focuses on individual user interactions rather than collaborative 3D spaces.

  • Flexible Object Interaction: Users can choose objects that best suit their current scenario, with easy setup for default configurations.

Architecture

Projects & Components

  • telescope: Stable stardust setup for quick and easy usage
  • server: Reference implementation of the StardustXR server (similar to Xorg)
  • core lib: Rust crates and schemas for connecting stardust server and client
  • website: The location where documentation is done and the website is generated from
  • protostar: App launcher library and examples including futuristic hexagon launcher
  • black hole: Universal minimization of Stardust objects
  • gravity: Launch programs with a certain offset in 3D space
  • magnetar: Example workspaces client
  • atmosphere: 3D environment with natural momentum-based movement
  • comet: Annotate in 3D wherever you want amongst your other apps!
- + \ No newline at end of file diff --git a/docs/dive-deeper/deep-overview.html b/docs/dive-deeper/deep-overview.html index 2f4f44f5..186c1c1b 100644 --- a/docs/dive-deeper/deep-overview.html +++ b/docs/dive-deeper/deep-overview.html @@ -4,13 +4,13 @@ Technical Overview | Stardust XR - +

Technical Overview

Server

The server is what renders all the meshes of each client, takes in input from input methods, and spits out input to input handlers according to the SUIS (Spatial Universal Interaction System). As well, the server is going to be part Wayland compositor and OpenXR runtime so all 2D and XR applications can be used together at once (if the hardware allows). It is the glue of Stardust, allowing any number of clients and apps to work in harmony while allowing the user full control in an intuitive way.

As new technologies come out, keeping the same server and trying to progressively upgrade it may lead to bloat and issues, so the protocol is designed to make creating new servers possible without too much hassle or to make servers modular. Old interfaces can be deprecated without breaking the overall system, and new interfaces can be added if needed due to the object-oriented design. The design is highly inspired by game engines, however the reference server is made in StereoKit due to it being more optimal.

Reference Server

Stardust has a reference server, but unlike other display servers this reference server is just as functional as any other Stardust server would be, because all the functionality is implemented in the clients. The server is just the glue.

The reference server uses StereoKit as its backend for many reasons:

  • Much more lightweight than any other framework/other engine
    • It was originally designed to run AR apps on HoloLens, and now it works on Quest
    • It's able to render thousands of objects on a HoloLens without breaking a sweat
  • Does not include unnecessary features that slow down performance
    • Physics and UI are not needed for Stardust, but those do not actively run and can always have an option to not be compiled at all.
  • Uses C-style C++ meaning not bytecode or interpreted (however has a C# API that is not used by Stardust)
  • Uses immediate mode rendering meaning the logic is many times easier to implement
  • Exposes its rendering insides whenever needed
    • Very needed for Wayland when it needs to display EGL Wayland surface textures on meshes
    • Overriding the depthbuffer per-pixel in fragment shader is useful for XR depth compositing
  • Is constantly getting new updates faster than most engines
    • World semantics for OpenXR was implemented ~1 week after the official OpenXR extension release
  • Is optimized to load resources JIT
    • Many game engines are best at caching their assets, but this is not practical in a display server
  • Uses OpenXR as its backend out of the box

IPC

The Stardust XR IPC uses Unix domain sockets for communication and a protocol based on flatbuffers/flexbuffers.

Protocol

The Stardust XR protocol is object-oriented, depending on a scenegraph on the server end and scenegraph or functionally equivalent structure on the client end. This allows easier implementation of the protocol while still remaining fast, reliable, and extensible.

Clients

The clients tell the server what models to draw, where they would like to accept input in, etc. Stardust clients are much more suited to widgets or user interfaces to 2D/XR apps.

- + \ No newline at end of file diff --git a/docs/dive-deeper/make-clients.html b/docs/dive-deeper/make-clients.html index bb34e7c8..5936bbce 100644 --- a/docs/dive-deeper/make-clients.html +++ b/docs/dive-deeper/make-clients.html @@ -4,13 +4,13 @@ Making Clients | Stardust XR - +

Making Clients

A Stardust client is at its core an executable that connects to a stardust server instance at $XDG_RUNTIME_DIR/stardust-[0-32], sends and receives messages according to the Stardust protocol.

Rust

Stardust uses Rust due to its speed and reliability in build and runtime, so you will need to install cargo (preferably through rustup). If you're unsure how to use Rust then a great guide is at https://doc.rust-lang.org/book/.

stardust-xr

stardust-xr is a connecting library for servers and clients that deals with the lowest level of connecting to ensure basic compatibility is ensured. As a client developer you most likely won't need it, but it's good to know about it.

Fusion

stardust-xr-fusion is the high level library you'll probably be using to create your clients. It features structs for all Stardust objects and trait-based + async systems for handling events from the server.

To get started, create a new Rust project using

cargo new

and include the stardust-xr-fusion dependency in your cargo.toml. Documentation will be available at https://docs.rs/crate/stardust-xr-fusion/latest.

Molecules

stardust-xr-molecules is an even higher level widget library built on Fusion similar to MRTK to get your clients up and running faster. Documentation will be available at https://docs.rs/crate/stardust-xr-molecules/latest.

- + \ No newline at end of file diff --git a/docs/dive-deeper/terminology.html b/docs/dive-deeper/terminology.html index 441b11c1..5787bd47 100644 --- a/docs/dive-deeper/terminology.html +++ b/docs/dive-deeper/terminology.html @@ -4,13 +4,13 @@ Glossary | Stardust XR - + - + \ No newline at end of file diff --git a/docs/get-started/Quickstart.html b/docs/get-started/Quickstart.html index f722ecb8..e9424260 100644 --- a/docs/get-started/Quickstart.html +++ b/docs/get-started/Quickstart.html @@ -4,13 +4,13 @@ Quick Start Guide | Stardust XR - +

Quick Start Guide

The quickest way to get started with Stardust XR is to try out Telescope. This works with the device you already have, or a headset. It comes with the Stardust XR server, an app launcher called Hexagon Launcher, and some helpful apps like Flatland to use your 2D apps inside Stardust, and Black Hole to quickly tuck away your objects and apps (kind of like desktop peek on Windows).

Fedora LogoUltramarine LogoFedora and derivatives (except Enterprise Linux)

info

Stardust XR is packaged in the Terra repository. If you are using Ultramarine Linux, Bazzite, or Aurora, this repository comes pre-installed, otherwise you will need to add the repository:

If you are using a Fedora Atomic Edition or derrivative you will need to run the following command:

curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo
sudo rpm-ostree install terra-release

Standard Fedora Editions and derivatives can directly install terra-release:

sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release

Then, install Telescope using:

sudo dnf install telescope 

LogoArch Linux

On Arch Linux, Stardust XR is available in the Arch Linux User Repository AUR. We suggest using an AUR helper, like Paru:

paru -S stardust-xr-telescope

LogoNixOS

On NixOS, use the Nix package manager Make sure flakes are enabled.

nix run github:StardustXR/telescope

After Installation

From here, just run telescope -f for flatscreen mode in your terminal!

You will see a floating hexagon with the Stardust XR logo in the center, this is Hexagon Launcher.

To look around, hold down Shift and Right Click while moving the mouse.

To move around, hold down Shift and W A S D, with Q for moving down and E for moving up.

If you click on the hexagon, the launcher will open. Try dragging one of the apps with the Mouse 5 (Back) button. The small minus sign is Black Hole, if you click it, it will grab any open window and store it away. Click it again and they will return to their original location.

If you are already using OpenXR within Linux, running telescope while OpenXR is running should launch Stardust on your headset. If not, check further instructions for setting up OpenXR.

- + \ No newline at end of file diff --git a/docs/get-started/What-is-Stardust.html b/docs/get-started/What-is-Stardust.html index 3dbc96b7..0531028c 100644 --- a/docs/get-started/What-is-Stardust.html +++ b/docs/get-started/What-is-Stardust.html @@ -4,13 +4,13 @@ What is Stardust XR? | Stardust XR - +

What is Stardust XR?

Stardust XR is a display server for VR and AR headsets on Linux-based systems. Stardust provides a 3D environment, where anything from 2D windows (including your existing apps!), to 3D apps built from objects, can exist together in physical space.

If you'd like to try Stardust XR on your existing device without a headset, head to the Quick Start guide. If you'd like to use a VR headset, check out Set up OpenXR Runtime. If you already have your headset set up, head to the Full Stardust Installation page. If you've a beginner, and have a Meta Quest device, we've created a full walkthrough to get you started playing with Stardust!

Stardust XR is acitvely looking for help with development to expand the project. You can also become a sponsor.

- + \ No newline at end of file diff --git a/docs/get-started/manual.html b/docs/get-started/manual.html index 4b84e3c3..336bc011 100644 --- a/docs/get-started/manual.html +++ b/docs/get-started/manual.html @@ -4,13 +4,13 @@ Full Installation | Stardust XR - +

Full Installation

Unlike Telescope that launches the Stardust XR server and a small selection of clients, the typical way to interact with Stardust is to first run the server, which only provides a void by default, as there are no applications or clients within it. You can then launch any combination of the clients listed below, as they are all considered separate items but can run concurrently inside Stardust.

Fedora LogoUltramarine LogoFedora and derivatives (except Enterprise Linux)

info

Stardust XR is packaged in the Terra repository. If you are using Ultramarine Linux, Bazzite, or Aurora, this repository comes pre-installed, otherwise you will need to add the repository:

If you are using a Fedora Atomic Edition or derrivative you will need to run the following command:

curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo
sudo rpm-ostree install terra-release

Standard Fedora Editions and derrivatives can directly install terra-release:

sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release

Then, run this command to install all Stardust XR packages:

sudo dnf group install stardust-xr

LogoArch Linux

paru -s stardust-xr-telescope
paru -s stardust-xr-armillary
paru -s stardust-xr-atmosphere
paru -s stardust-xr-black-hole
paru -s stardust-xr-comet
paru -s stardust-xr-flatland
paru -s stardust-xr-gravity
paru -s stardust-xr-magnetar
paru -s stardust-xr-non-spatial-input
paru -s stardust-xr-protostar
paru -s stardust-xr-server

From there, you can launch the server with stardust-xr-server, then in another terminal window or tab, run any other clients you need. We recommend flatland and hexagon-launcher.

Manual Build

caution

Make sure all of the repositories that are cloned are on the same branch (e.g. all main or all dev branch) to ensure Stardust protocol compatibility

Server

Clone the Stardust XR Server https://github.com/StardustXR/server

Make sure to check the list of prerequisites. Run cargo build and cargo run in the cloned repo to start the server. As stated above, the Stardust server will simply load in with a black void until clients are loaded in. This behaviour can currently be modified by creating a startup file inside the folder ~/.config/stardust/ to automate the loading in of clients, an example of which is shown here, and an example of is linked here

Clients

After the server is running, you'll need to run some clients. Clone any of these, cargo build & then cargo run after the server is already running, and they will load into the Stardust server!

Non-exhaustive list of clients:

  • flatland: https://github.com/StardustXR/flatland
    3D panel UI (like window manager) for intercting with all your 2D apps
  • protostar: https://github.com/StardustXR/protostar
    App launcher library and examples including futuristic Hexagon Launcher
  • black hole: https://github.com/StardustXR/black-hole
    Universal minimization of Stardust objects
  • gravity: https://github.com/StardustXR/gravity
    Launch programs with a certain offset in 3D space
  • magnetar: https://github.com/StardustXR/magnetar
    Example workspaces client
  • atmosphere: https://github.com/StardustXR/atmosphere
    3D environment with natural momentum-based movement
  • comet: https://github.com/StardustXR/cometAnnotate
    Write in 3D wherever you want amongst your other apps!

Installation Script

If you have all the correct dependencies, we've created a script that will automatically git clone all of the necessary repositories, cargo build all of them, and give them a symlinks for running the server and clients from the command line. It also creates a config file that will by default install the default atmosphere background. Run the script with flag -nobg if you don't want that.

- + \ No newline at end of file diff --git a/docs/get-started/quest-3-setup.html b/docs/get-started/quest-3-setup.html index daa0319e..e7f3a62f 100644 --- a/docs/get-started/quest-3-setup.html +++ b/docs/get-started/quest-3-setup.html @@ -4,13 +4,13 @@ Meta Quest Walkthrough | Stardust XR - +

Meta Quest Walkthrough

Do you have a Meta Quest and would like to try Stardust for yourself? Even if you don't have any experience with Linux, this full guide will get you started with Stardust! It is recommended that you install a version of Linux called Ultramarine. We suggest Plasma Edition due to VRR and HDR support. Once you have it installed, you will mainly be using the terminal to install what you need. Linked below is a YouTube walkthrough:

info

This applies to the Quest, Quest 2, Quest 3, and Quest Pro. These instructions should work on all Fedora derivatives (excluding Enterprise Linux). If you are using Ultramarine Linux, Bazzite, or Aurora, this reposoitory comes pre-installed, otherwise you will need to add the repository:

If you are using a Fedora Atomic Edition or derrivative you will need to run the following command:

curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo
sudo rpm-ostree install terra-release

Standard Fedora Editions and derrivatives can directly install terra-release:

sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release

The setup video is done with a Meta Quest 3, and with Ultramarine, a Fedora based distribution. Ultramarine comes with the Terra repository pre-installed. You can follow these instructions to install a version of Ultramarine.

Nvidia & AMD

AMD Graphics cards do not require additional drivers, but Nvidia graphics cards will need to install drivers provided by RPMFusion, which can be installed with:

sudo dnf install akmod-nvidia

Envision

The next step is to install Envision. Envision is a GUI that makes it easier to connect and run the Quest 3 (among other headsets) with Monado, an open source OpenXR implementation, and WiVRn, a wireless streaming implementation that also works with the Quest 3. Envision comes pre-packaged with WiVRn. Envision can be installed via:

sudo dnf install envision

Vulkan Layers

If you have an Nvidia graphics card, it is possible that you will need to install Vulkan Layers for Monado, although this may not be necessary depending on the driver version:

sudo dnf install monado-vulkan-layers

Next, Launch Envision, and in the drop down menu on the bottom, select the WiVRn profile and click Build Profile. It'll give you a list of dependencies to install, so copy the command and run it. After they are installed, there's one extra dependency to add manually.

sudo dnf install libnotify-devel
note

Note that Developer Mode must be enabled on your Quest 3. The most streamlined way to do this is through the Meta Horizons app on Android or iPhone

Installing WiVRn

Once that is complete, you're ready to click Build Profile within Envision. Once it's done building, you're ready to install WiVRn on the headset. Connect your headset to your computer via the Quest 3 Link cable or another compatable USB-C cable. Now that Developer Mode is enabled, you should see "Allow USB debugging", click allow within the headset.

With debugging enabled and the headset connected, click Install WiVRn within Envision to install the android apk onto the headset.

Firewalls

Once it's installed, you'll need avahi-daemon running:

systemctl enable --now avahi-daemon

And it's possible that your firewall could prevent connection, so use the following commands to open up the ports required and reload the firewall:

sudo firewall-cmd --zone=public --add-port=5353/udp --permanent
sudo firewall-cmd --zone=public --add-port=9757/udp --permanent
sudo firewall-cmd --zone=public --add-port=9757/tcp --permanent

sudo firewall-cmd --reload

Stardust XR

Now that we've set up the Quest 3 to be able to connect to your linux distribution via Envision/WiVRn, we can install Stardust XR!

sudo dnf group install stardust-xr

Once installed, you'll have to launch WiVRN within the headset. On the bottom right of the Quest 3 menu, go to Library > Unknown Sources, and you'll see the WiVRn app. Once you're loaded up, click the Start button at the top of Envision on your computer, and you'll be greeted with a PIN for firs time setup. Back in the Quest 3, tap Connect, and enter the PIN, and you should see "Connection ready, Start a VR application on Ultramarine"

For the quickest way to test Stardust XR, run the command

telescope

Which will launch Stardust XR along with the Hexagon App Launcher and some pre-loaded applications!

- + \ No newline at end of file diff --git a/docs/get-started/setup-openxr.html b/docs/get-started/setup-openxr.html index ebef1528..e6cc5940 100644 --- a/docs/get-started/setup-openxr.html +++ b/docs/get-started/setup-openxr.html @@ -4,15 +4,15 @@ Setup OpenXR Runtime | Stardust XR - +
-

Setup OpenXR Runtime

This guide will help you set up your VR or AR headset for use with Stardust. Although support for many headsets on Linux is still under active development, there are a number of good options available. If you already have OpenXR set up on your Linux distribution, head to the Full Installation page to get Stardust XR installed.

info

If you want to try Stardust in a window on your existing device you can skip this step and checkout the Quick Start Guide.

Envision

note

Envision

We highly recommend using Envision, an easy to use GUI for utilizing Monado which is what you likely use if you have a wired headset. Envision also comes with WiVRn support for connecting to headsets like the Meta Quest wirelessly.

Check the hardware table (for Monado/WiVRn support) to ensure your hardware and headset are compatible. If you're using an Nvidia card, you'll need to install proprietary drivers. If you're using a modern Nvidia card on Fedora (with RPMFusion) or Ultramarine, this command will install the driver:

sudo dnf install akmod-nvidia
sudo akmods
# Wait for this to finish before rebooting, this may take up to 15 minutes

AMD graphic cards do not require additional drivers.

Fedora LogoUltramarine LogoFedora and derivatives (except Enterprise Linux)

info

Envision is packaged in the Terra repository. If you are using Ultramarine Linux, Bazzite, or Aurora, this repository comes pre-installed, otherwise you will need to add the repository:

If you are using a Fedora Atomic Edition or derivative you will need to run the following command:

curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo
sudo rpm-ostree install terra-release

Standard Fedora Editions and derrivatives can directly install terra-release:

sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release

Then, install Envision using:

sudo dnf install envision

LogoArch Linux

For Arch Linux, Envision is available via the AUR. We suggest using an AUR helper, like Paru:

paru -S envision-xr-git

LogoNixOS

On NixOS, it's generally easiest to follow the instructions at https://lvra.gitlab.io/docs/distros/nixos/ as Envision is currently unstable on NixOS and troubleshooting SteamVR can be tricky.

Other options for installation

You can also download the Envision AppImage. Once downloaded, unzip the archive, you should find a file named Envision-x86_64.AppImage. You can do this from the properties menu in your file manager, or run chmod +x Envision-x86_64.AppImage in your terminal.

Then double click the file to run it. +

Setup OpenXR Runtime

This guide will help you set up your VR or AR headset for use with Stardust. Although support for many headsets on Linux is still under active development, there are a number of good options available. If you already have OpenXR set up on your Linux distribution, head to the Full Installation page to get Stardust XR installed.

info

If you want to try Stardust in a window on your existing device you can skip this step and checkout the Quick Start Guide.

Envision

note

Envision

We highly recommend using Envision, an easy to use GUI for utilizing Monado which is what you likely use if you have a wired headset. Envision also comes with WiVRn support for connecting to headsets like the Meta Quest wirelessly.

Check the hardware table (for Monado/WiVRn support) to ensure your hardware and headset are compatible. If you're using an Nvidia card, you'll need to install proprietary drivers. If you're using a modern Nvidia card on Fedora (with RPMFusion) or Ultramarine, this command will install the driver:

sudo dnf install akmod-nvidia
sudo akmods
# Wait for this to finish before rebooting, this may take up to 15 minutes

AMD graphic cards do not require additional drivers.

Fedora LogoUltramarine LogoFedora and derivatives (except Enterprise Linux)

info

Envision is packaged in the Terra repository. If you are using Ultramarine Linux, Bazzite, or Aurora, this repository comes pre-installed, otherwise you will need to add the repository:

If you are using a Fedora Atomic Edition or derivative you will need to run the following command:

curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo
sudo rpm-ostree install terra-release

Standard Fedora Editions and derivatives can directly install terra-release:

sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release

Then, install Envision using:

sudo dnf install envision

LogoArch Linux

For Arch Linux, Envision is available via the AUR. We suggest using an AUR helper, like Paru:

paru -S envision-xr-git

LogoNixOS

On NixOS, it's generally easiest to follow the instructions at https://lvra.gitlab.io/docs/distros/nixos/ as Envision is currently unstable on NixOS and troubleshooting SteamVR can be tricky.

Other options for installation

You can also download the Envision AppImage. Once downloaded, unzip the archive, you should find a file named Envision-x86_64.AppImage. You can do this from the properties menu in your file manager, or run chmod +x Envision-x86_64.AppImage in your terminal.

Then double click the file to run it. Envision App Image

When you launch Envision, you will have to build a profile for your headset, check the Envision website for instructions specific to what you have. You can take a look at this section of our Meta Quest setup video for an example using WiVRn. Envision Build Profile

Once you have one of these options installed, a quick way to test on the headset is by running xrgears. xrgears is a demo that comes with Monado.

tip

If you run into any problems during installation, the Meta Quest Walkthrough may contain information helpful in regards to dependencies, firewalls and drivers.

ALVR

Another option is ALVR, you can check the GitHub repository for more information https://github.com/alvr-org/ALVR

SteamVR

If you'd like to use SteamVR, head over to https://lvra.gitlab.io/docs/steamvr/, although it is not the recommended way to use VR within Linux due to poor support.

- + \ No newline at end of file diff --git a/index.html b/index.html index ade24ea3..d60139a7 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,13 @@ Stardust XR - +

Stardust XR

Stardust... We Fight For the Users!

Flexible

Flexible

Stardust allows developers to make XR widgets or interfaces and run them among others. You don't have to make a whole system UI, just a few pieces.

Streamlined

Streamlined

Stardust is made using StereoKit, an XR application/rendering toolkit allowing for a fast and lightweight display server.

- + \ No newline at end of file diff --git a/roadmap.html b/roadmap.html index ada73063..ae07c3c8 100644 --- a/roadmap.html +++ b/roadmap.html @@ -4,13 +4,13 @@ Roadmap | Stardust XR - +

Roadmap

Warning. This roadmap is now outdated.

1.0 (Minimum Viable Product)

  • Core functionality
    • IPC+RPC
  • Client
    • Fusion
      • Initial connection
      • Node type creation/destruction
      • Interface interaction
      • Callbacks
      • Documentation
  • Server
    • Per-client scenegraph
    • Statically link StereoKit
    • Basic features
      • Logic step
      • Spatial transforms
        • Absolute movement
        • Relative movement
        • Spatial parenting
      • Models
        • Loading
        • Setting material parameters
      • Fields (SDFs for interaction)
        • Box field
        • Rounded box field
        • Sphere field
      • Input
        • Input methods
          • Hand input
            • Creation from OpenXR
            • Creation from StereoKit (flatscreen)
            • Interaction with clients
          • Pointer input
            • Creation from StereoKit (flatscreen, mouse cursor ray)
            • Interaction with clients
        • Input handler
          • Async input propagation through distance
      • Environment
        • Set skytex
        • Set skylight
      • Items
        • Base item class
        • Base item accepter class
        • Environment equirectangular item
        • Environment equirectangular accepter
      • 2D integration
        • Panels
          • Panel item
          • smithay (for Wayland)
            • Rendering
            • Input seats
        • Panel shells
          • Accept panel items
          • Put surface on model material's texture
          • Feed input through to panel
          • Release panel items
  • Daily Drivable System
    • GUI App Launcher (Protostar)
      • Get desktop files
      • Find and parse icons
      • Display icons and desktop files in grid
      • Launch executables spatially
    • Panel Item UI
      • Flatland

More to come!

- + \ No newline at end of file