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:
@@ -5,6 +5,11 @@ set $term foot
|
||||
#
|
||||
# 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
|
||||
@@ -28,6 +33,76 @@ seat * xcursor_theme Adwaita 24
|
||||
# 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
|
||||
# -----------------------------------------------------------------------------
|
||||
@@ -46,12 +121,6 @@ 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
|
||||
|
||||
# Remove Sway window decorations
|
||||
default_border pixel 0
|
||||
default_floating_border pixel 0
|
||||
|
||||
# Basic floating controls for development
|
||||
floating_modifier $mod normal
|
||||
|
||||
Reference in New Issue
Block a user