Add Nebula.Windows with Sway IPC backend
Introduces a new `core/windows` module (`Nebula.Windows`) with `WindowService`, window/workspace models, and a Sway IPC backend for live window tracking and control (focus, close, move/resize, snap, maximize/restore, minimize, workspace switch). The desktop shell now links this module, uses compositor focus for top-bar active app text, and adds an Open Windows section in the launcher with focus/close actions. Also updates application metadata handling to parse `StartupWMClass` and map window `app_id`/class to friendly names and icons, and revises Sway config/docs for the new floating-first Desktop 0.2 behavior with temporary compositor-provided decorations.
This commit is contained in:
@@ -8,6 +8,7 @@ A Linux desktop environment built around a custom compositor, shell, and service
|
||||
|------|---------|
|
||||
| `core/nebula-core` | Core runtime and platform APIs (growing) |
|
||||
| `core/applications` | Installed `.desktop` discovery and launching |
|
||||
| `core/windows` | Window and workspace management (`WindowService`) |
|
||||
| `compositor/` | Compositor configuration (Sway is temporary) |
|
||||
| `shells/` | Desktop and future Bigscreen shells |
|
||||
| `packages/` | Shared UI (`Nebula.UI`), icons, API, and design tokens |
|
||||
@@ -19,9 +20,9 @@ A Linux desktop environment built around a custom compositor, shell, and service
|
||||
|
||||
## 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 Desktop 0.2** is a C++20 Qt Quick/QML Wayland shell using LayerShellQt. It is floating-first: ordinary applications open as independently movable windows. 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`.
|
||||
**Nebula Bigscreen** is planned as a separate Qt Quick/QML shell with a controller-first interaction model, sharing `Nebula.UI`, `Nebula.Applications`, and `Nebula.Windows`.
|
||||
|
||||
Standalone Nebula applications may still use React/Tauri where that is a better fit. The operating-system shell does not.
|
||||
|
||||
@@ -34,13 +35,30 @@ Ubuntu
|
||||
↓
|
||||
Wayland
|
||||
↓
|
||||
Sway temporary compositor
|
||||
Sway temporary compositor / window manager
|
||||
↓
|
||||
Nebula Shell Qt Quick/QML
|
||||
Nebula Shell Qt Quick/QML via LayerShellQt
|
||||
```
|
||||
|
||||
Window management is abstracted:
|
||||
|
||||
```text
|
||||
Nebula QML
|
||||
↓
|
||||
WindowService
|
||||
↓
|
||||
Sway IPC backend now
|
||||
Nebula compositor later
|
||||
↓
|
||||
Sway
|
||||
/ \
|
||||
Wayland app XWayland app
|
||||
```
|
||||
|
||||
Applications and games render on their own Wayland/XWayland paths. They are not composited inside QML.
|
||||
|
||||
Sway currently provides temporary window decorations (title bar and border) so windows can be identified, dragged, and resized. Custom Nebula window chrome is later work.
|
||||
|
||||
## Getting started (development VM)
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user