1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# Tiling layouts — dwm reference (for slice 7, ext-window-tiling)
> **Status: REFERENCE / research only.** A catalogue of dwm's tiling layouts to
> draw from when designing `ext-window-tiling` (slice 7). Revisit once we have a
> baseline tiling core to work off. These are X11/dwm patches — NOT something we
> apply; they're a design reference. Each maps cleanly onto the slice-7 goal of a
> **pure layout core**: `(client count, master count, mfact, area) -> list of
> rects`, with zero wlroots types. Source: dwm.suckless.org/patches + the
> bakkeby/dwm-flexipatch bundle (which ships these as git-applicable diffs).
## Built-in dwm layouts (no patch)
| Layout | Description |
|---|---|
| **tile** | Default master/stack: `nmaster` windows in a left master column, the rest stacked vertically on the right. `mfact` sets the master/stack split. |
| **monocle** | Every window maximized to the full area; one shown at a time. |
| **floating** | Windows moved/resized freely (no tiling). |
## Layout patches
### Master / stack variants
| Layout | Description | Patch |
|---|---|---|
| **bstack** (bottomstack) | Master on **top** (full width); stack tiled left-to-right in a row beneath. | https://dwm.suckless.org/patches/bottomstack/ |
| **bstackhoriz** | Bottom-stack variant: stack clients stacked top-to-bottom beneath the master. | (same patch as bstack) |
| **columns** (col) | Like `tile`, but master-area clients are arranged in columns (left-to-right) instead of a single column. | https://dwm.suckless.org/patches/columns/ |
| **deck** | Master area normal; stack clients "decked" — piled on top of each other, only the focused one visible (monocle for the stack). | https://dwm.suckless.org/patches/deck/ |
### Centered master
| Layout | Description | Patch |
|---|---|---|
| **centeredmaster** | Master column centered horizontally; stack split to the **left and right** of it. | https://dwm.suckless.org/patches/centeredmaster/ |
| **centeredfloatingmaster** | Master floats centered **on top** of the full-width tiled stack. | (same patch) |
### Grids
| Layout | Description | Patch |
|---|---|---|
| **gridmode** (grid) | All windows in an even grid. | https://dwm.suckless.org/patches/gridmode/ |
| **gaplessgrid** | Grid with balanced columns; the last column absorbs the remainder so there are no empty cells. | https://dwm.suckless.org/patches/gaplessgrid/ |
| **horizgrid** | Splits into a top and bottom row (horizontal grid). | https://dwm.suckless.org/patches/horizgrid/ |
| **nrowgrid** | Grid whose number of rows is controlled by `nmaster`. | https://dwm.suckless.org/patches/nrowgrid/ |
### Spiral
| Layout | Description | Patch |
|---|---|---|
| **fibonacci → spiral** | Fibonacci tiling: each window takes half the remaining space, spiraling inward. | https://dwm.suckless.org/patches/fibonacci/ |
| **fibonacci → dwindle** | Same split, but windows dwindle toward the bottom-right instead of spiraling. | (same patch) |
### Meta / configurable
| Layout | Description | Patch |
|---|---|---|
| **flextile-deluxe** (supersedes **flextile**) | Configurable meta-layout: pick a split mode (horizontal / vertical / centered / floating / fixed) and a per-split tile arrangement (stack h/v, grids, fibonacci). Can reproduce tile, deck, monocle, centeredmaster, bstack/bstackhoriz, gapplessgrid, and more. | https://github.com/bakkeby/patches/wiki/flextile-deluxe/ (orig: https://dwm.suckless.org/patches/flextile/) |
### Also on the suckless site (not in the flexipatch bundle)
| Layout | Description | Patch |
|---|---|---|
| **tatami** | Symmetric "tatami mat" arrangement. | https://dwm.suckless.org/patches/tatami/ |
| **three-column / tcl** | Master in a center column with stacks on both sides; sized for wide screens. | https://dwm.suckless.org/patches/tcl/ |
## Adjacent (not layouts, but pair with them)
| Patch | Description | Patch |
|---|---|---|
| **vanitygaps** | Configurable inner/outer gaps between tiled windows and screen edges. | https://dwm.suckless.org/patches/vanitygaps/ |
| **cfacts** | Per-client size weights within the stack (give some stack windows more space). | https://dwm.suckless.org/patches/cfacts/ |
## Notes for the unbox design (to flesh out later)
- The whole set reduces to one pure function shape:
`arrange(area: Box, clients: int, nmaster: int, mfact: float, params...) -> [Box]`.
That's the slice-7 core (100% doctest-coverable, zero wlroots types).
- Touchscreen / iPad direction (CF-AX3): not all of these make sense for touch.
Likely-relevant shortlist to decide on: tile, monocle, deck, bstack,
centeredmaster, spiral/dwindle. Grids and flextile-deluxe are powerful but
keyboard-heavy. Decide the starter set when we have a baseline.
- `flextile-deluxe` is the "one layout to rule them all" approach — worth
studying as a model for a single configurable engine vs. many discrete
layouts.
- Gaps (vanitygaps) and per-client weights (cfacts) are orthogonal modifiers;
design the core so they're parameters, not separate layouts.
|