Configuring the GNOME Shell Panel with Firefox and Thunderbird Profiles

Posted by Scott on Apr 2nd, 2020

Mozilla’s Firefox web browser and Thunderbird e-mail clients have a little-known feature known as “Profiles.” Profiles allow you to create fully separate instances of these applications, each with their own customized config preferences and extensions.

I make heavy use of this feature to create separate Firefox profiles for my personal everyday web browser, work web browser, web development browser, etc. With Thunderbird, I use profiles to separate my personal vs. work email.

From the command line, invoking firefox or thunderbird with the -P option will bring up a dialog box, allowing you to chose between your existing profiles, or create/rename/delete profiles:

If you haven’t created any new profiles, you’ll be using a profile named default. On my Ubuntu systems, each of these profiles will be stored under your ~/.mozilla/firefox/ directory (for Firefox) or ~/.thunderbird/ directory (for Thunderbird).

If you want to be able to easily launch these profiles from the GNOME Shell GUI rather than the command line, you can create custom launchers for each profile. I typically do this and choose different icons for each profile to visually tell them apart. To do this, create a .desktop file within your ~/.local/share/applications/ directory. I typically name these files firefox-<profile-name>.desktop. Here’s an example of one:

[Desktop Entry]
Name=Firefox (WebDev)
Exec=firefox -P webdev -no-remote --class FirefoxWebDev

By default, the Icon setting will search for an icon file (e.g, .svg or .png file) from your current theme within your /usr/share/icons/ directory. Specify an absolute path to the icon file and include its filename extension if you want to use an icon that’s not in your current theme. You can also create custom icons and drop them in your ~/.local/share/icons/ directory.

Note that on the Exec line I’m also starting firefox with two additional options, -no-remote and --class. The -no-remote option prevents conflicts with other instances of Firefox that are running. The --class option specifies a window manager class, which you’ll also set for the StartupWMClass option. You can set this value to any string you like, but it must be unique (i.e, don’t re-use it in another .desktop launcher config).

If you don’t set a custom window manager class, all of your running profiles will be grouped together under the same icon in the GNOME Shell panel. That last subtlety has been an annoyance I’ve wanted to fix for a long time, and learning about it is what prompted me to write this post to share.

References: Mozilla docs on using the profile manager, AskUbuntu post on setting the window manager class

ProgressPuppy: A Fun and Simple Task Manager

Posted by Scott on Sep 18th, 2019

I’ve been taking a self-funded sabbatical from work this summer, and set out with a bucket list of things I’ve always wanted to get around to doing but never felt I had the time to fully dive into. One of those things was to take a Ruby on Rails based task manager that I’ve been using personally for the past year and refine it as needed so I could launch it as a legitimate production-level application.

What does production-level mean to me? In this case, a bunch of things:

  • The app needs to have solid multi-user support with account registration, password resets, etc.
  • Testing and Test Driven Development should be taken seriously. Unit, integration, and selenium-based system tests should reach well over 90% code coverage.
  • The code should pass linting tools such as rubocop and rails best practices, as well as security auditing tools such as brakeman
  • The code deployment process should be simple, capable of rollbacks, and automatable (I’m using capistrano)
  • The server infrastructure that ProgressPuppy relies on should be easily replicable at the push of a button (using infrastucture as code tools such as Terraform and Puppet)
  • The application should have a robust backup and restore process
  • I should be able to keep the application up to date with the latest stable versions of Ruby on Rails and its dependent gems (the app is currently running on Rails 6.0)
  • Use Stripe to accept payments for paid plans
  • Deploy a marketing web site to showcase what ProgressPuppy does and its various plan tiers

The point of this hasn’t been to create a side project that generates significant income – I don’t mind at all if no one but me and a handful of friends ends up using ProgressPuppy. Instead, I wanted to go through the exercise of treating the web app more seriously, but keeping it within a limited scope where the learning would remain fun.

To say that this effort took up a lot of time would be an understatement, but the fun factor remained strong the entire time. I use this tool as my daily task manager, and the various memes that pop-up after completing tasks still bring a smile to my face:

Check out ProgressPuppy if you get a chance. I don’t pretend to have much in the way of web design skills, but the web app is functional and reliable, and I intend to keep it that way as I make further improvements to it. Next on my roadmap is to introduce some daily habit tracking features and make the app more mobile web browser friendly.

ProgressPuppy is also open source software, released under the GNU Affero GPL license. You can find its source code repo on GitLab.

Killer SSH Tip

Posted by Scott on Mar 4th, 2009

I feel the need to spread this ssh tip that saves me from quite a bit of typing on a daily basis. I learned about it from Elliott’s OS X Tips and Tricks post on the Carsonified blog.

Add the following to your ~/.ssh/config file:

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

Now when you ssh into a host, subsequent connections to that host use the same TCP socket, and don’t require authentication. This will be the case for as long as that initial connection stays open, and it works for sftp as well as ssh.

