The private workspace
The private workspace is Firefox's private browsing, reached like any other workspace. History, cookies, site storage, the cache, form history and downloads made there are forgotten when you close it, because it is a real Firefox private window.
Use it
- Press ctrl+b shift+p (or ctrl+shift+p, or
:private). The private workspace opens, and the status bar says◆ private. - Browse as usual: hints, find, splits, copy mode and the side panel work as in any workspace.
- Press ctrl+b shift+p again, or ctrl+^, to go back to where you were. The private workspace stays open, one key away.
- When you are done, ctrl+b shift+d in it (or
:private closeanywhere) asks y/N, then closes it and discards its data.
Good to know
- Its own key only. ctrl+b ( / ), ]w / [w and ctrl+^ never land in it by accident; from inside it, they take you out.
- There is one. Every private window belongs to it and they share one cookie jar, as Firefox's private windows do.
- The workspace picker (ctrl+b w) lists it last, with a tab count only, never a title or an address. m on that row reopens the current tab there; a private tab never moves out.
- On Hyprland it takes your Vimma window's place, in the same tile and size, and your normal window comes back when you switch. Elsewhere it is a second window.
- Add-ons run there only if you allowed them in private windows (ctrl+b e, then P).
- Not hidden: what you copy to the clipboard. The window's title is only
Vimma Private Browsing, never the page's.
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.
Private workspace
The private workspace is a Firefox private window that Vimma treats as a workspace. Everything a private window promises, it keeps, because it is one: nothing you do there stays on disk. History, cookies and site storage, the cache, form history, the downloads list and session restore all forget it, and so do Vimma's own files.
| Keys | Command | What it does |
|---|---|---|
ctrl+b shift+p, ctrl+shift+p | :private | Go to the private workspace, opening it if it is not open; in it, go back. |
ctrl+b shift+d (in it) | :private close | Close it after y/N; its history, cookies and site data are discarded. |
ctrl+^, ctrl+b ^ (in it) | Back to the workspace you came from, in the window you came from. | |
ctrl+b ) / ctrl+b ( (in it) | Leave it for your first / last workspace. | |
ctrl+b w | :workspaces | The picker; the private workspace is its last row. |
- Its own key only. The private workspace is never a stop on
ctrl+b (/ctrl+b ),]w/[w,:wn/:wp, nor thectrl+^of a normal window, so cycling never drops you into it by accident. From inside it, those keys take you out. - In it, the status bar says
◆ private(in the theme's magenta), andctrl+b blists its tabs under a◆ privatehead. Splits, hints, find, copy mode, marks in the side panel and the command line work as in any workspace; the command line's history there is its own and is never written. - There is one private workspace. Every private window is part of it:
ctrl+nin it, or Firefox's "Open Link in New Private Window", makes another, and the key takes you to the most recent one. They share one cookie jar, as Firefox's private windows do. - Closing it (
ctrl+b shift+dor:wdin it, or:private closeanywhere) asksClose the private workspace (5 tabs)? Its history, cookies and site data are discarded. y/N, then closes every private window, pop-ups included (an open sign-in pop-up would otherwise keep the data alive), and Firefox discards their data. The windows close as a script closes them: yourywas the question, so Firefox's own warnings do not follow, and a private download still in progress is cancelled. Closing a private window with your window manager orctrl+shift+wasks nothing; the data goes once the last private window has closed. - Add-ons run there only if you allowed them in private windows (
ctrl+b e, thenP). Searches use Firefox's private search engine if you set one. Vimma's own keys and pages need no add-on. - Links from other apps open in your normal window, as Firefox does, so you leave the private workspace to see them (on Hyprland the normal window swaps back into place; the private workspace stays one key away). Routing rules never send a page into or out of it.
- Scripts:
vimma-ctl statein the private workspace says"private": trueand"workspace": "private", and gives every tab'surlandtitleasnull.vimma-ctl openandsend-keysact on the focused window, so with the private workspace focused they load into it and type there. - Diagnostics:
about:vimmaand:bugin a normal window leave private windows out, and keys typed in a private window are never added to their key log. - What a private window does not hide: the clipboard (copy mode's
ycopies to the system clipboard, as in Firefox). Its window title, which your window manager, its bar and screen sharing see, is onlyVimma Private Browsing, never the page's title (see Privacy defaults). - Permanent private browsing (
browser.privatebrowsing.autostart) makes every window private, so there is no private workspace: the key and:private closesayevery window is private (permanent private browsing)and do nothing, and private windows behave as before (no workspaces, no◆ private). A policy that turns private browsing off makes it sayprivate browsing is turned off by policy.
On Hyprland it takes your Vimma window's place. Firefox keeps privacy per window, so the private workspace is a window of its own, but you never see the two side by side: going to it puts the private window exactly where your Vimma window was (same workspace, same tile, same size, fullscreen or floating if it was), and the other tiles keep their sizes. Your normal window waits in a hidden special workspace, special:vimma, and comes back in the same place when you switch back (any of the keys above), when the private window closes (ctrl+b shift+d, ctrl+shift+w, SUPER+W), or when a link from another app arrives. If Vimma quits or crashes meanwhile, the next start shows your normal window as usual: nothing about the swap is written to disk.
- How: Vimma talks to Hyprland over Hyprland's own socket (
$XDG_RUNTIME_DIR/hypr/…), from the browser process only, with a fixed set of commands: move, swap, focus, fullscreen state, float or tile, exact size and position. They carry only window addresses, workspace numbers and sizes, never a page title or URL, and Vimma runs nohyprctland no other program. To learn which window is which, a new Vimma window carries a random title (vimma-and 32 hex digits) for a moment when it opens. Checked with Hyprland 0.56.2 and a Lua config, as Omarchy has; older configs use the legacy command names, which Vimma also speaks. - Grouped or pinned: a grouped (
SUPER+G) or pinned Vimma window is not swapped. The private workspace opens beside it in the group, as a group tab, and switching moves the focus. - If Hyprland refuses a swap, Vimma shows your normal window, says
private: the window manager refused the swap; showing it as a window, and opens the private workspace as a window of its own until the config is next reloaded.about:vimmashows the Hyprland version and which placement is in force, or why it is not swapping. - If Hyprland never names a Vimma window (its random title does not show up), that switch shows the private workspace as a window of its own, the browser console says
private: Hyprland did not name the Vimma window; showing it as a windowonce, andabout:vimmaadds(last switch: window not named). The next switch tries again. - Never stuck: if a swap cannot be done, for example because you moved the private window to a scratchpad, going back brings your normal window out of
special:vimmato the workspace you are on. - Opting out:
[private] placement = "window"inconfig.toml(below) opens it as a second window, as on other systems.
Elsewhere (other window managers, X11, or placement = "window") it is a second window: Vimma opens it at the current window's size (and, on X11 and floating window managers, its position) and focuses it when you switch.
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 at 52f2481 (2026-10-15).