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:
@@ -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" "$@"
|
||||
@@ -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}" "$@"
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user