~/vimma $ less docs/workspaces.md

page 2/5 · docs/workspaces

Workspaces as containers

A workspace is a set of tabs with its own cookies and logins, like a separate browser profile one key away. Keep work in one and personal browsing in another: signing in to a site in one does not sign you in to it in the other.

Under the hood each workspace is a Firefox container. ctrl+b ( and ctrl+b ) step through them, as tmux's session keys do. A window shows one workspace at a time; the others' tabs are hidden, not closed, and everything comes back after a restart.

Make your first workspace

  1. Press ctrl+b shift+n. The command line opens with :wsnew typed for you.
  2. Type a name, such as work, and press Enter. You are now in it: the status bar shows ● 2:work.
  3. Sign in to something. Press ctrl+b ( to go back to main: you are not signed in there.
  4. ctrl+b ) takes you forward to work again.

Workspace keys

ToPress
Next / previous workspacectrl+b ) / ctrl+b (
Pick from a listctrl+b w
Back to the previous workspace, and again to togglectrl+^ or ctrl+6, as Vim's alternate buffer
Next / previous, Vim style]w / [w, or :wn / :wp
Go to one by name or number:ws work, :ws 2, :ws # (the previous one)
New workspacectrl+b shift+n
Rename this workspacectrl+b shift+w
Close this workspacectrl+b shift+d
Move this tab to another workspace:wsmove work, or m in the ctrl+b w list

Good to know

  • Closing a workspace you made deletes its cookies, logins and site data. Vimma asks first; press y to close it, anything else to keep it.
  • Moving a tab reopens it in the other workspace: it keeps its address, but loses its back/forward history and anything typed into forms.
  • New tabs open in the workspace you are in. A link you click opens in the page's own workspace, even in a new tab.
  • Tab numbers, ctrl+b n / ctrl+b p and closing tabs stay within the workspace; ctrl+b g lists every workspace's tabs.
  • If you think of a workspace as a Vim buffer, the keys follow: :wa adds one, :wd closes one, as :badd and :bd do. On layouts where ^ is a dead key, use ctrl+6.
  • Each workspace has its own bookmarks folder.
  • You can declare workspaces in config.toml, and send sites or apps to one automatically: see Routing.

All the keys for this page

The default bindings, as Vimma's own ctrl+b ? overlay lists them. Name is the action's name, which you use to remap it or to run it as a : command. Every key is on the keys page.

Workspaces (10)

ActionKeysName
Next workspacectrl+b )]wnext_workspace
Previous workspacectrl+b ([wprevious_workspace
Previous workspace you were in; again toggles back (Vim's ctrl+^)ctrl+b ^ctrl+b ctrl+6ctrl+^ctrl+6last_workspace
Switch to a workspace by name or numberno default keyswitch_workspace
Workspace pickerctrl+b wworkspace_picker
New workspacectrl+b shift+nnew_workspace
Rename workspacectrl+b shift+wrename_workspace
Close workspacectrl+b shift+dclose_workspace
Move the tab to another workspace (reopens it there)no default keymove_to_workspace
Routing rules: list them; :route add [workspace], :route moveno default keyroute_rules

Details

Everything below is Vimma's own user guide for this topic, in full: every edge case and exception. You do not need it to get started.

Workspaces

Workspaces keep the different parts of your day apart. Every tab lives in a workspace, and every workspace is a Firefox container of its own: a site you are signed in to in one workspace sees none of its cookies or storage in another. A new profile has one workspace, main; you make more as you need them (see Managing workspaces).

  • ctrl+b ) / ctrl+b ( (or ]w / [w, :wsnext / :wsprev) go to the next / previous workspace in workspace order ([workspaces] in config.toml, then the ones you made), wrapping around, as tmux's session keys do, from every mode; :workspace work or :workspace 2 goes to one by name or number. The status bar shows where you are (● 2:work). ( and ) are matched by the character they type, not the key: shift+9 / shift+0 on a US keyboard, shift+8 / shift+9 on a Finnish one. (ctrl+i / ctrl+u were these keys before; they are vim's jump-forward and half-page-up keys in normal mode now.)
  • ctrl+^ (or ctrl+6, ctrl+b ^) goes back to the workspace you were in before, and again toggles back (Workspaces as Vim buffers).
  • ctrl+b w (or :workspace with no name) opens the workspace picker.
  • ctrl+b b or :sidebar opens the side panel: the current workspace's tabs down the left of the window.
  • A window shows one workspace at a time: the other workspaces' tabs are hidden, not closed. Coming back selects the tab you left, and a split comes back with its panes laid out as before, the same pane focused and its page ready for keys. Each workspace keeps its own split: splitting in one leaves the others' layouts alone. A workspace with no tabs gets a start-page tab when you switch to it.
  • ctrl+b 1..9, ctrl+b n / p, gt, ctrl+tab and closing a tab stay within the workspace. The goto picker (ctrl+b g) is the exception: it lists every workspace's tabs, and picking one from another workspace switches there.
  • New tabs (ctrl+b c, t, ctrl+t, a bookmark, a link from another app) open in the current workspace and its container. A link opened from a page keeps that page's container and so its workspace: opened in the background into another workspace, it waits there, hidden, and the status bar says where it went (opened in "work").
  • A tab in a container that belongs to no workspace (Firefox's own containers, "no container", an extension's) joins the workspace you are in as a foreign tab: it does not share that workspace's cookies and logins. The workspace picker counts it (3 tabs, 1 foreign).
  • A restart restores them. Each window comes back with its workspaces, their tabs, the workspace you were in, the tab you had selected in each, every workspace's split panes laid out as you left them with the same pane focused, your tab names and each page's scroll position. Tabs of other workspaces are not loaded until you first go to them; their scroll position comes back then. The same happens with "Restore previous session" and reopening a closed window.
  • Pinned tabs belong to no workspace and show in every one. Vimma has no key to pin; an extension or an old session can still pin.
  • Each window has its own current workspace; the workspaces themselves are shared by all windows.

Workspaces as Vim buffers

If you think of a workspace as a Vim buffer, the keys are the ones your fingers already know:

VimVimmaWhat it does
ctrl+^ctrl+^, ctrl+6, ctrl+b ^Back to the workspace you were in before; toggles.
]b / [b (unimpaired)]w / [wNext / previous workspace, as ctrl+b ) / (.
:b name, :b 2, :b#:ws name, :ws 2, :ws #Go to a workspace by name, number, or the previous one.
:bn / :bp:wn / :wpNext / previous workspace.
:bd [name]:wd [name]Close this (or the named) workspace; asks y/N.
:badd name:wa nameNew workspace; you switch to it.
:ls:workspaces, ctrl+b wThe workspace picker.
  • The previous workspace is the one this window showed before the current one, however you left it (a key, a command, the picker, or selecting one of its tabs). Pressing ctrl+^ again goes back, so two presses toggle between two workspaces, as Vim's alternate buffer does; tmux users can think of it as prefix+L, the last session. Each window has its own, it is saved with the window's session (a restart or "Restore previous session" brings it back), and a window that has shown only one workspace says no previous workspace in this window. Closing the previous workspace forgets it.
  • ctrl+^ and ctrl+6 work in normal mode; in a text field they are the page's. ctrl+b ^ and ctrl+b ctrl+6 work in every mode, insert mode too.
  • **^ as a dead key.** On Finnish, German, French and other layouts ^ is a dead key: it waits for the next key to put an accent on. GTK then reports the key as Dead, not ^ (with or without ctrl), so ctrl+^ and ctrl+b ^ never arrive. Use ctrl+6 and ctrl+b ctrl+6 there, as Vim users on those layouts already do. ] and [ are AltGr+9 / AltGr+8 on a Finnish keyboard; ]w and [w match them (Keyboard layouts).
  • ]w and [w are normal-mode keys; ] then waits for the next key, as g does.
  • Tab after :ws, :wd or :wsmove completes workspace names.
  • Every one of these keys can be changed in config.toml: last_workspace, next_workspace and previous_workspace under [keys], and "<C-^>", "<C-6>", "]w", "[w" under [modal.normal]. The ctrl+b ? overlay shows the keys you have.

Managing workspaces

KeysCommandWhat it does
ctrl+b shift+n:wsnew shop, :wa shopNew workspace, with a container of its own; you switch to it.
ctrl+b shift+w:wsrename marketRename the current workspace (and its container).
ctrl+b shift+d:wsdelete [shop], :wd [shop]Close the current (or the named) workspace, after a y/N question.
:wsmove work / :wsmove 2Move the current tab to another workspace, by name or number.
  • The keys open the command line with the command typed for you (ctrl+b shift+w with the current name to edit).
  • Closing asks first, at the foot of the window: y closes, any other key (n, Esc, Enter) keeps it. Closing a workspace you made deletes its container, and with it its cookies, logins and site data; the question says so. A workspace from [workspaces] in config.toml cannot go while it is there: closing it closes its tabs only, and it keeps its logins. Renaming one is done in config.toml too. The last workspace cannot be closed. If the workspace changes between the question and your y (say config.toml was reloaded), nothing is closed. If you renamed its container in Firefox's Settings, its tabs and site data are kept, and the status bar says so.
  • A workspace name cannot be only digits: in :wsmove 2 and :workspace 2 a number means the workspace's place in workspace order. config.toml can still name one 2 in [workspaces]; then 2 means that workspace, by name, and the workspace at place 2 is reached by its name.
  • Moving a tab reopens it in the other workspace's container, as Firefox's "Reopen in Container" does: its address, name and mute come along, but not its back/forward history, what you typed into forms, its scroll position, or a form submission (the page is loaded again, signed in as that workspace). A tab in a split leaves the split first. You stay in the workspace you were in.
  • A workspace's container deleted outside Vimma (Firefox's Settings → Containers, or an extension) is replaced at once by a new, empty one: the workspace stays, its new tabs open in the new container, and the status bar says so. Its cookies and logins went with the old container, so its sites need a new sign-in. Tabs an extension left open in the deleted container stay in the workspace, marked foreign.
  • Containers turned off (privacy.userContext.enabled = false in about:config) at startup: the status bar shows a lasting error, and Vimma runs without workspaces (tabs open as in Firefox, without containers) until you set it back to true and restart. Vimma does not turn it back on for you.

