Synchronizing Firefox Through Dropbox

Having removed the Mozilla Weave extension from my Firefox install (at least for now), I was again left searching for a synchronization solution. This time I wanted one that really worked for me. I mentioned in yesterday’s post that I might try using Dropbox and, while I was speaking rather tongue-in-cheek at the time, I couldn’t think of any reason that it shouldn’t work so last night I tried it.

I used my Mac as the “master” machine, but given the way that Dropbox works, I don’t think that there’s any preference given to one machine over the other. In this case, “master” just means that it’s the machine whose profile I copied to create the shared profile that other machines will tie into. I’ve now referenced that profile on my Windows XP virtual machine at home and on my Linux machine at work and, though I haven’t thrown any hard tests at it, everything appears to be working fine so I thought I’d document the steps I took in case anyone else is interested in trying this.

Create a New Profile on the Master Machine

It would probably suffice to use an existing profile directly, but in the interest of having an escape plan, I’d recommend creating a new one. This is really the only set of instructions that may vary across operating systems, so I’ve tried to provide links for systems other than Mac where such a link was readily available.

  1. Quit Firefox (On Windows and Linux, close all open windows).
  2. Create a new directory in the Dropbox directory for the shared profile. I created mine as ~/Dropbox/Application Support/firefox/profiles/wg3×0vhj.dropbox. The unintelligible name of the last directory simply follows the typical profile naming convention. It may work just as well to name the last folder “foo”, but I wasn’t sure and it wasn’t worth the effort of attempting to deviate.
  3. Create a new Firefox profile (Windows instructions).
    1. Start the Firefox Profile Manager. There is probably a better way, but not knowing it, I dropped into iTerm:
      $ /Applications/Firefox.app/Contents/MacOS/firefox -profilemanager
    2. Click the Create Profile… button.
    3. Enjoy the wizard process, but be sure to Choose Folder… rather than accepting the default on the second panel.
    4. Select the profile folder created in ~/Dropbox.
    5. Click Finish.
  4. Set the new Dropbox profile as the default profile.
  5. Start Firefox to create “instantiate” the new profile.
  6. Quit Firefox.
  7. The new Dropbox profile directory should now have content. Delete that content (leave the profile directory itself).
  8. Navigate to the directory of the existing profile to be shared. My target profile was located in /Users/myusername/Library/Application Support/Firefox/Profiles/j3a1ovux.default
  9. Select all of the files and directories in this directory and copy them to the Dropbox profile directory.
  10. Wait until Dropbox finishes synchronizing those changes. It could take a few minutes, so be patient.
  11. Start Firefox. The new profile should be executed.

The good news is that the hard part is now over. All that’s left is to wire up the newly shared profile to other machines.

Use the Shared Profile on Windows

Once a profile has been created and shared (by creating it a Dropbox), other systems can tap into it pretty easily. All it takes is a simple edit to Firefox’s profiles.ini file, the profiles configuration file. The first computer I wired up was my Windows virtual machine.

On Windows, the profiles.ini file is located in APPDATA\Mozilla\Firefox. On my machine, that expands to C:\Documents and Settings\myusername\Application Data\Mozilla\Firefox.

  1. Close any open Firefox windows
  2. Make hidden files and folders visible if they’re not already
    1. Open Windows Explorer
    2. Select Tools > Folder Options
    3. Select the View tab
    4. In the Hidden files and folders group, click Show hidden files and folders
  3. Open profiles.ini in a text editor
  4. Add the following lines:
[Profile1]
Name=dropbox
IsRelative=0
Path=C:\Documents and Settings\myusername\My Documents\My Dropbox\Application Support\firefox\profiles\wg3x0vhj.dropbox
Default=1

A few changes will need to be made, of course. First, if there is already more than one profile, the numeric value in Profile1 will have to be changed to the next available integer. Second, the Path value will probably need to change.

That’s it. Windows is all wired up. Restart Firefox.

Use the Shared Profile on Linux

Rinse, repeat. As with Windows, all that needs to be done is a little wiring. On Linux, the profiles.ini file is located in /home/myusername/.mozilla/firefox. Just add the lines below and make the appropriate changes as outlined in the Windows instructions above.

[Profile1]
Name=dropbox
IsRelative=0
Path=/home/myusername/Dropbox/Application Support/firefox/profiles/wg3x0vhj.dropbox
Default=1

Caveats

One thing that I noticed right away is that syncing profiles keeps Dropbox pretty busy. That activity makes Dropbox very, very chatty if allowed to speak. Almost immediately, I turned off Dropbox’s Growl support on the Mac and will soon be doing the same for those annoying status tray balloon notifications on Windows. So far, Linux has been pretty quiet.

