Vertical Tabs

Does WezTerm support vertical tabs?

WezTerm's tab bar can only sit at the top or bottom — there is no built-in vertical or side tab layout. Otty ships vertical tabs as its default left sidebar.

Short answer

WezTerm does not support a vertical or side tab bar. Its tab bar can only sit at the top (default) or bottom of the window via the Lua option tab_bar_at_bottom; there is no left or right placement. If you want vertical tabs in a native terminal, Otty uses a left tab sidebar as its default layout, set with a single configuration key.

WezTerm is a fast, highly configurable terminal with its own built-in multiplexer, so it is reasonable to expect a vertical or side tab list. The short answer is that WezTerm keeps its tab bar horizontal. Here is exactly what it supports, the closest workarounds, and how Otty — a native macOS terminal — makes a vertical sidebar the default layout.

WezTerm's tab bar: top or bottom only

WezTerm renders its tab bar across the full width of the window, and you can move it between two positions with a single Lua option:

-- top is the default; set to true to move it to the bottom
config.tab_bar_at_bottom = true

That is the full range: top or bottom. There is no option to place the tab bar on the left or right edge, so a true vertical tab list is not part of WezTerm's built-in layout. WezTerm does have a complete native tab and pane system — windows, tabs, and splits with their own scrollback — it just renders the tab strip horizontally.

Workarounds in WezTerm

People get close to a side list in a few ways, with trade-offs:

None of these produces a native vertical tab bar. If that is the specific thing you want, a terminal that lays out tabs vertically by design is simpler.

Otty: vertical tabs as the default layout

Otty is a native macOS terminal whose default layout is a vertical tab sidebar on the left. There is nothing to script — it is on by default and controlled by one key:

# Vertical tab sidebar on the left (this is the default)
window-layout = sidebar-left

# Or a horizontal bar, like WezTerm's:
# window-layout = tabs-top
# window-layout = tabs-bottom

Because it is a first-class layout, the sidebar supports grouping tabs by project or date, custom dividers, drag-to-reorder, tear-off to a new window, merging a tab into a split, and per-tab status badges. You can auto-hide it when only one tab is open:

# always | default | auto
auto-hide-tabs-panel = auto

From WezTerm's Lua to Otty's key = value

WezTerm configures everything through a Lua program (~/.wezterm.lua), which is powerful but means tab placement is code you write and maintain. Otty uses a Ghostty-style key = value format, so the same change is one declarative line (window-layout = sidebar-left) with no scripting. If you prefer programmable config, WezTerm's Lua is a strength; if you want vertical tabs without writing any, Otty gets you there in a line.

Related

Sources