Tabs

Open multiple terminal sessions inside a single window, switch between them with the keyboard, rearrange them, and rename them.

Tabs let you keep several terminal sessions inside one window. Each tab is an independent surface with its own shell process, working directory, and title. Splits (covered in Splits) live inside a tab, so you can mix the two without conflict.

Wintty uses native tab UI on every platform that has one:

  • On Windows, tabs are WinUI 3 tab views with full drag-and-drop reordering, context menus, and a custom new-tab split button.
  • On Linux, tabs use the GTK 4 / libadwaita tab bar.

Opening Tabs

The default keybindings to open a new tab are:

PlatformKeybinding
Windowsctrl+t
Linuxctrl+shift+t

Windows uses ctrl+t rather than ctrl+shift+t so that ctrl+shift+t stays free for reopening the last closed tab, the way browsers and VS Code do it.

Under the hood this triggers the new_tab action. You can rebind it to any key you like:

keybind = ctrl+alt+n=new_tab

A new tab inherits the working directory of the previously focused terminal when shell integration is active.

New Tab Split Button (Windows)

On Windows, the new-tab button in the tab strip is actually a split button. The main click opens a new tab with the default profile. The dropdown chevron opens a menu listing your saved profiles, one row each. This is implemented by NewTabSplitButton.xaml in the Windows port.

ActionDefault Keybinding
previous_tabctrl+shift+tab (drives the MRU switcher on Windows, see below)
next_tabctrl+tab (drives the MRU switcher on Windows, see below)
last_tabctrl+9 (Windows), alt+9 (Linux)
goto_tabctrl+<n> (Windows), alt+<n> (Linux), for n = 1..8

On Windows, ctrl+tab and ctrl+shift+tab don't step through the tab strip positionally. Wintty intercepts both chords and drives a most-recently-used switcher popup instead: hold ctrl to keep cycling, release it to commit, which makes flipping between the last two tabs a single press. For positional switching on Windows, use ctrl+page_down and ctrl+page_up.

goto_tab takes the tab index starting at 1. Jumping to the last tab no matter how many there are is the separate last_tab action, which is what the ctrl+9 / alt+9 / cmd+9 binding is wired to.

Note

On Windows only indices 1 through 8 are wired up. goto_tab:9 and anything above it is dropped before it reaches the tab strip, so the keybind does nothing. An in-range action that points past the last open tab is also a no-op rather than a clamp: with 3 tabs open, goto_tab:5 leaves you where you are instead of moving to tab 3.

# Jump directly to tab 3
keybind = ctrl+3=goto_tab:3

Reordering Tabs

You can drag a tab in the tab bar to reorder it. From the keyboard, use move_tab with a positive or negative offset:

# Move the current tab one position to the right
keybind = ctrl+shift+right=move_tab:1
# Move the current tab one position to the left
keybind = ctrl+shift+left=move_tab:-1

Note

On Windows the offset is read as a direction rather than a distance, so move_tab:3 moves the tab a single position right, exactly like move_tab:1. Positions do not wrap either: moving the last tab right or the first tab left does nothing.

Renaming Tabs

A tab's title is set by the running program through escape sequences (such as the prompt printing OSC 0 or OSC 2). You can override it with a prompt:

ActionWhat it does
prompt_tab_titleOpens a popup to type a new tab title
set_tab_titleSets the tab title to the given string
keybind = ctrl+shift+i=prompt_tab_title

Manually setting a tab title via prompt_tab_title or set_tab_title overrides any title escape sequence from the running program, and the override persists across focus changes within the tab. Pass an empty string to set_tab_title to clear the override and let the program set the title again.

On Windows the rename dialog (RenameTabDialog.xaml) is also reachable from the tab's right-click context menu, so you don't need a keybinding for it.

Closing Tabs

Closing tabs uses the close_tab action, which takes a mode argument:

ModeBehavior
this (default)Close the current tab and all splits within it
otherClose every tab except the current one
rightClose every tab to the right of the current tab
keybind = ctrl+w=close_tab:this

Note

On Windows the mode argument is discarded before the action is dispatched, so close_tab:other and close_tab:right do the same thing as close_tab:this. this is also progressive rather than absolute there: it closes the focused split first, and only closes the whole tab once the focused split is the last one in it.

On Windows, closing a tab that holds more than one split asks for confirmation first. That prompt is a plain pane count check; it does not look at whether a process is running, and confirm-close-surface is not read by the Windows app at all.

Vertical Tabs (Windows)

The Windows port also includes a vertical tab strip (VerticalTabStrip.xaml) for users who prefer a sidebar layout instead of the horizontal bar at the top. It is toggled from Settings, under General, in the "App Behavior" section.

Note

Vertical tabs are Windows-only. Elsewhere, tabs always render in the platform-native horizontal tab bar.

Tab Overview

The toggle_tab_overview action opens a grid view of all tabs in the current window so you can pick one visually.

Note

The toggle_tab_overview action itself is Linux-only and requires libadwaita 1.4 or newer; on Windows it has no effect. Windows has its own tab overview instead, on ctrl+shift+e, also reachable from the command palette.

Configuration

OptionPurpose
tab-inherit-working-directoryNew tabs inherit the focused tab's working directory
window-new-tab-positionWhere new tabs are inserted (current, end). Not read by the Windows app
confirm-close-surfaceWhether to confirm before closing a tab with a running process. Not read by the Windows app
window-inherit-font-sizeNew tabs inherit the focused tab's adjusted font size

Keybindings

ActionPurpose
new_tabOpen a new tab
close_tabClose tabs (this, other, right; the mode is ignored on Windows)
previous_tabSwitch to the previous tab
next_tabSwitch to the next tab
last_tabSwitch to the last tab
goto_tabSwitch to a tab by 1-based index (1 to 8 on Windows)
move_tabMove the current tab by a relative offset (direction only on Windows)
prompt_tab_titlePrompt for a new tab title
set_tab_titleSet the tab title to a literal string
toggle_tab_overviewOpen the tab overview (Linux only)