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.
Nebula Applications
Shared C++ service for discovering and launching installed Linux applications from .desktop entries.
Desktop and the future Bigscreen shell should both use this library. It has no Desktop-specific QML. Window naming helpers (displayNameForWindow, iconNameForWindow) are intended for WindowService.
Behaviour
- Scans XDG application directories (
XDG_DATA_HOME,XDG_DATA_DIRS, with the usual~/.local/shareand/usr/sharedefaults). - Hides entries with
Hidden=trueorNoDisplay=true, and respectsOnlyShowIn/NotShowIn/TryExec. - Exposes a
QAbstractListModelto QML (desktopId,name,genericName,comment,iconName,categories,terminal). - Parses
StartupWMClassand can map a compositorapp_id/ window class to a friendlyName(displayNameForWindow,iconNameForWindow) forWindowService. - Launches with
QProcess::startDetachedandQProcess::splitCommand. Does not use a shell. - Strips or substitutes common Exec field codes when launching without files/URLs.
QML module URI: Nebula.Applications.
See shells/desktop/README.md for launcher behaviour and session integration.