Documentation

Layouts

Horizontal and vertical tab strips — chrome, scrolling, previews, window drag, and how to switch.

The tab strip can sit on the top of the window (horizontal) or down the left edge (vertical). Both layouts share the same tabs, groups, and actions; they differ in how pills are sized, where the chrome lives, and which arrow keys walk the strip. Switch live from Settings, the hamburger menu, or a shortcut — nothing restarts.

How to switch

WhereWhat to do
SettingsOpen Settings and cycle Tab layout between Top and Left. The bound shortcut is shown on the row.
HamburgerTab layout: Top / Tab layout: Left (shows the current edge; click to flip).
Keyboard⌘⌥V (macOS) / Ctrl+Alt+V (Linux / Windows). Palette action: Toggle tab bar placement.
Config[appearance] tab_bar_placement = "top" or "left". Hot-reloads.
First LightThe first-run flow also asks which edge you want.

The choice is written to config.toml and survives restart. It is per-machine, not per-workspace.

Horizontal — tabs on top

The default. A single strip across the top of the window. On macOS that strip is the titlebar: traffic lights sit on the left, pills in the middle, and the chrome cluster on the right.

  • Pills share the remaining width. As you open more tabs they shrink, then overflow (the ones that no longer fit are hidden). Labels get harder to read — that is why the vertical layout exists.
  • New tab (+) sits immediately after the last visible pill, browser-style.
  • Camera and more () are right-aligned at the trailing end, with a reserved empty gutter between the last pill and that cluster so you can always grab the window.
  • Window drag — any empty strip background (including that gutter). Double-click the empty strip to zoom, matching the system titlebar pref.
  • Hover preview (if enabled) opens under the pill, clamped so it stays on screen.
  • Long titles are middle-elided, so the distinguishing tail survives when several sessions share a prefix. Resting the pointer on a truncated pill scrolls the whole title through it — it pauses at both ends, then loops. Applies to the left rail too.
  • Tab switchingCtrl+Tab / Ctrl+Shift+Tab, plus ⌘] / ⌘[ (and their shifted forms) on macOS. On Linux Ctrl+[ is deliberately left alone — it is Esc. The arrow fallbacks are left / right (⌘⇧←/→ on macOS, Ctrl+Shift+←/→ on Linux). Prompt-jump stays on up / down.
  • The Perch stays on the left when perch_side = "auto".

Vertical — tabs on the left

An L-shaped chrome: a thin titlebar band across the top, and a rail of fixed-height pills down the left. Built for many long-lived sessions whose titles would be crushed on a horizontal strip.

  • Top band holds the right-aligned cluster: camera, then more. Traffic lights stay on the macOS left. The rest of the band is empty titlebar.
  • Rail starts with a right-aligned New tab and a hairline under it, then lists every tab at a fixed height (about one strip-row each). Labels stay full width of the rail. Overflow scrolls — use the mouse wheel over the rail; a thin thumb appears on the inner edge. Switching to an off-screen tab scrolls it into view.
  • Window drag — grab empty rail background (below the last pill, or the gutter beside pills) or the empty middle of the top band. The top band is mostly traffic lights plus the chip cluster, so the rail is the practical handle. Double-click empty chrome to zoom.
  • Hover preview (if enabled) opens to the right of the pill, vertically centered, so the card sits over the terminal instead of covering other tabs. Disable it in Settings (Tab hover preview) or with tab_hover_preview = false.
  • Tab switchingCtrl+Tab is unchanged. The arrow fallbacks flip to follow the rail: up / down walk tabs, and left / right take prompt-jump for that layout.
  • The Perch moves to the right when perch_side = "auto", so the two never share the left gutter. Override with perch_side = "left" or "right".
  • Rail width is tab_bar_width (default 220 logical px, clamped 140–400). Ignored when the strip is on top.

Chrome cluster (both layouts)

ControlDoes
+New tab, inheriting the current working directory.
CameraCapture the window. Hide the chip with Settings → Screenshot button; the keybinding still works.
Hamburger: New Tab, Command Palette, Settings, Feathers…, recording, tab layout, Check for updates, First Light, About, Quit. Built from the command registry, so it cannot drift from the palette.

Settings and config

SettingKeyDefault
Tab layoutappearance.tab_bar_placementtop
Rail thicknessappearance.tab_bar_width220
Perch sideappearance.perch_sideauto
Tab hover previewappearance.tab_hover_previewtrue
[appearance]
tab_bar_placement = "left"
tab_bar_width = 240
perch_side = "auto"
tab_hover_preview = true

Keybindings that change with layout

These are the arrow fallbacks. Ctrl+Tab, number-row jumps (⌘1..9 / Alt+1..9), and the bracket chords stay the same in both layouts.

Tabs on topTabs on the left
Next / previous tab (arrows)Shift+mod right / leftShift+mod down / up
Previous / next promptShift+mod up / downShift+mod left / right
Toggle layout⌘⌥V / Ctrl+Alt+V

“Shift+mod” is ⌘⇧ on macOS and Ctrl+Shift on Linux / Windows.

Coming from a tiling-window habit: pane splits (⌘D / Ctrl+Shift+D) are independent of tab-strip placement. Vertical tabs change where sessions are listed, not how a tab is split internally.