Transient Applications

Thomas blogged about my nemesis, bug 482354. I’ve been trying to upstream the fix for unbreaking clicking on links for quite a while now.

In it, Christophe brought up Rhythmbox, which is quite similar to Pidgin in how it acts with the tray icon.

Several years ago I was chatting with Seth about Rhythmbox and he mentioned that he thought it was a fairly special kind of application because it is generally used in a very “transient/background” way. For example, a normal way to use it would be minimized to the tray (not even in tasklist at the bottom); then when you want to switch songs or albums, you click the tray, do a quick search, and then minimize again. This contrasts with “regular” applications like Eclipse, Firefox, Evolution where it’s expected that you will often spend a substantial amount of time in them in one go.

The tray icon approach sort of works, but I think we could do better. Following is a potential approach that I’m recording in my blog so I don’t forget, and of course to gather comments.

Transient Application

First, for reference here is how Rhythmbox currently looks:

Unmodified Rhythmbox

And here’s a mockup of how it could work:

How Rhythmbox could be a “transient” application

The general idea is to treat the application window like a really fancy GtkMenu. Here’s a concrete list of user-visible behavioral changes:

  • Clicking anywhere outside of the window causes it to minimize back to the tray icon.
  • It does not appear in the task list
  • There are no minimize/maximize buttons
  • The close button does not actually exit the app (i.e. stop your music), but just minimizes
  • There is a visible arrow showing you the association with the tray

Overall I think this approach will make the “show Rhythmbox window, choose song/album, start playing, make it go away” task nicer since you’ll only have to move your mouse to the tray icon and click once (to open) instead of twice (once to open, once to close). It will make it a lot clearer to the user what’s going on (in the current Rhythmbox we have the minimize/maximize animation, but no arrow).

Implementing this would require window manager changes, new GTK+ API for GtkStatusIcon, and updating several applications that fall in this category (Rhythmbox, Pidgin, Banshee, etc.) to use it. Also someone with actual graphics skills would have to draw the arrow. Does that sound like a lot of work just to save you one mouse click? Not when you’re applying the forehead mashing method of user experience improvement!

Now to find some time to implement it…

Edit: – I forgot to mention this would also be perfect for the new NetworkManager connection dialog.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s