Dwindle Layout

Dwindle Layout

Dwindle is a BSPWM-like layout, where every window on a workspace is a member of a binary tree.

Quirks

Dwindle splits are NOT PERMANENT. The split is determined dynamically with the W/H ratio of the parent node. If W > H, it’s side-by-side. If H > W, it’s top-and-bottom. You can make them permanent by enabling preserve_split.

Config

category name: dwindle

namedescriptiontypedefault
pseudotileenable pseudotiling. Pseudotiled windows retain their floating size when tiled.boolfalse
force_split0 -> split follows mouse, 1 -> always split to the left (new = left or top) 2 -> always split to the right (new = right or bottom)int0
preserve_splitif enabled, the split (side/top) will not change regardless of what happens to the container.boolfalse
smart_splitif enabled, allows a more precise control over the window split direction based on the cursor’s position. The window is conceptually divided into four triangles, and cursor’s triangle determines the split direction. This feature also turns on preserve_split.boolfalse
smart_resizingif enabled, resizing direction will be determined by the mouse’s position on the window (nearest to which corner). Else, it is based on the window’s tiling position.booltrue
permanent_direction_overrideif enabled, makes the preselect direction persist until either this mode is turned off, another direction is specified, or a non-direction is specified (anything other than l,r,u/t,d/b)boolfalse
special_scale_factorspecifies the scale factor of windows on the special workspace [0 - 1]float1
split_width_multiplierspecifies the auto-split width multiplierfloat1.0
use_active_for_splitswhether to prefer the active window or the mouse position for splitsbooltrue
default_split_ratiothe default split ratio on window open. 1 means even 50/50 split. [0.1 - 1.9]float1.0
split_biasspecifies which window will receive the larger half of a split. positional - 0, current window - 1, opening window - 2 [0/1/2]int0

Bind Dispatchers

dispatcherdescriptionparams
pseudotoggles the given window’s pseudo modeleft empty / active for current, or window for a specific window

Layout messages

Dispatcher layoutmsg params:

paramdescriptionargs
togglesplittoggles the split (top/side) of the current window. preserve_split must be enabled for toggling to work.none
swapsplitswaps the two halves of the split of the current window.none
preselectA one-time override for the split direction. (valid for the next window to be opened, only works on tiled windows)direction
movetorootmoves the selected window (active window if unspecified) to the root of its workspace tree. The default behavior maximizes the window in its current subtree. If unstable is provided as the second argument, the window will be swapped with the other subtree instead. It is not possible to only provide the second argument, but movetoroot active unstable will achieve the same result.[window, [ string ]]

e.g.:

bind = SUPER, A, layoutmsg, preselect l