Mikkel Høgh

Coding the web since 1999

21 Jan 2010

Introducing Herd Fire

If you, like me, are an avid Firefox user, you will likely have felt the burden of using the same Firefox profile for a variety of tasks. Having NoScript or ImgLikeOpera installed is handy when surfing, but just annoying when working on developing websites. Having FireBug installed will slow down JavaScript execution on all pages, unless you disable some of its features, regardless of whether you’re using it or not. Every extension you install slows down Firefox ever so slightly.

And that just extensions. Same goes for many aspects of Firefox configuration, language, about:config, etc. Would it not be better to have several Firefox profiles, one for each task? If you ask me, it would.

One problem though – even if you find the hidden Firefox profile manager, Firefox will not let you launch multiple instances of it without a bit of coercion. Previously, I resorted to all kinds of commandline trickery to manage my profiles until I found a script somewhere on the web (I’ve been unable to find it again. If you know it, please post a comment – I’d like to give proper attribution) that helped me set up copies of Firefox.app for each profile, but it had its limits. It did not work for Firefox.app itself, only for its named copies. It also renamed the Firefox binary, causing trouble for other scripts. So I’ve rewritten it in Python, improving a few key things:

  1. It modifies Info.plist to use a launching script instead of renaming firefox-bin.
  2. It sets the normal Firefox.app to use the profile named “default”.

Instructions for use

  1. Download Herd Fire.
  2. Copy your Firefox.app to create a named copy (I’m using the name “example” here):
    Copying Firefox.app
  3. Run Herd Fire ( run it from the folder its located in, or stick it in a folder on your path):
    Running herdfire
  4. Launch your new Firefox copy.
    Launching Firefox
  5. If there is not a Firefox profile with the extra name you gave your Firefox.app copy (in this case “example”), the profile manager will appear. In that case, use it to create a new profile with the correct name.
    Profile manager

    Pick a name
  6. Firefox-example.app will now always start with the “example” profile activated. Firefox auto updater might break this. In that case, all you need to do is to run herdfile again.
    New Firefox profile

The code is in a GitHub repository, so please don’t hesitate to fork, file bugs, etc.