Window Management
How Sweets moves, resizes, and decorates windows, and how taskbars and switchers integrate.
Sweets is a dynamic tiling compositor: windows tile automatically, and you can move, resize, and float them with the keyboard or the mouse.
Move and resize
- Move: hold
Superand drag a window with the left mouse button. A floating window keeps its new position; a tiled window snaps back into its slot on release. - Resize: hold
Superand drag with the right mouse button. A floating window resizes freely (the nearest corner follows the cursor). On a tiled window the drag moves the master/stack split horizontally and trades height with the neighbouring stacked window vertically. Tiled resize keeps the last complete frame visible while clients redraw, so partially updated buffers do not leave empty regions in the new slots. Apps that drag their own titlebars work too.
For the full drag-to-reorder mechanics and the drag_center_cursor option,
see Mouse Bindings.
Borders and decorations
- Each window has a border; the focused window's border is highlighted. Width and colors are configurable — see Layout.
- Sweets draws the frame, so clients are asked to drop their own titlebars
(server-side decorations via
xdg-decoration).
Fullscreen
- Toggle fullscreen on the focused window with
Super+F(thefullscreenkey action). The window covers its output above every other layer. - Bringing another window onto a workspace that already has a fullscreen or
maximized window — whether by opening a new window there or moving one
in from another workspace or monitor — depends on who put the existing window
into that mode:
- If you toggled it (
Super+Ffor fullscreen,Super+Shift+Ffor maximize), the mode exits and the arriving window takes focus — so launching or moving something onto a fullscreen or maximized terminal drops you straight onto it instead of hiding it behind. - If the client itself requested fullscreen/maximize (games, fullscreen
video players) — or a window rule opened it with
fullscreen = true/maximized = true— the window keeps the screen and focus, and the arriving window joins in the background. This prevents a stray launch or move from yanking you out of a game or video.
- If you toggled it (
- A window that explicitly asks for attention (xdg-activation, or a window rule
with
focus = true) is still focused regardless. - A fullscreen or maximized window owns keyboard focus on its workspace: the
focus-movement keys (
focus_next/focus_prevand the directionalfocus_left/_right/_up/_down) will not move focus to a window hidden behind it. On a multi-monitor setup directional focus can still cross to another output, so such a window on one screen never traps focus to that screen. - Moving focus back onto a monitor whose workspace has a fullscreen or maximized window lands on that window, not a window hidden behind it — so returning from another monitor always restores focus to the window you can actually see.
- The window-movement keys (
move_left/_right/_up/_down) do nothing while a window is fullscreen or maximized: it covers its workspace, so there is no visible reorder, and the pointer is left where it is rather than being recentered. Exit the mode to rearrange. - Focus-follows-mouse does not pull keyboard focus away from a focused fullscreen window: with the pointer over another output's window, the fullscreen window keeps focus. Use the focus keys (or click) to leave it deliberately.
Pointer behavior
- Switching workspaces moves the pointer to the center of the selected output, so keyboard-driven workspace changes and the pointer's current output stay in sync before launching the next app.
- Opening a new window moves the pointer to the center of that new window.
- Keyboard focus movement (
Super+J/K/H/LandSuper+Arrows) moves the pointer to the center of the newly focused window.
Pointer follow and optional hide-after-follow behavior are configurable in
sweets.pointer{ ... }.
Taskbars and window switchers
Sweets implements wlr-foreign-toplevel-management-unstable-v1, so taskbars,
launchers, and window switchers can list normal windows and request common
actions. The current integration reports title, app-id, output, focused state,
fullscreen, maximized, and minimized state. Clients may request activate, close,
fullscreen, maximize, and minimize.
Minimizing a window hides it from the layout and focus while keeping its
taskbar entry. A minimized window is restored when the taskbar requests it (a
minimize toggle or an activate request), with the unminimize key action, or
with the unminimize IPC command. The minimize/unminimize key actions and
IPC commands act on the focused and last-minimized window respectively.
Sweets also implements ext-workspace-v1. Panels that support it can list the
10 configured workspaces per output and request activation. Workspaces are
static for now: create, remove, assign, and deactivate requests are ignored.