I realize another way of avoiding typing your password all the time is to use ssh keys, but I happen to work on embedded systems that get rebuilt very frequently and which I’m not able set up an ssh key as part of the build process. This technique allows me to log into the system once per session and not have to type the password over and over again.

I’m Really Digging Foxmarks

Posted by Scott on Oct 29th, 2008

For years now I’ve maintained my own rsync-based shell scripts to “synchronize” my web browser bookmarks and email client address book between the various computers I use at home and at work. The scripts didn’t actually synchronize changes – they were more of a way of pushing or pulling changes, and I’ve developed a diligence in keeping track of what’s most up to date to avoid clobbering the data I want to keep.

Recently I started using the Foxmarks Firefox extension for managing my bookmarks, and it has worked flawlessly. This free plugin does true synchronization – meaning I can add or delete bookmarks at will on any machine at any time and distribute my changes without losing any data. This kind of bookmark sync service has been around for a while, but Foxmarks allows me to store my data on my own server – a key feature I had been waiting for for some time. All I needed to do was add WebDAV support to my Apache setup. It even works with https and authentication.

So checkout Foxmarks if you need to keep your Firefox bookmarks synchronized. I believe it also supports sync’ing password data too, but I’m too much of a security geek to keep passwords stored in my browser.

Week-long IM Fast

Posted by Scott on Aug 11th, 2008

Every so often I take a break from Instant Messaging (IM) to see how it impacts my productivity and concentration. This week I have chosen to take one of these “IM fasts.” Please use email to contact me.

IM Fast Reflections

Posted by Scott on Dec 15th, 2006

Well, it’s been a week, and the experiment is over. Unfortunately, I had to use IM for a couple of hours yesterday to firm up plans to head to Boston with a friend who was unavailable by telephone (thanks a lot, Billy!). At any rate, the point of the experiment was still made. The verdict? IM: you can’t live with it, and you can’t live without it. 🙂

I can’t see myself doing without IM entirely, as it would wreck what bit of a social life I do have. At the same time, I’m going to be much more conscious about when and how I plan to use IM when I log on, and will probably limit it to a few hours each day, and then turn it off. As with many things, moderation is key.

The Boston event I referred to above involved attending a talk given by Noam Chomsky. It was an interesting overview of the state of populist movements in Latin America, and a striking contrast to what we consider political issues in the U.S. In places such as Bolivia, elections were over issues such as local control of natural resources, particularly land and water rights, and the human rights of indigenous people. A person like Evo Morales wouldn’t have a chance in a U.S. presidential election today, where our last White House race consisted of two people who attended the same ivy league school, were members of the same Skull and Bones elite society, and who were funded by incredibly concentrated, private interests. Most Latin American countries face difficult challenges because foreign investment is so deep – unlike East Asia, where strong internal investment helps to prevent these countries’ political systems from being manipulated so thoroughly by foreign countries. It was a thought-provoking lecture on issues I was very unaware of.

A Boost of Productivity

Posted by Scott on Dec 11th, 2006

Haha, I found this appropos article on reddit just now, about a PC World writer who stops using PCs for a full 20 days. I won’t be trying that out..

I had an incredibly productive evening working on CampaignLever. Everything just started falling together, and several features are now working. The key to motivation is to see continual progress, and that was certainly the case during this productivity boost.

IM Fast Update

Posted by Scott on Dec 10th, 2006

It’s been over two days since I started my week without instant messaging, and I’m definitely noticing the differences. Am I feeling more productive? Yes. I also feel I’m more efficiently focusing on whatever’s in front of me, whether it’s an e-mail, article, or code I’m reading. I think that’s a big plus, and it would easily be worth it at this point just to swear off IM forever if there were no downsides to this.

But there are downsides to it. I already feel disconnected from a lot of my friends whom I communicate over IM with regularly. Surprisingly, short chat sessions with them make up fairly meaningful connections I have with them. Often times we’re exchanging interesting URLs over IM. As a budding entrepreneur, this frequently revolves around product ideas or interesting market research that I find very useful. I’ve sent out a few of these kinds of updates via e-mail now, but no one is responding. I don’t blame them – IM is just too convenient for these types of exchanges. Share a link or an idea, and get feedback from someone in real time. There are also many social plans that get made over IM, and I’m wondering if I’ve already missed an opportunity to grab lunch or a beer with some of my friends.

I’m certainly going to continue this productivity experiment, but as of now I’m thinking when it’s over I am definitely going to continue using IM, but I may end up managing it a bit differently, such as limiting the time I’m on-line (my “Away” status is generally ignored by most poeple – they just see my user icon and fire off a message). Perhaps using something like Campfire would also be easier to contain from an interruption standpoint.

Next »

Blog Badges

[FSF Associate Member]