Task-Based Tab Workspaces
Save the exact set of editor tabs and split layout you're working with, then
restore it later with a single click. Switch between tasks — a feature, a bug, a
code review, docs — without losing your place or hunting for files.
Features
- Save your current tabs as a named workspace, capturing every open editor,
including pinned and active state.
- Full 2D layout fidelity — the complete editor grid is captured and rebuilt,
not just a flat list of columns. Arbitrarily nested splits (for example, one
file on the left with two stacked rows on the right, or a 2×2 grid) are
restored to the exact same shape and proportions.
- Restore in one click from the dedicated Tab Workspaces sidebar. The
extension closes what's open and reopens the saved layout in place.
- Update, rename and delete workspaces from inline actions on each item.
- Graceful handling of missing files — deleted or moved files are detected
up front, reported, and skipped instead of breaking the restore.
- Broad editor support — plain text files, diff editors, custom editors
(e.g. image previews), notebooks, and Markdown previews (the built-in
preview, and best-effort for Markdown Preview Enhanced) are all captured and
reopened. Terminals and other webviews can't be reliably reopened by any
extension, so they're recorded as unsupported and skipped on restore.
- Per-project storage — workspaces are kept in VS Code's
workspaceState,
so each project has its own set and nothing is written into your source tree.
Usage
- Open the Tab Workspaces view from the Activity Bar.
- Arrange your editors the way you like them.
- Click Save Current Tabs as New Workspace (the save icon in the view
title, or the command of the same name) and give it a name.
- Switch tasks freely. When you want your layout back, click a saved workspace
(or its Restore action) and your tabs reopen in place.
Commands
All commands are available from the Command Palette under Tab Workspaces:
| Command |
Description |
| Save Current Tabs as New Workspace |
Capture the current layout under a new name. |
| Restore Workspace |
Close current tabs and reopen a saved workspace. |
| Update Workspace with Current Tabs |
Overwrite a saved workspace with what's open now. |
| Rename Workspace |
Rename a saved workspace. |
| Delete Workspace |
Remove a saved workspace. |
Requirements
- VS Code
1.125.0 or newer (uses the window.tabGroups Tab API).
How it works
The extension reads vscode.window.tabGroups to serialize each tab's input
(URI, view type, diff sides, notebook type) together with its view column and
pinned/active flags, and reads the full editor grid via the vscode.getEditorLayout
command. Restoring reverses the process: it closes all open tabs, rebuilds the
exact grid with vscode.setEditorLayout, then reopens each saved input in its
original group using the appropriate VS Code command (showTextDocument,
vscode.diff, vscode.openWith, showNotebookDocument).
Markdown previews are webview tabs that do not expose their source document, so
the extension recovers it by matching the preview's tab label against the other
files in the same workspace, then re-runs the preview command
(markdown.showPreview) in the correct column.
Known limitations
- Terminals and non-Markdown webview tabs cannot be programmatically reopened
and are skipped on restore.
- A Markdown preview can only be restored when its source file is also part of
the saved workspace (so its label can be resolved to a real file).
- Restore reopens tabs but does not attempt to reproduce exact scroll position
or cursor selection.
Release Notes
See CHANGELOG.md.
License
MIT © ActiveClientMods
| |