Files
Nebula-OS/compositor/sway/nebula-sway.conf
T
andrew 2f59d3c115 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.
2026-08-26 18:20:56 +12:00

127 lines
6.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
#
# Nebula Desktop 0.2 is floating-first: ordinary application windows open
# as independently movable/resizable floating windows, not tiled to fill
# the workspace. Sway remains the temporary compositor/window manager.
# Custom Nebula window decoration is later work.
# -----------------------------------------------------------------------------
# Output / resolution
# -----------------------------------------------------------------------------
# Development default: 1:1 scale, fill the current display.
# No mode is pinned, so Sway uses the output's preferred mode (typically the
# native or current size). VMware Autofit Guest can then follow the host window.
#
# Inspect modes: swaymsg -t get_outputs
# Force another mode (example): swaymsg output <name> mode 1600x900
output * scale 1
output * bg #000000 solid_color
# -----------------------------------------------------------------------------
# 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.
# -----------------------------------------------------------------------------
# Focus / pointer
# -----------------------------------------------------------------------------
# Do not warp the pointer when focusing windows; this is a mouse-first desktop.
mouse_warping none
focus_follows_mouse yes
# -----------------------------------------------------------------------------
# Temporary window decorations
# -----------------------------------------------------------------------------
# Sway draws a restrained title bar and border on normal application windows
# so they can be identified, dragged, and resized with the mouse.
#
# This is temporary infrastructure. Nebula does not yet own client/server-side
# decorations. Do not treat these colours or metrics as the final design.
#
# Layer-shell surfaces (desktop, top bar, launcher) are not xdg_shell/XWayland
# views and are not decorated by these settings.
font pango:Ubuntu 10
titlebar_padding 7 3
titlebar_border_thickness 1
default_border normal 1
default_floating_border normal 1
hide_edge_borders none
# class border backgr. text indicator child_border
client.focused #3d4d62 #1a222e #e8ecf2 #7ea0c4 #3d4d62
client.focused_inactive #2a3342 #141a24 #8e99ab #2a3342 #2a3342
client.unfocused #1a2029 #10151c #6b7587 #1a2029 #1a2029
client.urgent #c98888 #1a222e #e8ecf2 #c98888 #c98888
client.placeholder #1a2029 #0b0f16 #6b7587 #1a2029 #1a2029
client.background #0b0f16
# -----------------------------------------------------------------------------
# Floating-first application windows
# -----------------------------------------------------------------------------
# Match only ordinary application views:
# Wayland → shell="xdg_shell" (app_id)
# XWayland → shell="xwayland" (class)
#
# Layer-shell clients (Nebula desktop, top bar, launcher, overlays) are a
# different shell and are not matched. They stay on BACKGROUND / TOP / OVERLAY.
#
# Size is a percentage of the *workspace* (ppt). Sway workspace geometry
# already excludes the 40px Nebula top-bar exclusive zone, so 70% × centred
# stays in the usable work area on any resolution. Do not hard-code pixels.
for_window [shell="xdg_shell"] floating enable, border normal, resize set width 70 ppt height 70 ppt, move position center
for_window [shell="xwayland"] floating enable, border normal, resize set width 70 ppt height 70 ppt, move position center
# -----------------------------------------------------------------------------
# Mouse move and resize
# -----------------------------------------------------------------------------
# Title bar: drag. Window edges: resize.
# Development fallback (does not replace title-bar interaction):
# Super + Left Mouse → move
# Super + Right Mouse → resize
floating_modifier $mod normal
# -----------------------------------------------------------------------------
# Development snap shortcuts
# -----------------------------------------------------------------------------
# Preparation for later Snap Layouts. Keyboard is not the only way to arrange
# windows; the mouse still moves and resizes floating windows directly.
# Percentages are workspace-relative (usable area below the top bar).
bindsym $mod+Left resize set width 50 ppt height 100 ppt, move position 0 ppt 0 ppt
bindsym $mod+Right resize set width 50 ppt height 100 ppt, move position 50 ppt 0 ppt
bindsym $mod+Up resize set width 100 ppt height 100 ppt, move position 0 ppt 0 ppt
bindsym $mod+Down resize set width 70 ppt height 70 ppt, move position center
# -----------------------------------------------------------------------------
# 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
bindsym $mod+Shift+q kill
bindsym $mod+Shift+e exec swaymsg exit
bindsym $mod+Shift+c reload