Add-on request: Firefox Workspaces

This is something I’ve really wanted for a long time, and finally I’ve decided to ask and see if anyone’s up to the task of making it reality.

I want to have a “workspaces” feature in Firefox. That is, I want to be able to create named sets of windows and tabs and switch quickly between them. I work on a number of projects both personal and for work that involve a large number of tabs across multiple windows. I’d like to be able to compartmentalize these. There are plenty of add-ons that let you save a window’s tabs as a named group, then restore it later, but that’s not good enough.

I need to be able to do it for all my windows.

For example, let’s say I have all of the following going on in my browser at once:

Project 1: Documentation updates for WebRTC

This project has the following windows and tabs open:

  • Window 1: One tab open for each article I need to update on MDN. Looking at my current situation, this window has around 25 tabs in it.
  • Window 2: The WebRTC specification. This also has multiple tabs open. They’re all WebRTC specification, but loaded at different places in the spec, so I can quickly look at different parts of it. There are also some tabs opened to a couple of other specifications that are related, such as Media Capture and Streams.
  • Window 3: Blogs and other resources. A number of tabs opened to various blog posts and other articles with useful information. Also a few related pages on MDN that I need to refer to.
  • Window 4: WebIDL for the interfaces I’m updating documentation for, one tab for each interface.
  • Window 5: One tab for each bug that I need to review and update documentation for, as well as tabs containing the reviews and/or patches that I need to look over while doing the work.

There may be others, of course. And realistically, I almost certainly have several projects just like this. I’m almost never trying to update one thing at a time. Right now I have windows and tabs open for at least seven documentation sets that I need to update.

Project 2: Researching an electronics purchase

This project has these windows open:

  • Window 1: A couple dozen Google searches and loaded reviews and articles about the item or items I’m considering or looking for.
  • Window 2: Tabs for the items I’m considering buying on various online stores (Amazon, Target, Best Buy, whatever).

Projects 3 and 4: General doc updates for Firefox versions X and Y

Similar window and tab setup to Project 1.

Project 5: Personal programming project

I’m writing an application for the Mac using Xcode but have to do a lot of research, so I have windows and tabs for this, too.

  • Window 1: Documentation about Cocoa APIs loaded in multiple tabs.
  • Window 2: Code samples and blog posts that I’m using to understand various technologies.
  • Window 3: Books about networking and OpenGL opened in Safari Books Online.
  • Window 4: Video tutorials.

And so on and so forth. I currently have 30 windows open with a total of 315 tabs. This is not really manageable, and many of these windows and tabs are only relevant when I’m actively working on a specific project or task. I would be more efficient, and my computer would likely be faster, if I could easily and quickly stash away the windows that don’t matter in my current work context.

Bonus points if I can set specific windows to be available in multiple or all workspaces!

The trick here is to be sure that when switching workspaces, the act of recreating windows and adding their tabs doesn’t cause all the tabs to load at once. :slight_smile:

5 Likes

First off: props for writing all that down. It’s good to have a realistic example of a workflow that requires tons of windows/tabs. Many people just assume you are to lazy to close tabs (which I cant claim is entirely not the case for me, but there is more to it).

You will probably have considered this, but why aren’t you using multiple OS-level Desktops/workspaces/(or whatever else they are called, but all major OSs support them natively now), one for each project, with an individual Firefox profile for each?
You could use Firefox sync to have your settings/extensions/etc consistently across all desktops/profiles, but could manage the open tabs and windows individually.
Depending on your current need ans your systems resources, you could start or close the instances of Firefox and the other programs.
(Multiple instances can be started by passing -no-remote -p to all but the first instance.)

Unless you find a Linux desktop / window manager that supports it, you won’t get your bonus points (one window in multiple workspaces) and the OS http-URL handler will only work with one profile, but except for that this should fulfill all your requirements.

Maybe you could try using different profiles, one profile per project. That way, you could open only the profile you want to work on. You can even have several profiles open at the same time!

So, that’s a great question. OS-level workspaces are actually too heavy-handed for my needs. I don’t need all my things swapped in and out. Just my browser. Essentially everything else I use, I want to have available all the time.

As you point out, yes, I could use Firefox Sync and multiple profiles, but this feels like it means wasting system resources to a potentially disastrous level. Doing this means having multiple instances of Firefox running at once; I would hate to see how my Mac copies with having 3, 5, or 15 instances of Firefox trying to slug it out at the same time, and that’s what this proposal would involve.

That’s why having in-browser workspace support (either built-in or as a clever add-on) seems like the only viable solution to me.

I don’t really think that having 15 (and that should really be as much as it gets (?)) Firefox instances open should be a performance problem. Opening 300 tabs in Chrome certainly isn’t. It is just 300 processes with ~100 MB ram each, but hardly any CPU usage (and all the RAM can be swapped to SSD, which hardly costs anything anymore).
With the Firefox instances it should not look much different (after all, you can even control the number of processes per instance). Currently, Firefox’ background CPU usage is much higher (at least for me), but that is a problem that needs to be addressed elsewhere.

So it seems to me that one could also view this as a general problem of OS-level window/application management. If the current OS workspaces don’t cut it for you, you may want to look for alternatives there.

I never really got how mac users manage their windows. I have a professor who never uses the taskbar/doc. She just keeps dragging and resizing windows, but there have to be better alternatives.


As far as extensions go, they can hide tabs, move tabs between windows, remove windows without traces (and thus “hide” windows) and also “unload” tabs if need be.
So from a technical perspective, I think this could be done.
You’d pretty much need to change Simple Tab Groups to not manage multiple groups within each window, but multiple windows within each group.
That would just be a lot of (mostly UI) work.

Mozilla (whoever that is in this case) decided to ditch Panorama, so don’t hope for something build-in.

This seems like something that session manager extensions are suited for, but reliability of extension data storage is subject to some questions, and they typically do not retain tab back-forward history the way Firefox’s session history files do.

Something like what I’m looking for is definitely doable; I can look at the extension APIs and see all the tools needed to implement it. The only thing keeping me from doing it myself is time. :slight_smile:

That said, I’m very sure that running 15 copies of Firefox at a time would be a huge problem for me. The overhead of having so many copies running at once seems like a significant hit to both memory and CPU usage. Especially if I move between them often enough to keep the system guessing about moving to swap and the like.

@sheppy, aren’t Firefox containers for the almost same use case?
https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/

2 Likes

would love to have this too. something like workona on chrome (https://workona.com/)

Something very much like that would be fantastic!

I’m hoping that Mozilla will do this with the newish container functionality (or something like it). It’d be great to be able to close everything in the “work” container for Monday. I’m particularly concerned about memory and cpu usage.

However, containers are also for isolating cookies (and more I imagine). For “workspaces” functionality to work nicely, I’d like to be able to tag relevant tabs to be part of a “workspace” and then close them all to be restored later. Ideally, not via the current “Reopen in container” function as:

  1. It seems to be only available via the mouse. Tagging would make a lot of sense via a keyboard action.
  2. It (purposely) loses the history of that tab.

I often need the tab’s history because of various paths though Wikipedia, for instance.

Cheers,
Steve.

I have a similar workflow, what I use to handle it are the multi-account containers + Workona, have you tried it?
I found it very practical and easy to use, it hides all the windows you are not using and you can switch workspaces with one click