Tall
Main window on the left, remaining windows stacked on the right. The classic tiling layout, inspired by dwm and xmonad.
Layout
1 window
┌───────────────────────────────────────────────────────────┐│ ││ ││ ││ ││ ││ ││ ││ 1 ││ ││ ││ ││ ││ ││ ││ ││ ││ │└───────────────────────────────────────────────────────────┘2 windows
┌─────────────────────────────┬─────────────────────────────┐│ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ 1 │ 2 ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │└─────────────────────────────┴─────────────────────────────┘3 windows
┌─────────────────────────────┬─────────────────────────────┐│ │ ││ │ ││ │ ││ │ 2 ││ │ ││ │ ││ │ ││ 1 ├─────────────────────────────┤│ │ ││ │ ││ │ ││ │ 3 ││ │ ││ │ ││ │ ││ │ ││ │ │└─────────────────────────────┴─────────────────────────────┘4+ windows
┌─────────────────────────────┬─────────────────────────────┐│ │ ││ │ 2 ││ │ ││ │ ││ │ ││ ├─────────────────────────────┤│ │ ││ 1 │ 3 ││ │ ││ │ ││ │ ││ ├─────────────────────────────┤│ │ ││ │ 4 ││ │ ││ │ ││ │ │└─────────────────────────────┴─────────────────────────────┘Stack windows share equal height. More windows means shorter stacks.
Capabilities
- Adjustable ratio: Yes - resize the main area
- Adjustable nmaster: Yes - put multiple windows in main
- Stateful: No
Configuration
spoon.Shoji:configure({ default_layout = "tall", main_ratio = 0.5, -- Main area gets 50% of screen width nmaster = 1, -- One window in main area})Main ratio
The main ratio controls how much horizontal space the main area occupies. Bind hotkeys to adjust it dynamically:
spoon.Shoji:bindHotkeys({ increase_main_ratio = { { "ctrl", "alt" }, "=" }, -- Wider main decrease_main_ratio = { { "ctrl", "alt" }, "-" }, -- Narrower main})The ratio ranges from 0.1 to 0.9, adjusting by 0.05 per keypress.
30% main ratio
┌─────────────────┬─────────────────────────────────────────┐│ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ 1 │ 2 ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │└─────────────────┴─────────────────────────────────────────┘70% main ratio
┌─────────────────────────────────────────┬─────────────────┐│ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ 1 │ 2 ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ ││ │ │└─────────────────────────────────────────┴─────────────────┘Multiple masters
Need more than one main window? Increase nmaster to share the main area:
spoon.Shoji:bindHotkeys({ increase_nmaster = { { "ctrl", "alt" }, "," }, decrease_nmaster = { { "ctrl", "alt" }, "." },})nmaster = 2 (with 3 windows)
┌─────────────────────────────┬─────────────────────────────┐│ │ ││ │ ││ │ ││ 1 │ ││ │ ││ │ ││ │ │├─────────────────────────────┤ 3 ││ │ ││ │ ││ │ ││ 2 │ ││ │ ││ │ ││ │ ││ │ ││ │ │└─────────────────────────────┴─────────────────────────────┘Windows 1 and 2 share the main area; window 3 occupies the stack.
When to use
Tall is the workhorse layout for development:
- Editor in main, terminal and browser in stack
- Primary document with reference materials alongside
- Any task with one focus window and supporting windows
Mirrored tall
Prefer the main window on the right? Use the Mirror modifier:
local Modifiers = require("layouts.modifiers")local Mirror = require("layouts.modifiers.mirror")local Tall = require("layouts.tall")
local tallRight = Modifiers.wrap(Tall, Mirror.horizontal(), { name = "tall-right", displayName = "Tall (Right)",})
spoon.Shoji:configure({ layouts = { tallRight }, enabled_layouts = { "tall", "tall-right" },})Mirrored result (3 windows)
┌─────────────────────────────┬─────────────────────────────┐│ │ ││ │ ││ │ ││ 2 │ ││ │ ││ │ ││ │ │├─────────────────────────────┤ 1 ││ │ ││ │ ││ │ ││ 3 │ ││ │ ││ │ ││ │ ││ │ ││ │ │└─────────────────────────────┴─────────────────────────────┘