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
| Where | What to do |
|---|---|
| Settings | Open Settings and cycle Tab layout between Top and Left. The bound shortcut is shown on the row. |
| Hamburger | ≡ → Tab 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 Light | The 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 switching — Ctrl+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 switching — Ctrl+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 withperch_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)
| Control | Does |
|---|---|
+ | New tab, inheriting the current working directory. |
| Camera | Capture 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
| Setting | Key | Default |
|---|---|---|
| Tab layout | appearance.tab_bar_placement | top |
| Rail thickness | appearance.tab_bar_width | 220 |
| Perch side | appearance.perch_side | auto |
| Tab hover preview | appearance.tab_hover_preview | true |
[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 top | Tabs on the left | |
|---|---|---|
| Next / previous tab (arrows) | Shift+mod right / left | Shift+mod down / up |
| Previous / next prompt | Shift+mod up / down | Shift+mod left / right |
| Toggle layout | ⌘⌥V / Ctrl+Alt+V | |
“Shift+mod” is ⌘⇧ on macOS and Ctrl+Shift on Linux / Windows.