Package Control

The Sublime Text package directory, reborn.

TabStack

Alternative MRU tab switching for Sublime Text with a quick panel live preview

SepAugJulJunMayAprMarFebJan Dec2025 NovOct 2026-W42 | installs: 4 | removals: 2 | upgrades: 0 2026-W42 | installs: 4 | removals: 2 | upgrades: 0 2026-W42 | installs: 4 | removals: 2 | upgrades: 0 2026-W41 | installs: 2 | removals: 1 | upgrades: 0 2026-W41 | installs: 2 | removals: 1 | upgrades: 0 2026-W41 | installs: 2 | removals: 1 | upgrades: 0 2026-W40 | installs: 6 | removals: 0 | upgrades: 0 2026-W40 | installs: 6 | removals: 0 | upgrades: 0 2026-W40 | installs: 6 | removals: 0 | upgrades: 0 2026-W39 | installs: 8 | removals: 2 | upgrades: 0 2026-W39 | installs: 8 | removals: 2 | upgrades: 0 2026-W39 | installs: 8 | removals: 2 | upgrades: 0 2026-W38 | installs: 1 | removals: 0 | upgrades: 0 2026-W38 | installs: 1 | removals: 0 | upgrades: 0 2026-W38 | installs: 1 | removals: 0 | upgrades: 0 2026-W37 | installs: 1 | removals: 1 | upgrades: 2 2026-W37 | installs: 1 | removals: 1 | upgrades: 2 2026-W37 | installs: 1 | removals: 1 | upgrades: 2 2026-W36 | installs: 2 | removals: 0 | upgrades: 7 2026-W36 | installs: 2 | removals: 0 | upgrades: 7 2026-W36 | installs: 2 | removals: 0 | upgrades: 7 2026-W35 | installs: 4 | removals: 1 | upgrades: 2 2026-W35 | installs: 4 | removals: 1 | upgrades: 2 2026-W35 | installs: 4 | removals: 1 | upgrades: 2 2026-W34 | installs: 2 | removals: 0 | upgrades: 0 2026-W34 | installs: 2 | removals: 0 | upgrades: 0 2026-W34 | installs: 2 | removals: 0 | upgrades: 0 2026-W33 | installs: 2 | removals: 0 | upgrades: 0 2026-W33 | installs: 2 | removals: 0 | upgrades: 0 2026-W33 | installs: 2 | removals: 0 | upgrades: 0 2026-W32 | installs: 3 | removals: 1 | upgrades: 4 2026-W32 | installs: 3 | removals: 1 | upgrades: 4 2026-W32 | installs: 3 | removals: 1 | upgrades: 4 2026-W31 | installs: 1 | removals: 0 | upgrades: 0 2026-W31 | installs: 1 | removals: 0 | upgrades: 0 2026-W31 | installs: 1 | removals: 0 | upgrades: 0 2026-W30 | installs: 5 | removals: 4 | upgrades: 0 2026-W30 | installs: 5 | removals: 4 | upgrades: 0 2026-W30 | installs: 5 | removals: 4 | upgrades: 0 2026-W29 | installs: 1 | removals: 0 | upgrades: 0 2026-W29 | installs: 1 | removals: 0 | upgrades: 0 2026-W29 | installs: 1 | removals: 0 | upgrades: 0 048 WeeklyInstalls 048 WeeklyUpgrades 2026-10-16 | upgrades: 0 | 0 on that day 1.3.0 2026-W35 | upgrades: 2 1.2.1 2026-W31 | upgrades: 0 1.2.0 2026-W28 1.1.0 / 1.0.0
Installations: recent average 3 per week, 42 in total
Installations minus removals
Upgrades

Links

Versions

1.3.0 (ST4100+) ·
2026-10-16 22:17

More

TabStack

TabStack is a Sublime Text (build 4100+) package for switching between open tabs using an MRU-style stack. It keeps tab order per window and, optionally, previews tabs in the quick panel before committing the switch. It also preserves tab ordering across sessions and supports multiple selections. When closing a tab, TabStack restores the previous selection.

Video Showcase

Installation

TabStack is available on Package Control. Open the Command Palette, select Package Control: Install Package and find "TabStack" in the list.

Usage

The key bindings are:

These are not configurable because the release detection of the ctrl key is hard-coded.

Press one of those shortcuts to open the tab stack quick panel. Use the same keys to move through the list while it is open. Release ctrl to commit the selected tab. Press ctrl+escape to cancel.

Settings

In TabStack.sublime-settings, which Preferences: TabStack Settings opens from the Command Palette:

The settings for the Ctrl-release helper are described under Wayland Setup.

Platform Support

TabStack supports Linux, Windows, and macOS. It reads the native key state to detect modifier release events.

On Linux, TabStack uses the tabstack-keystate helper whenever it is installed and works, see Wayland Setup. Otherwise it falls back to the X11 key state API, so Sublime must run under X11 or XWayland (for example with GDK_BACKEND=x11). Note that X11 detection has not been reported to work yet. TabStack treats a session as native Wayland when WAYLAND_DISPLAY is set and GDK_BACKEND is not x11, so GDK_BACKEND=x11 is also the way to use X11 detection without the helper on a Wayland desktop.

A native Wayland session exposes no way to poll global key state (a deliberate security restriction in the protocol), and Sublime Text does not provide a key-release API to plugins. See also the related upstream issue. As a workaround, TabStack ships the source of a small helper program, tabstack-keystate, that reads the Ctrl key state from the kernel's input devices. Native Wayland needs this helper, see Wayland Setup.

Wayland Setup

The helper is not installed automatically. You review its source, then build and install it yourself. TabStack never runs sudo, a compiler or setcap.

Run TabStack: Set Up Ctrl Detection for Wayland from the Command Palette. It extracts the helper source, opens it for review, and shows the commands below. When the first ctrl+tab on native Wayland finds no working helper, TabStack also offers to show this setup once per plugin load.

In the directory the command extracted the source to, build, install and grant the capability:

cc -std=c11 -O2 -Wall -Wextra -o tabstack-keystate tabstack-keystate.c
sudo install -D -o root -g root -m 0755 tabstack-keystate /usr/local/libexec/tabstack-keystate
sudo setcap cap_dac_read_search=ep /usr/local/libexec/tabstack-keystate

Then run the setup command again to verify that the helper works.

To uninstall:

sudo rm /usr/local/libexec/tabstack-keystate

After a package update, the setup command may report an outdated helper. In that case, build and install it again with the commands above.

Settings

In TabStack.sublime-settings, which Preferences: TabStack Settings opens from the Command Palette:

Security Notes

Limitations

Flatpak and Snap builds of Sublime Text are not supported. Their sandbox or no_new_privs setting makes the kernel ignore file capabilities when running the helper.

Caveats

Support for sheets that are not backed by text, i.e. HTML sheets and image sheets, cannot properly be monitored before ST build 4205 due to missing API support.

Results

Packages