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.
128 lines
6.1 KiB
Plaintext
128 lines
6.1 KiB
Plaintext
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
|