Skip to content

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.