kittymux

Tabs and panes

Move panes and tabs around: join a tab into another as splits, turn a pane into a tab, swap panes, jump by number and drag title bars.

kitty calls a tab a tab and a split inside it a pane (kitty's own docs say "window"). This page covers moving them: pane to tab, tab to panes, and pane to pane.

Join a tab into another

Press ctrl+alt+shift+j in the tab you want to move. A list of your other tabs opens over the pane. Choose one and every pane of your tab becomes a split of that tab, keeping the arrangement it had. The emptied tab closes itself.

You can also run it from a shell inside the tab:

kittymux join                          # open the list
kittymux join --to 12 --side below     # no list: join into tab id 12, below its active pane
kittymux join --pane                   # move only this pane, not the whole tab

Find a tab id with kitty @ ls. The command acts on the kitty it is started in, and on the pane it is started from.

Controls

The list takes the keyboard and the mouse, and you can mix them.

ToKeyboardMouse
Open the listctrl+alt+shift+j
Narrow the listType. Words match the title, folder or state, in any order. Backspace deletes.
Choose a tab↑ ↓, or ctrl+n ctrl+p. PgUp PgDn move five rows.Hover a row.
Join⏎Left click a row.
Pick where the first pane goesTab cycles auto, to the right, below.
Move the whole tab or only this panectrl+t toggles between them.
Clear the filter, then closeEsc. The first press clears a filter, the next closes.Right click does nothing.
Close at oncectrl+c, or press ctrl+alt+shift+j again.

The header always names what moves, for example Join “api” (3 panes) into…, and the footer lists these keys. A tab that needs you comes first. A row shows the tab's state glyph, title, folder line and pane count, and says other window when the tab lives in another OS window.

What "keeping the shape" means

Moving panes one by one splits the same pane again and again. In our test a three-pane tab joining a two-pane tab arrived as panes only 7 columns wide. Join does it differently:

  1. It reads where each pane sits in the tab being moved, before moving anything.
  2. The first pane goes to a whole side of the target tab, on the side you chose.
  3. Every other pane goes next to the pane it was beside before, on the same side of it.

So a big pane with a stack of two beside it arrives as a big pane with a stack, taking one side of the target tab. Auto picks the right side when the target's active pane is wider than tall, and below when it is taller.

Limits

  • The shape-keeping placement needs the target tab to use kitty's splits layout, which is kittymux's default. In another layout, such as tall, grid or stack, kitty places the panes itself. They all arrive, but not in their old arrangement.
  • You cannot join a tab into itself, so it is never listed.
  • There is no single undo. Press ctrl+alt+d on a pane to give it its own tab again, or ctrl+alt+shift+d to send it to a tab you choose.
  • The list opens over the active pane. In a narrow pane it drops the pane count, then the folder line, before it shortens a title.

Pull a tab in instead

The same mover also runs from the deck. Open it with ctrl+alt+b, select a tab and press a: that tab's panes become splits of the tab you are in. See Peek, deck and panel.

Turn a pane into a tab

ToKeys
Give the focused pane its own tabctrl+alt+d
Send it to a tab you choosectrl+alt+shift+d
Do the same from the deckOpen the deck, select or hover the pane and press t.
Do the same with the mouseShow title bars and drag the pane onto the bar's empty space or its +.

Number, focus and swap panes

Every pane in a tab has a number, counted in the order the tab lists them. kittymux follows tmux's display-panes: press one key and every pane shows its digit.

A tab with four panes: a large one on the left, one on the top right and two beneath it. Pane 1 has a pink border because it is focused.

Press ctrl+alt+e and kitty draws a large digit over every pane except the one you are in. Press that digit to go there. With only two panes it jumps straight over.

The same tab after ctrl+alt+e: large digits 2, 3 and 4 sit over the three other panes.

You do not need the overlay once you know the numbers. ctrl+alt+3 goes straight to pane 3. Every pane in these screenshots says which key reaches it.

ToKeys
Show digits, then focus a panectrl+alt+e, then the digit. With two panes it jumps straight over.
Focus pane N directlyctrl+alt+1 to 9, using the same numbers.
Focus the last panectrl+alt+0
Go back to the pane you were in beforectrl+alt+o
Open native pane controlsctrl+alt+shift+semicolon (the semicolon key).
Show digits, then swap with a panectrl+alt+shift+y, then the digit.
Move focus to a neighbourctrl+alt+h j k l, or shift+alt+ an arrow key.
Split below, and split to the rightctrl+alt+enter and ctrl+shift+enter.
Zoom a panectrl+alt+z

Tabs use alt where panes use ctrl+alt: alt+1 to 9 jump to tab N and alt+0 goes to the last tab.

If you prefer letters to digits, set visual_window_select_characters asdfghjkl in your kitty.conf. The direct keys stay numeric.

Resize and equalize

Hold alt and shift and press h, j, k or l to move the focused pane's edge: h narrower, l wider, j taller, k shorter. Each press moves it about three columns, so six presses of l take pane 1 below from 50 columns to 70.

The same four panes after six presses of alt+shift+l: pane 1 is much wider and the other three are squeezed to the right.

Equalize makes every split in the tab the same size again. It is alt+shift+=: hold alt and shift and press the = key (the + key on a US keyboard). It is the way back after resizing, closing a pane or zooming, and it replaces the old ctrl+alt+0, which now focuses the last pane. The same keys with ctrl in place of shift already belong to Hyprland's own column resizing, which is why a ctrl chord is not used here.

The same tab after alt+shift+=: panes 1 and 2 are both 50 columns wide again, and panes 3 and 4 share the bottom half equally.

ToKeys
Narrower, wider, taller, shorteralt+shift+h, l, j, k
Make every split the same size againalt+shift+=
Resize with the mouseDrag the border between two panes.
Resize in a mode, one key at a timekitty's own ctrl+shift+r, then h j k l, and esc to leave.

The screenshots are taken by tests/shot_panes.sh, which presses these keys in a real kitty on made-up panes, so they show what the keys do and not a mock-up.

Press the pane-controls chord, then h/j/k/l to swap with a neighbour, r to rotate the current split, s to exchange its sides, e to equalize or a to choose a swap target. These use kitty’s own actions, preserving processes and pane identity. Rotation and equalization apply to the splits layout; a nested split rotates its current group. Escape cancels; the opening chord also dismisses the picker.

Pane title bars and drag and drop

Press ctrl+alt+shift+c to show a thin title bar on every pane. Press it again to hide them. The bars carry the folder line and the pane’s merged agent status, with the state mark reserved even in a narrow pane. They double as drag handles. They need kitty 0.49.2 or later.

DragResult
A tab in the barReorders tabs. A tab swaps once you pass the middle of the one you cross.
A pane's title bar onto a tab in the barMoves the pane into that tab.
A pane's title bar onto the + or empty bar spaceTurns the split into its own tab.
A pane's title bar onto another pane's edgeInserts it there.
A pane's title bar onto another pane's title barSwaps the two.

A single-pane tab can be dropped onto a pane as a split in kitty 0.49.2. To merge a whole multi-pane tab while preserving its shape, use join.

To move a tab with the keyboard, use ctrl+alt+shift+← and ctrl+alt+shift+→ on a horizontal bar, or ctrl+alt+shift+↑ and ctrl+alt+shift+↓ on a vertical one. Both always work.

Drag out and merge

Drag a pane title bar onto another tab to move that pane, or onto the empty tab-bar area / + to give it its own tab. A pane dropped outside the OS window becomes its own OS window when another pane remains. Dragging a whole tab out creates an OS window with that tab's panes; a single-pane tab dragged onto a pane can become a split. Kitty owns these operations and the platform drop result; cancelled drags change nothing. With a lone pane in a lone tab there is no remaining source window to split away from.

For a whole multi-pane merge, use the join picker (ctrl+alt+shift+j) or the deck's a: kittymux preserves the source arrangement using kitty's native attach API. Native drag of a multi-pane tab reorders/moves the tab; it is not the shape-preserving multi-pane join. See Join a tab into another.

On this page