Cyberneticmelon 5ea147f9fe Added cli update
2025-05-14 19:58:00 -07:00
2023-01-14 10:38:39 -05:00
2025-04-01 14:24:06 -07:00
2024-06-05 14:34:45 -04:00
2025-05-14 19:58:00 -07:00
2025-04-01 14:23:33 -07:00
2024-08-21 00:49:11 -04:00
2025-05-14 19:58:00 -07:00
2024-08-21 04:10:13 +00:00
2023-05-19 18:12:22 -04:00
2025-04-01 14:24:06 -07:00
2022-05-11 23:50:46 -04:00
2025-05-14 19:58:00 -07:00
2022-05-11 23:50:46 -04:00
2023-03-25 03:06:50 -04:00

Stardust XR Server

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.

workflow

Core Dependencies

Functionality Ubuntu (apt) Fedora (dnf) Arch Linux (pacman)
EGL / GL libegl-dev, libgl-dev, libgbm-dev, libdrm-dev mesa-libEGL-devel, mesa-libGL-devel, mesa-libgbm-devel, libdrm-devel mesa (includes development files), libdrm
GLES 3.2 libgles2-mesa-dev mesa-libGLES-devel mesa (provides GLES libraries and headers)
X11 libx11-dev, libxcb1-dev, libxfixes-dev, libxau-dev libX11-devel, libxcb-devel, libXfixes-devel, libXau-devel libx11, libxcb, libxfixes, libxau
Font Rendering libfontconfig1-dev, libfreetype6-dev fontconfig-devel, freetype-devel fontconfig, freetype2
Compression zlib1g-dev, libbz2-dev, libbrotli-dev, liblzma-dev zlib-devel, bzip2-devel, brotli-devel, xz-devel zlib, bzip2, brotli, xz
Text Rendering libharfbuzz-dev, libgraphite2-dev harfbuzz-devel, graphite2-devel harfbuzz, graphite
XML / Parsing libxml2-dev, libexpat1-dev, libpcre2-dev libxml2-devel, expat-devel, pcre2-devel libxml2, expat, pcre2
Standard C++ libstdc++-dev-12 libstdc++-devel gcc-libs (includes libstdc++)
XKB / Keyboard libxkbcommon-dev, libxkbcommon-x11-dev libxkbcommon-devel, libxkbcommon-x11-devel libxkbcommon, libxkbcommon-x11
Core System libglib2.0-dev glib2-devel glib2
PNG Support libpng-dev libpng-devel libpng
Cargo (Rust) cargo cargo cargo (part of the rust package)
CMake cmake cmake cmake
dlopen (glibc) libc6-dev glibc-devel glibc
OpenXR Loader libopenxr-dev, libopenxr-loader1, libopenxr1-monado openxr-devel openxr

Command line installation of core & dynamic dependencies are provided below:

Ubuntu/Debian

  sudo apt update && sudo apt install \
  build-essential \
  cargo \
  cmake \
  libxkbcommon-dev libxkbcommon-x11-dev libstdc++-dev libx11-dev libxfixes-dev \
  libegl-dev libgbm-dev libfontconfig1-dev libxcb1-dev libgl-dev libdrm-dev \
  libexpat1-dev libfreetype6-dev libxml2-dev libxau-dev zlib1g-dev libbz2-dev \
  libpng-dev libharfbuzz-dev libbrotli-dev liblzma-dev libglib2.0-dev \
  libgraphite2-dev libpcre2-dev
  
Fedora

  sudo apt update && sudo apt install \
  cargo \
  cmake \
  libxkbcommon-dev libxkbcommon-x11-dev libstdc++-dev libx11-dev libxfixes-dev \
  libegl-dev libgbm-dev libfontconfig1-dev libxcb1-dev libgl-dev libdrm-dev \
  libexpat1-dev libfreetype6-dev libxml2-dev libxau-dev zlib1g-dev libbz2-dev \
  libpng-dev libharfbuzz-dev libbrotli-dev liblzma-dev libglib2.0-dev \
  libgraphite2-dev libpcre2-dev
  
Arch Linux

  sudo pacman -Syu --needed \
  cargo \
  cmake \
  libxkbcommon libxkbcommon-x11 libx11 libxfixes mesa fontconfig libxcb \
  libdrm expat freetype2 libxml2 libxau zlib bzip2 libpng harfbuzz brotli \
  xz glib2 graphite pcre2
  

Installation

More detailed instructions and walkthroughs are provided at https://www.stardustxr.org

The Terra Repository is required, and comes pre-installed with Ultramarine Linux. Other Fedora Editions and derivatives can directly install terra-release:

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

For a full installation of the Stardust XR server and a selected group of clients, run:

sudo dnf group install stardust-xr

Manual Build

We've provided a manual installation script here that clones and builds the Stardust XR server along with a number of other clients from their respective repositories, and provides a startup script for automatically launching some clients.

After cloning the repository

cargo build

Usage

Note

For help with setting up an XR headset on linux, visit https://stardustxr.org/docs/get-started/setup-openxr

The Stardust XR Server is a server that runs clients, so without any running, you will see a black screen. If you only have the server installed, we recommend also cloning and building the following clients to start: Flatland, which allows normal 2D apps to run in Stardust, Protostar, which contains Hexagon Launcher, an app launcher menu, and Black Hole to quickly tuck away your objects and apps (kind of like desktop peek on Windows).

First, try running cargo run -- -f in a terminal window to check out flatscreen mode, (or stardust-xr-server -f / stardust-xr-server_dev -f if you installed via dnf or the manual installation script, respectively, as they provide symlinks.)

If there aren't already any clients running, you'll need to manually launch them by either navigating to their repositories and running cargo run, or running them via their names if you installed via dnf or the manual installation script, such as flatland, hexagon_launcher, etc.

Important

Flatland must be running for 2D apps to launch.

Startup Script

A startup script can be created at ~/.config/stardust/startup that will launch specified settings and clients/applications, an example of which is shown here. If you used the installation script, one will have already been made for you. This allows wide flexibility of what clients to launch upon startup (and, for example, where, using the Gravity client to specify X Y and Z co-ordinates).

Flatscreen Navigation

A video guide showcasing flatscreen controls is available here

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

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

To drag applications out of the app launcher, hold down Shift + ~ updated_drag

XR Navigation

A video guide showcasing XR controls is available here

Quest 3 Hand tracking: Pinch to drag and drop, grasp with full hand for grabbing, point and click with pointer finger to click or pinch from a distance

hand_pinching

Quest 3 Controller: Grab with the grip buttons, click by touching the tip of the cones or by using the trigger from a distance

controller_click

Description
The Stardust XR server, required to run and connect clients
Readme GPL-2.0 4.6 MiB
0.45.1 Latest
2024-09-15 12:27:10 -04:00
Languages
Rust 94%
Nix 4.5%
HLSL 1.5%