KevinMehall »

A Better Way to Manage Long-Running Applications

Many applications that need to constantly run in the background with occasional user interaction put icons in the Notification area. (Not systray! Notification area!)

They treat it as a convenient place to "minimize" themselves without cluttering up the taskbar, and for easy access on all virtual desktops. This abuse undermines the intended use of the notification area: for important system status information and notification of events.

Inconsistency also kills the user experience. Sometimes clicking the close button completely closes the program (GTG, Xchat), while sometimes it minimizes the program to the notification icon (Rhythmbox). Sometimes, clicking the notification icon raises the window immediately, but sometimes it only toggles the visibility state, meaning that it must be double-clicked if the window is open but covered. None of these correspond to what the user actually wants to do: What's that minimize button on the window for again?

Managing background applications is a window management problem. It's a failure on the part of the window list (taskbar) that it does not handle these types of applications very well. It's also with the window list that there exists a solution.

Google Chrome has a really nice feature called "Pin Tab." It shrinks a tab down to just its icon and forces it to the left of all normal tabs.

What if the same were applied to window management?

A little libwnck hacking later, and I had it implemented.

I commandeered the "sticky" ("Show on all desktops") state to pin windows, which means that the pinned windows are visible on all desktops, just like notification icons. They take up hardly any window list space, but are easily accessible. They remain right next to other taskbar entries, and are hidden with the minimize button, just like any other program.

Another benefit is that this does not have to be implemented for each program. Users can put any application there just by right-clicking and choosing "Show on all desktops." One feature that may be useful is automatically pinning certain windows when they are started. I currently have a wmctrl script for this purpose.

To try this out on Ubuntu 9.10, just run

sudo add-apt-repository ppa:kevin-mehall/libwnck
sudo apt-get update
sudo apt-get install libwnck22
killall gnome-panel

and start setting windows as visible on all desktops.

Like this post? Share/Save/Bookmark or Subscribe
blog comments powered by Disqus