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.
This commit is contained in:
2026-08-26 17:19:30 +12:00
parent a7d204f241
commit b0c95b9e78
31 changed files with 1673 additions and 72 deletions
+26 -5
View File
@@ -6,7 +6,8 @@ A Linux desktop environment built around a custom compositor, shell, and service
| Path | Purpose |
|------|---------|
| `core/nebula-core` | Core runtime and platform APIs |
| `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 |
@@ -14,12 +15,13 @@ A Linux desktop environment built around a custom compositor, shell, and service
| `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** (production) is a C++20 Qt Quick/QML Wayland shell using LayerShellQt. See `shells/desktop/`.
**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 Core.
**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.
@@ -39,8 +41,27 @@ Nebula Shell Qt Quick/QML
Applications and games render on their own Wayland/XWayland paths. They are not composited inside QML.
## Getting started
## Getting started (development VM)
Desktop shell build instructions: `shells/desktop/README.md`.
```bash
cd shells/desktop/shell
rm -rf build
cmake -S . -B build
cmake --build build -j$(nproc)
```
Then, from the repository root:
```bash
./compositor/sway/dev/run-sway-vm.sh
```
or:
```bash
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.