Workspace picker

ctrl+b w lists the window's workspaces over the page, in workspace order: each with its number, its name and how many tabs it has here; the one you are in says current and is selected.

KeyWhat it does
j / k, arrowsMove down / up.
/Search: type to filter by name; Esc goes back to j/k.
EnterSwitch to the selected workspace.
mMove the current tab to the selected workspace (asks first).
Esc / qClose the picker.

m asks Move this tab to "work"? … y/N at the foot of the window, because a moved tab is reopened and loses its back/forward history and form data (see Managing workspaces): y moves it, any other key keeps it. If the tab or the workspace changes before your y (another tab selected, the workspace renamed or closed), nothing is moved. m on the workspace the tab is already in says so and asks nothing. To create, rename or close a workspace, use ctrl+b shift+n, shift+w and shift+d.

Known limits

Vimma is pre-alpha. What does not work yet, or works with a catch, is listed on the known limits page:

The guide at the top is written for this site; the details are built from Vimma's docs/guide.md and bindings.md at 1050bcc (2026-10-10).

Keys on this site

Keyboard shortcuts for this website
j kscroll down, up
d uhalf a page down, up
gg Gtop, bottom
/search the docs, or filter the keys
] [next, previous docs page
g hgo home
g dgo to the docs
g kgo to keys
g igo to install
g ago to about
?this help; Esc closes it

In Vimma, ctrl+b ? lists every binding.