On the whole, everything seems to be working exactly as I’d expect with the added benefit (maybe) of retaining sessions across multiple systems. I haven’t yet decided whether I like that unexpected twist.

Interestingly (or not), with respect to Dropbox’s chattiness, the only platform on which I can’t disable notifications through a Dropbox preference is the on the one platform where notifications are the most intrusive and least simple to kill. That’s Windows, of course. Argh.

Later that same night…I installed the latest version of the Dropbox application for Windows and the preference is there. No more balloon notifications.

Subscribe16 Comments on Synchronizing Firefox Through Dropbox

  1. Sammy Larbi said...

    Good idea. I tried synchronizing iCal with Windows Calendar in the same manner. Didn’t work quite as well.

  2. Rob Wilkerson said...

    Seems to work great for this purpose. The chattiness is annoying, but can be disabled in all environments one way or another and easily in Mac & Linux (preferences). I haven’t messed with it on Windows yet. My 1Password extension is now missing, though. Have to figure out what’s up with that.

  3. Heikki said...

    Excellent idea. I’m gonna use this to sync Zotero data as well. Thanks for writing up the instructions.

  4. gotisch said...

    Doesnt firefox save all your passwords in the profile too?
    Do you think there is any security risk by hosting this on a third party server?

  5. Rob Wilkerson said...

    Passwords are part of your profile. I’ve since written about a slightly more surgical sync that I’ve taken to using that doesn’t include profiles – just bookmarks, extensions and Greasemonkey scripts that you might like better.

    And yes, I’m quite sure that there is a risk. There’s a risk to storing anything on a third party server, but it’s a risk I’ve chosen to accept in this case. I’d certainly advise against it if doing so makes you uncomfortable in any way.

  6. Helmut said...

    You do know that by using Symlinks you can just route ANY folder into Dropbox?!
    Turn to http://lifehacker.com/5154698/sync-files-and-folders-outside-your-my-dropbox-folder for an overview.

    Cheers

  7. Rob Wilkerson said...

    helmut – Yep. I use that technique for a few project code bases that I want to share without necessarily having to commit and pull each time I change machines. Similarly, if all you want to do is just change the primary directory, you can modify that in the Dropbox preferences.

  8. Andre Reis said...

    My main concern is with cache. It seems pointless to me to have firefox sync all its cache to Dropbox, not to mention the huge chunk of upload you’d be using. If you open about:cache in firefox you’ll see that it’s cache is set to folders inside Dropbox.

  9. Ibrahim | ZenCollegeLife.com said...

    Awesome! I’m going to be so productive with DropBox now!

  10. Richard said...

    You can specify the directory where you want Firefox to store its cache. You’ll have to create/edit the preference name: browser.cache.disk.parent_directory under about:config.

    I too am in the middle of setting something up like this with Dropbox. So far, I’ve just been syncing my open tab sessions via Session Manager and specifying it’s backup.session location to my Dropbox folder. That way, whenever I open Firefox on another computer all of the tabs I had opened will now open up there.

  11. climbatize92 said...

    My main profile is on windows & I did all like you’ve writen.
    When I run firefox with parrametre “-p” on linux and I choose “dropbox” profile, I have this error message:

    Firefox cannot use the profile “dropbox” because it is in use.

    To continue, close the running instance of Firefox or choose a different profile.

  12. Rob Wilkerson said...

    You have to choose to use any profile that is already in use. Try quitting Firefox and restarting with the -p parameter.

  13. arthur said...

    Great idea!

    I would love to try this other programs!

    I had to add firefox-bin to the terminal command to get it to open properly.

    Does anyone know if you add another account using the same technique it will write over/erase all of the synced files that are in the drop box?

  14. Rob Wilkerson said...

    I do this – or a “light” version of this – for lots of apps (Komodo Edit, Apache, bash, git, etc.). I’m not sure I understand why you had to add firefox-bin, but I’m glad it’s working for you.

  15. silversrt said...

    Do you have copy writer for so good articles? If so please give me contacts, because this really rocks! :)

  16. QA said...

    Did you know that Dropbox has a repository of feature requests where you can vote for user-submitted suggestions? Why not go there and vote for a Firefox profile sync feature? Ideally we shouldn’t all have to spend time rigging together a home-made sync solution for FF.

    www.dropbox.com/votebox

    In the meantime we have this clever workaround that Rob W. has been kind enough to post, so thanks Rob!