Skip to content

Workspace Rail ​

Experimental

The workspace rail is experimental and off by default. Enable it in Settings → Files & Images → Workspace → Workspace rail. With the rail off, VMark behaves exactly as before — one workspace per window.

The workspace rail lets one window hold several workspaces at once, shown as a vertical strip of colored glyphs on the left edge. Clicking a workspace performs a full context switch: the editor tabs, the sidebar file tree, the split-pane layout, and the sidebar/outline state all swap to that workspace's own set — like switching Spaces in a browser, not just changing a filter.

What switches, what stays ​

SurfaceOn a rail switch
Editor tab stripShows only the active workspace's tabs (plus browser pages)
Sidebar file treeRe-roots to the active workspace, with its own folder-open and scroll state
Split panesEach workspace remembers its own split layout
OutlinePer-tab collapse/filter/scroll state follows the workspace
Next/previous tab, tab context menu, Quick Open "open tabs"Scoped to the active workspace
Reopen Closed TabClosed tabs are recorded per workspace (plus one shared browser scope) and reopened most-recent-first from File → Reopen Closed Tab, the command palette, or a shortcut you assign in Settings → Shortcuts (it ships unassigned: the nearby chords are taken). A reopened document is read again from disk, so it shows the file as it is now; if the file was moved or deleted, the tab is not restored and a notice says why. An untitled tab reopens empty. Unsaved edits are not recovered — closing a dirty tab already asked whether to save
Browser pagesWindow-global — reachable from every workspace
Recent Files / Recent Workspaces menusGlobal
Autosave, save prompts, file watchingCover every tab, hidden or not

Switching never closes anything: a hidden workspace's tabs stay open in the background, keep autosaving, and still get a save prompt if you close the window with unsaved changes.

Loose Files ​

Files opened from outside every workspace root live in a synthetic Loose Files entry (the stacked-files icon). Switching to it shows those tabs; it appears automatically when needed.

Moving files between workspaces ​

Ownership follows the file's path:

  • Save As into another workspace's folder moves the tab there — and, if it is the tab you're looking at, the visible workspace follows it.
  • Renames or moves on disk (including from Finder) re-home the tab the same way.
  • Opening a file that belongs to a hidden workspace (via Quick Open, recents, or a file dialog) switches to that workspace first, so the tab you asked for is the tab you see.

Sessions and restart ​

Each workspace's config remembers only its own tabs and split layout. Human-opened browser pages persist per window. Hot exit restores every workspace of the window — including per-workspace sidebar state and the recorded closed-tab history — and reactivates the workspace you were in.

AI (MCP) behavior ​

AI clients opening documents through MCP never yank your visible workspace: workspace.open creates a background tab and returns its tabId for follow-up document calls. Only the explicit workspace.switch_tab action changes what you see, and its response reports workspaceSwitched: true so the AI can tell you it happened. See the MCP Tools Reference.

Rail actions ​

ActionHow
Switch workspaceClick its glyph
Add a workspaceFile > Open Workspace (an already-railed folder switches to it instead of duplicating)
ReorderDrag a glyph over another
Move to its own windowDrag a glyph out of the window
Duplicate to a new windowThe ⧉ button on hover
Close a workspaceRight-click → Close. All its tabs close with it, pinned ones included; each tab with unsaved changes asks first, and cancelling keeps the workspace

Terminal sessions ​

Each railed workspace owns its own terminal sessions. A rail switch swaps the visible terminal tabs; hidden workspaces' shells keep running untouched — no cd is typed into them, busy or idle — and switching back reveals the same shells with the session you were on remembered per workspace. New sessions (the + button, "Open Terminal Here", "Run in Terminal") are created in the active workspace and start in its root; closing a workspace or moving it to its own window closes its sessions with it. Details in the terminal guide.

Known limitation ​

On macOS, two spellings of the same folder that differ only in letter case (possible on case-insensitive volumes) are treated as different workspaces. This is deliberate: workspace identity is byte-exact on macOS and Linux, and case-folded on Windows.