Skip to content

Layouts

Layout settings can live in wm.toml, but a dedicated layout.toml is easier to maintain. The sidecar overlays wm.toml one recognized key at a time, so an omitted value keeps the setting already loaded from wm.toml or the compiled default.

Engine Best suited to
tile A master area beside a stack of secondary windows
monocle One full-area window at a time
grid Balanced rows and columns
rows Full-width windows arranged in horizontal rows
dwindle Alternating recursive splits
scrolling PaperWM-style horizontal columns and viewport panning
float Remembered, native, or rule-provided floating geometry
game-mode One anchor window with companion windows beside it

floating and game_mode are accepted aliases for float and game-mode.

~/.config/aqueous/layout.toml
[layout]
default = "scrolling"
gaps_outer = 8
gaps_inner = 4
master_ratio = 0.55
master_count = 1
# Colors use 0xAARRGGBB.
border_width = 2
border_focused = 0xFF88C0D0
border_normal = 0xFF3B4252
border_urgent = 0xFFBF616A
force_ssd = false
[layout.slots]
primary = "tile"
secondary = "scrolling"
tertiary = "monocle"
quaternary = "grid"

The four slots are targets for the set_layout_primary, set_layout_secondary, set_layout_tertiary, and set_layout_quaternary bindings.

Every [layout.options.<id>] section accepts the common gap, master, and border keys. Only monocle, dwindle, and scrolling add engine-specific keys.

[layout.options.tile]
master_ratio = 0.60
master_count = 1
[layout.options.monocle]
hide_others = true
show_borders = false
[layout.options.dwindle]
split_ratio = 0.50
start_axis = "vertical" # vertical | horizontal
[layout.options.scrolling]
column_fraction = 0.50
center_focused = true
follow_new_windows = true
snap_to_columns = false
allow_overscroll = true
[layout.options.float]
border_width = 2

Ratios must be greater than 0 and less than 1. Use TOML numbers and booleans for these options, not quoted strings.

An output can define its normal layout in either wm.toml or layout.toml. Workspace mappings are also accepted in both files; define each mapping in only one place.

[[output]]
name = "DP-1"
layout = "tile"
[[workspace]]
workspace = 2
layout = "monocle"
[[workspace]]
output = "DP-1"
workspace = 3
layout = "dwindle"

Layout selection resolves from highest to lowest priority:

  1. A layout selected at runtime for the active workspace
  2. An output-and-workspace mapping
  3. A workspace-only mapping
  4. The matching output’s default
  5. [layout].default

Runtime selection is stored per workspace, so switching away and back preserves the layout you chose for that workspace during the session.

© 2026 Seafoam LabsShelly Chel