This project is a usable Linux display server that reinvents human-computer interaction for all kinds of XR, from putting 2D/XR apps into various 3D shells for varying uses to SDF-based interaction.
- Cargo
- CMake
- EGL+GLES 3.2
- GLX+Xlib
- fontconfig
- dlopen
- OpenXR Loader (required even if run in flatscreen mode)
cargo build
The latest stable server is automatically built to an appimage at https://github.com/StardustXR/server/releases for easy testing.
First, try running cargo run
in a terminal window. If a headset is plugged in and OpenXR is working no window will show up. However, the headset should show the same things as the window that opens:
Stardust won't do anything interesting without clients! Try some from https://github.com/StardustXR.
You can set a default skytex/skylight by putting your favorite HDRI equirectangular sky in ~/.config/stardust/skytex.hdr
. Certain clients can override this.
Flatscreen mode when the default skybox is Zhengyang Gate:
If the stardust server can't connect to an OpenXR runtime or you force it into flatscreen mode with -f
, the server will show in a window.
You can navigate around by right click + dragging to look around, Shift+W/A/S/D/Q/E to move. If you have a virtual hand, left click pinches, right click points, both make a fist.
The server will show up in windowed mode no matter what with your mouse pointer being turned into a 3D pointer. Keyboard input will be sent to whatever your mouse is hovering over like visionOS simulator. Flatscreen mode upon initial startup:
The server will, if in XR mode, be overlaid using the OpenXR overlay extension with the given priority.
Some runtimes such as Monado may emulate a controller using a hand, and this messes with Stardust's input system. Set this flag to ignore the controllers that the OpenXR runtime provides.
When wayland and OpenXR and such are initialized, run the given executable (such as a bash script) with all the environment variables needed to connect all clients of any type to the server. If not set, the server will run the executable at ~/.config/stardust/startup
if it exists. This is how stardust desktop environments can be made.
help
-
nix build .#gnome-graphical-test
This test uses Nix to reproducibly execute a QEMU virtual machine which spawns a full Gnome desktop. It runs
monado-service
,stardust-xr-server
flatland
underneath of Gnome and then attachesweston-cliptest
to theflatland
process running underneath ofstardust-xr-server
, the result is a screenshot in PNG format that should look like expected. If any process in this test produces an exit code above 0, the test will fail, graphical bugs should be visible in the screenshot. An example of the result is below.
nix flake check
will build every test underneath of the checks
attribute in the flake.nix