Autotile algorithms
Every autotile algorithm that ships with PlasmaZones. Built-ins below; drop your own JS alongside them.
Algorithms run in a sandboxed QJSEngine and receive a params object each layout request. 25 ship in-box across four main families. Custom algorithms drop into ~/.local/share/plasmazones/algorithms/ and hot-reload on save. The Tiling authoring guide covers the contract, metadata fields, and built-in helpers.
Master and stack
One or more master windows with secondary windows in a stack alongside. Configurable master count and split ratio.
- Master + StackLarge master area with stacked secondary windows
master-stack - Centered MasterMaster windows centered with stacks on both sides
centered-master - Corner MasterMaster window in a corner; rest fill the L-shaped remainder
corner-master - Focus + SidebarMain window with vertically stacked sidebar; ratio controls main window width
focus-sidebar - Quadrant PriorityFirst window gets a large corner; rest fill the L-shaped remainder
quadrant-priority - Three ColumnMaster window centered with columns on each side
three-column - WideMaster area on top, remaining windows stacked below
wide
Recursive and tree
Each new window splits an existing region. Deterministic geometry from window arrival order (unless marked with memory).
- Binary SplitBalanced recursive splitting into equal regions
bsp - DwindleEach new window gets a smaller split, alternating direction
dwindle - Dwindle (Memory)Remembers split positions — resize one split without affecting others
dwindle-memory - SpiralWindows spiral inward from the edges
spiral
Grid and even division
All windows treated equally. Cells sized to fill the available area with no master.
- ColumnsEqual-width vertical columns
columns - RowsEqual-height horizontal rows
rows - GridEqual-sized grid layout
grid - ClusterGroups windows by application — same app windows are placed adjacent
cluster - TatamiJapanese tatami mat pattern where no four corners ever meet at the same point
tatami
Stacking and overlapping
Windows can share screen space. Either a single-visible stack (Monocle), a cascade offset, or a rolling deck.
- CascadeOverlapping windows in a diagonal cascade
cascade - DeckFocused window takes the left portion; remaining windows peek from the right edge. Ratio controls focused window width
deck - Horizontal DeckFocused window on top; remaining windows peek from the bottom edge
horizontal-deck - MonocleOne window fullscreen at a time, cycle through others
monocle - PaperEqual-width overlapping pages like a document viewer; splitRatio controls page width
paper - SpreadWindows spread evenly across the screen
spread - StairStepped staircase arrangement
stair
Other
Layouts that don't fit the above families.
- Floating CenterCentered main window with peripheral panels on all sides
floating-center - ZenCentered column with margins — focused, distraction-free layout
zen
Tag reference
- master count — the algorithm reads
params.masterCount. Settings exposes a per-screen master-count slider when this is set. - split ratio — the algorithm reads
params.splitRatio. Settings exposes a ratio slider bounded by the algorithm'sPZ_MIN_SPLIT/PZ_MAX_SPLITconstants. - stateful — keeps a binary tree across layout requests in
params.tree. Window positions stay stable when new windows are added to an existing tree. - overlapping — zones can overlap (stacking and deck layouts). The overlay renders z-ordered zones from back to front.
- centered — the algorithm centers its output in the tileable area. Leaves margins rather than expanding to fill.
Using autotile
- Tiling authoring guide → Write your own. Sandbox contract, metadata fields, built-in helpers, and hot-reload setup.
- Autotile shortcuts → Toggle autotile, change the master ratio/count, retile, and swap with master.
- Autotile over D-Bus → Toggle per screen, force retile, or change algorithm from a script.
- Bundled algorithm sources on GitHub → Every algorithm listed here, with the full JS source for reference.