Dock manager
IDE-style dockable workspace built on splitters and tab stacks. Panes can be dragged between stacks, torn off into floating windows, and the arrangement is round-trippable as a JSON DockLayoutSnapshot.
Keyboard shortcuts
- Tab / Shift + Tab — move focus through tab strips, splitter dividers, intersection handles, and floating-pane close buttons
- On a tab strip: ← / → move between tabs, Home / End jump to the first / last one, Enter / Space activate the focused tab
- On a splitter divider: ← / → (or ↑ / ↓ for a vertical split) resize by 10% — Shift makes it 1% — and Home / End drive it to its limits
- On an intersection handle (the glyph where two splits cross): ← / → drive the vertical divider and ↑ / ↓ the horizontal one; Home / End drive the vertical one; Shift is again the 1% fine step
- On a floating pane's edge or corner handle: arrows resize along that handle's axis (10px per step, Shift for 1px)
- Floating-pane close button — Enter / Space closes the window
- M on a focused tab — arm pane move mode. Only the bare key arms it; Ctrl/Alt/⌘ + M is left to the browser or the app.
- In move mode: T / R / B / L dock the pane to the top / right / bottom / left of the current stack · F tears it off into a floating window · Esc cancels
- In move mode, to reach a stack other than the current one: → / ↓ and ← / ↑ cycle forward and backward through every drop target — the four sides of each other docked stack, then “float” — announcing “side of pane names, option N of M” and outlining the target. Enter commits the highlighted target; it lands exactly where the equivalent mouse drop would.
- Move mode stays armed while focus moves around inside the dock and cancels once focus leaves it; the commit always applies to the pane that was focused when M was pressed. Letters typed into an
input, textarea, select or contenteditable inside a pane stay text and commit nothing.
Basic usage
Panel 1
Static content via a named slot.
Panel 2
Drag this tab to dock it elsewhere.
Panel 3
Press M on a focused tab to enter move mode.