Ever since netscape 3 or 4 profile management stayed the same with the mozilla browser. I think there were some improvements to roaming profiles, but the basic way of handling profiles hasn’t changed much.
But now with firefox 3.6 and personas, profiles suddenly got a lot more useful: Now you can distinguish windows from different profiles.
Profiles basically have their own:
- Persona and Layout
- Extensions and Add-Ons
- Cookies and History
- Passwords
- Bookmarks
- Settings
This is all great, now you can have these heavy-weight web-developers extensions in their own profile, put your amazon and banking cookies into another. Have a profile just for quake live, because you don’t trust their extension. Disable the adobe flash plugin in some profiles, thus protecting you from cross-profile privacy attacks. This is necessary since all flash plugins share a common storage. (However you are most likely running adblock plus with an additional privacy list, to protect yourself from flash cookies and bugs?)
So what’s the usability problem?
Well, starting these profiles ain’t easy. Firefox creates a lock file in the profile directory and refuses to start another profile, further clicks on the firefox icon, will open a new window in the currently running profile.
Shortcuts
You can however create a few shortcuts (bash syntax, windows doesn’t differ much):
# open the profile menu (based on profiles.ini)
firefox -ProfileManager
# start profil 'default', even if other profiles are
# already running
firefox -P default --no-remote $*
# create a new window in profile 'default', or start
# profile 'default', this will fail if another profile
# without '--no-remote' is already active
firefox -P default
You can basically start everything with ‘–no-remote’ and create a shortcut for each profile with (-P profilename), but you’ll run into troubles with the default profile, once your mail program tries to open a browser window.
Default Firefox Wrapper Script
I wrote a simple wrapper script, to replace the firefox command, thus working around the ‘new no-remote instance’ or ‘new window in existing instance’ problem:
#!/bin/sh
if ps ax | grep -q "[/]firefox.* -P default --no-remote"; then
# use existing window
/usr/bin/firefox -P default $*
else
/usr/bin/firefox -P default --no-remote $*
fi
This relies on ‘ps’ and will run into trouble if firefox restarts itself. Additionally all shortcuts now need to use the full path to the real firefox executable, to avoid the ‘default’ wrapper.
Instead of using ‘ps’ to search for running processes, one could search for the firefox profile directory (.mozilla/firefox, .firefox, …), find locked profiles (lock) and extract the correct profile name from the profiles.ini. A wrapper written this way, should be able to start arbitrary profiles ‘just right’.