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
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
# Convenience wrapper; the canonical VMware nebula-shell launcher is
# scripts/run-nebula-vm.sh
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
exec /bin/sh "${script_dir}/../../../scripts/run-nebula-vm.sh" "$@"
+39
View File
@@ -0,0 +1,39 @@
#!/bin/sh
# Recommended VMware development session entry point.
#
# Sets compositor-side development environment (cursor theme, software
# cursors if needed) and starts Sway with the Nebula development config.
# Sway then autostarts nebula-shell via scripts/run-nebula-vm.sh.
#
# Usage:
# ./compositor/sway/dev/run-sway-vm.sh
#
# Equivalent:
# export XCURSOR_THEME=Adwaita XCURSOR_SIZE=24
# sway -c compositor/sway/nebula-sway.conf
#
# Skip shell autostart:
# NEBULA_SHELL_AUTOSTART=0 ./compositor/sway/dev/run-sway-vm.sh
set -eu
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
repo_root=$(CDPATH= cd -- "${script_dir}/../../.." && pwd)
config="${repo_root}/compositor/sway/nebula-sway.conf"
export XDG_CURRENT_DESKTOP="${XDG_CURRENT_DESKTOP:-NebulaOS}"
export XDG_SESSION_DESKTOP="${XDG_SESSION_DESKTOP:-nebula}"
export XCURSOR_THEME="${XCURSOR_THEME:-Adwaita}"
export XCURSOR_SIZE="${XCURSOR_SIZE:-24}"
# VMware often needs software cursors. This is development-specific.
export WLR_NO_HARDWARE_CURSORS="${WLR_NO_HARDWARE_CURSORS:-1}"
if [ ! -f "${config}" ]; then
echo "nebula: missing Sway config at ${config}" >&2
exit 1
fi
cd "${repo_root}"
echo "nebula: starting Sway with ${config}"
exec sway -c "${config}" "$@"
+42 -9
View File
@@ -2,17 +2,53 @@ set $mod Mod4
set $term foot
# NebulaOS temporary development compositor configuration
#
# Sway is invisible infrastructure. Nebula Desktop is the visible shell.
# Do NOT add a bar block; Nebula provides its own top bar.
# No Sway wallpaper or UI
# -----------------------------------------------------------------------------
# Output / resolution
# -----------------------------------------------------------------------------
# Development default: 1:1 scale, fill the current VMware display.
# Request 1920x1080 when the output advertises that mode. If the mode is not
# available, Sway keeps the output's preferred mode instead of failing.
#
# This is a development convenience, not a production architecture requirement.
# Inspect modes: swaymsg -t get_outputs
# Force another mode (example): swaymsg output <name> mode 1600x900
output * scale 1
output * mode 1920x1080
output * bg #000000 solid_color
# Development terminal
# -----------------------------------------------------------------------------
# Cursor
# -----------------------------------------------------------------------------
# The compositor owns the pointer cursor, not QML.
# A branded Nebula cursor theme is a later task.
seat * xcursor_theme Adwaita 24
# If the cursor is invisible in VMware, start Sway with:
# WLR_NO_HARDWARE_CURSORS=1 sway -c compositor/sway/nebula-sway.conf
# compositor/sway/dev/run-sway-vm.sh sets that automatically.
# -----------------------------------------------------------------------------
# Nebula shell autostart
# -----------------------------------------------------------------------------
# Starts nebula-shell through the VMware development wrapper, which sets
# QT_QUICK_BACKEND=software. Production sessions must start nebula-shell
# without that variable.
#
# Disable autostart for debugging:
# NEBULA_SHELL_AUTOSTART=0 sway -c compositor/sway/nebula-sway.conf
#
# Run from the repository root so this relative path resolves, or use
# compositor/sway/dev/run-sway-vm.sh which does that for you.
exec /bin/sh scripts/run-nebula-vm.sh
# -----------------------------------------------------------------------------
# Emergency development shortcuts (not the normal UX)
# -----------------------------------------------------------------------------
bindsym $mod+Return exec $term
# Exit compositor
bindsym $mod+Shift+e exec swaymsg exit
# Reload configuration
bindsym $mod+Shift+c reload
# Remove Sway window decorations
@@ -21,6 +57,3 @@ default_floating_border pixel 0
# Basic floating controls for development
floating_modifier $mod normal
# Do NOT add a bar block.
# Nebula provides its own top bar.