Files
Nebula-OS/compositor/sway/nebula-sway.conf
T
andrew e4ea19cd09 Fix Sway floating frame geometry handling
Use the floating container geometry whenever a view is inside a `floating_con`, so frame/deco/content coordinates stay stable and window chrome no longer jumps during refreshes. Also remove the custom `title_format` left-padding (and its related comment) from the Sway config so title text is no longer artificially offset.
2026-08-26 23:00:11 +12:00

128 lines
6.1 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.
#
# Nebula overlays traffic-light controls on the focused window title bar.
# Menu-style chrome (application name, future File/Edit) stays in the top bar.
#
# This is temporary infrastructure until Nebula owns server-side decorations.
# Layer-shell surfaces (desktop, top bar, launcher, window chrome) are not
# xdg_shell/XWayland views and are not decorated by these settings.
font pango:Ubuntu 10
titlebar_padding 14 10
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