Vertical Tabs

Does Kitty support vertical tabs?

Kitty's tab_bar_edge only accepts top or bottom — a side/vertical tab bar has been a long-standing request but is not built in. Otty ships vertical tabs as its default left sidebar.

Short answer

Kitty does not support a vertical or side tab bar. The tab_bar_edge option only accepts top or bottom (the default is bottom), and a left/right tab bar has been an open feature request for years. If you want vertical tabs in a native terminal, Otty uses a left tab sidebar as its default layout.

Kitty is fast and deeply scriptable, so a common question is whether you can move its tab bar to the side and get a vertical tab list. The answer is that Kitty's tab bar is horizontal only. This article covers what tab_bar_edge actually supports, the workarounds people try, and how Otty — a native macOS terminal — makes a vertical sidebar the default layout.

Kitty's tab bar: top or bottom

Kitty controls tab bar placement with one option in kitty.conf:

# top or bottom; bottom is the default
tab_bar_edge top

The accepted values are top and bottom, with bottom as the default. There is no left or right value, so a side tab bar is not part of Kitty's built-in layout. Placing the tab bar on the side has been an open feature request on Kitty's tracker for years, and it has not shipped as a native option. Kitty does have a full native tab system (plus tiling windows and layouts), so this is purely about the tab strip's orientation, not a lack of tabs.

Workarounds in kitty

None of these is a true vertical tab bar. For that, a terminal that lays tabs out vertically by design is the direct route.

Otty: vertical tabs as the default layout

Otty is a native macOS terminal whose default layout is a vertical tab sidebar on the left of every window. It is on by default and set with a single key:

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

# A horizontal bar is also available:
# window-layout = tabs-top
# window-layout = tabs-bottom

Since the sidebar is a real layout, it 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 there is only one tab:

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

From kitty.conf to Otty's config

Both terminals use a plain-text config file, so the mental model carries over. Kitty uses space-separated key value lines (tab_bar_edge top); Otty uses Ghostty-style key = value lines (window-layout = sidebar-left). The difference that matters here is the capability: Otty's sidebar is a built-in vertical layout, while Kitty's tab_bar_edge stops at top and bottom.

Related

Sources