How can I use two Firefox profiles?

How to set up different Firefox profiles for the same Ubuntu user and the same Firefox installation

Excerpt of the command-line options from man firefox:

-ProfileManager
   Start the profilemanager. Use this to choose the profile you would like to
   run firefox with. You will need to also use -no-remote if there is already
   a running firefox instance.

-P profile
   Start firefox with the profile named profile. Will start the profile
   manager if a valid profile name is not specified. You will need to also
   use -no-remote if there is already a running firefox instance.

So you just need to start Firefox with one of those parameters by either using a terminal, the Alt+F2 HUD, from the launcher icon's context menu after editing its configuration file, which I will describe below.

Set up a new profile:

  • Launch Firefox's ProfileManager from the terminal or with Alt+F2:

    firefox -ProfileManager
    

    Firefox ProfileManager main window

  • Rename your current profile default to profile1 (or whatever you like, you don't even have to rename it, but I will do in this guide for clarification - you just have to replace profile1 with your exact name wherever it occurs!) by clicking on Rename Profile....

  • Create a new profile with the wizard by clicking on Create Profile.... It will show you an info window first, read it and click Next. The second window will ask you to enter a name for the profile, enter profile2 here (or replace it wherever it occurs in this guide with exactly what you entered instead). I would recommend you not to change the folder where the profile will be stored in, unless you have a good reason to do so. Click Finish.

    Firefox ProfileManager Create Profile wizard

  • Exit the ProfileManager.

Set up your launcher icon to access those profiles from the context menu:

  • Copy the original launcher file (which is owned by root, used system-wide and will get replaced with the next update) to your home folder:

    cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
    
  • Edit the copy e.g. with either Gedit (GUI) or Nano (terminal):

    gedit ~/.local/share/applications/firefox.desktop
    nano ~/.local/share/applications/firefox.desktop
    
  • Search for the line:

    Actions=NewWindow;NewPrivateWindow;
    

    and add new context menu action identifiers like this (example names, but only used within the file, you won't see them anywhere else):

    Actions=NewWindow;NewPrivateWindow;Profile1;Profile2;ProfileManager;
    
  • Insert the code snippet below at the end of the file, you may vary the Name= value and add as many translations as you want (example for German [de] is given). The Exec=firefox -P ... lines have to contain the exact (case-sensitive) name of the profiles you created in the profile manager! The -no-remote flag allows multiple firefox profiles to run at the same time. Also the last word in the lines [Desktop Action ...] has to exactly match the keys you added to the Actions= line above.

    [Desktop Action Profile1]
    Name=Run Firefox with profile 1
    Name[de]=Firefox mit Profil 1 starten
    Exec=firefox -P profile1 -no-remote
    OnlyShowIn=Unity;
    
    [Desktop Action Profile2]
    Name=Run Firefox with profile 2
    Name[de]=Firefox mit Profil 2 starten
    Exec=firefox -P profile2 -no-remote
    OnlyShowIn=Unity;
    
    [Desktop Action ProfileManager]
    Name=Open Firefox profile manager
    Name[de]=Firefox Profilmanager öffnen
    Exec=firefox -ProfileManager -no-remote
    OnlyShowIn=Unity;
    
  • Now if you want to specify a permanent default profile for when you left-click the launcher icon (otherwise the profile you last used through the ProfileManager with the respective checkbox ticked gets launched), you also have to edit the main Exec= line. It's the topmost and should look like this:

    Exec=firefox %u
    

    Edit it to look like the one below, maybe replacing profile1 with the correct default profile name you wish.

    Exec=firefox -P profile1 %u
    
  • You have to reboot (maybe logging out and back in is also enough?) before the system realizes that you want to override the system-wide firefox.desktop file and use your personal and customized one. Or you can use the command

    desktop-file-install --dir=~/.local/share/applications ~/.local/share/applications/firefox.desktop
    

    to re-initiate the launcher file. After that, enjoy your multiple profiles!


I think Firefox Profile Switcher is your answer!

You can activate it with the option "-P" like this on the commandline

firefox -P

You can then create Profiles for each task, all in the same homefolder (if you must).

firefox profiles

To have them all running at the same time you'll also need to add --new-instance to the command.

And finally, you can select one of the predefined themes via the Customize Menu and Toolbars option :

Open the customization dialog and on the lest you'll see Themes as drop down menu.

You'll have to this for each social media account, I guess.

You can now either place an icon on the launcher that invokes

firefox -P --new-instance

or write a small wrapper script and replace the symlinks.

sudo nano /usr/local/bin/firefox

enter the following with the correct paths

#!/bin/bash
/usr/lib/firefox/firefox -P --new-instance

make it executable

sudo chmod +x /usr/local/bin/firefox

As pointed out by the user muru in the comments below, it is not necessary to replace the original link, as originally suggested

The path to the firefox link might differ on your OS, you can find it out with

which firefox

then remove the old link

sudo unlink /usr/bin/firefox

link it to the correct path

sudo ln -s /usr/local/bin/firefox /usr/bin/firefox


I would propose the Multi-Account Containers extension, an official Mozilla-made addon. The use-case you described is precisely why it exists:

Screenshot from AMO
(source: mozilla.net)

She can create containers for each one of her account sets, and choose an accent color. This accent color will show up below the title of every tab, indicating which container it is on:

Three tabs on three containers (nevermind the dark theme)

Tabs by default do not open in a container, you create them by long-pressing the "new tab" button.

Not only are the containers easily identified, tabs are just normal tabs, you can put them all on the same window. (with multiple profiles, you would not be able to have tabs of 2 profiles in one window).

Additionally, the browser configuration and installed plugins are still the same (since it is just one browser), which reduces the "WTF" factor.