andrew b0c95b9e78 Add desktop app service and VM dev session tooling
Introduces a new `core/applications` QML/C++ module (`Nebula.Applications`) to discover `.desktop` entries, expose filterable application models, and launch installed apps safely from the shell. The desktop launcher now uses real installed apps with themed icon loading and fallback glyphs, adds output-aware surface sizing via `OutputTracker`, and wires in image/icon providers. It also adds VMware-focused Sway/shell wrapper scripts, updates Sway config/session env defaults, and refreshes README docs to document the new development flow and Desktop 0.1 behavior.
2026-08-26 17:19:30 +12:00

NebulaOS

A Linux desktop environment built around a custom compositor, shell, and service stack.

Structure

Path Purpose
core/nebula-core Core runtime and platform APIs (growing)
core/applications Installed .desktop discovery and launching
compositor/ Compositor configuration (Sway is temporary)
shells/ Desktop and future Bigscreen shells
packages/ Shared UI (Nebula.UI), icons, API, and design tokens
services/ System services (audio, network, bluetooth, power, accounts)
session/ Session manager and desktop entry
packaging/ Distribution packaging (Ubuntu)
branding/ Boot assets, wallpapers, and sounds
scripts/ Development helpers (including the VMware shell wrapper)

Shells

Nebula Desktop 0.1 is a C++20 Qt Quick/QML Wayland shell using LayerShellQt. It can discover installed applications and launch them (including Foot) from the GUI. See shells/desktop/.

Nebula Bigscreen is planned as a separate Qt Quick/QML shell with a controller-first interaction model, sharing Nebula.UI and Nebula.Applications.

Standalone Nebula applications may still use React/Tauri where that is a better fit. The operating-system shell does not.

An archived React desktop prototype lives in shells/desktop/prototype-react/ as a design reference only.

Current stack

Ubuntu
 ↓
Wayland
 ↓
Sway          temporary compositor
 ↓
Nebula Shell  Qt Quick/QML

Applications and games render on their own Wayland/XWayland paths. They are not composited inside QML.

Getting started (development VM)

cd shells/desktop/shell
rm -rf build
cmake -S . -B build
cmake --build build -j$(nproc)

Then, from the repository root:

./compositor/sway/dev/run-sway-vm.sh

or:

sway -c compositor/sway/nebula-sway.conf

The VMware wrapper sets QT_QUICK_BACKEND=software. Production nebula-shell does not. Details: shells/desktop/README.md and compositor/README.md.

The Qt shell must be compiled on Linux (the Ubuntu NebulaOS VM). It will not build on Windows.

S
Description
No description provided
Readme
1.8 MiB
Languages
C++ 46.5%
QML 31.4%
JavaScript 10.6%
CSS 5.2%
CMake 3.7%
Other 2.6%