-
-
Notifications
You must be signed in to change notification settings - Fork 10
Overall Structure of Stardust
"Stardust" itself refers to a complete user interface comprised of Stardust Core and enough modules to make it usable independent of another device. "Stardust Core" only refers to the core that includes the engine, API, input, module loader, and OpenXR integration.
Stardust Core must use modules to expand its capability. Modules have a wide range of capabilities:
- Application compatibility (Wayland, OpenXR, etc.)
- Core system interaction (notification area, application menu, etc.)
- Additional hardware support (SLAM sensor, camera, microphone, hand tracking module, etc) that is not covered by OpenXR
- Virtual hardware (virtual controller, virtual keyboard, etc)
- Highly integrated applications (Exokit, 2D web browser, etc)
As Stardust is an XR UI and there is no set terminology for many XR elements, this is the current language used in Stardust documentation and source code:
Module
- additional code to add functionality to Stardust. These can be hotplugged at will by the user.
Keyboard Adapter
- an object that can change the output of virtual keyboards. Examples include custom IMEs, autocorrect, and text suggestion. A virtual keyboard is plugged into the input, and the output is connected to another keyboard input.
Virtual Keyboard
- same as any virtual keyboard, but has a wire that can connect to inputs on panel shells, keyboard adapters, and other inputs.
Physical Keyboard Adapter
- built into Stardust Core, this is a virtual keyboard that simply takes the input from physical keyboards via libinput and allows it to be connected to multiple applications via wire.
Panel
- an adapter that allows Stardust to interact and view 2D content such as Wayland surfaces, X windows, and web pages.
Panel Shell
- a container around any panel that defines how you can interact with it in XR. There can be different panel shells for different panels at the same time.
App Shell
- a remake of an application's UI from scratch, optimized for XR. Examples include a 3D analog clock you can place on the wall, a time machine-style control panel for backups, and a shelf containing video games you can pick up and play via Lutris.
Lens
- an adapter that allows Stardust to interact and view XR content such as OpenXR clients, SteamVR games, and Exokit Reality Tabs.
Lens Frame
- a container around any lens that defines how you can interact with it and composite it in XR. The other method of compositing is by layers, however lens frames do not by default fill your whole view so they are optimized for application development and temporary information filters.
Here is a flowchart to show how 2D and XR applications will run inside Stardust: