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 main count: 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 main_count = 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 main windows
Need more than one main window? Increase main_count to share the main area:
spoon.Shoji:bindHotkeys({ increase_main_count = { { "ctrl", "alt" }, "," }, decrease_main_count = { { "ctrl", "alt" }, "." },})main_count = 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 │ ││ │ ││ │ ││ │ ││ │ │└─────────────────────────────┴─────────────────────────────┘“One big” pattern
For workflows where one window dominates and others serve as quick references, configure Tall with a high main ratio:
spoon.Shoji:configure({ default_layout = "tall", main_ratio = 0.75, -- Main gets 75% of screen width main_count = 1,})75% main ratio (3 windows)
┌─────────────────────────────────────────────┬─────────────┐│ │ ││ │ ││ │ 2 ││ │ ││ │ ││ ├─────────────┤│ │ ││ │ ││ 1 │ ││ │ ││ │ ││ │ 3 ││ │ ││ │ ││ │ ││ │ ││ │ │└─────────────────────────────────────────────┴─────────────┘The main window gets three-quarters of the screen while supporting windows share
the remainder. Adjust main_ratio between 0.7 and 0.8 to taste.