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 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