Ubuntu is phasing out the notification area (a.k.a. “system tray”), because of its ineffectiveness at notifying people of things, and its inconsistent behavior. Many programs that previously used the notification area should use other notification mechanisms instead. Some notification area items will be replaced by various system status menus we’re introducing. For a few programs, it will be appropriate to use custom status menus.
Why we’re doing this
This story begins in 1990, when Microsoft released Windows 3.0 without an easy way to see what time it was.
There was a Clock application in Windows, and it could float on top of all other windows, but setting that option wasn’t obvious. And when the Clock was minimized, its icon showed the current time, but usually that icon was covered by the Program Manager window and any other maximized windows.
Microsoft fixed this during the design of Windows 95 by embedding a clock in the new taskbar. They also realized that people wanted a quick way of changing the system volume, so they placed a speaker control next to the clock. Then for people using notebook computers, they added a battery meter and PCMCIA status as well.
Together, these elements were controlled by a program called
systray.exe. But at some point, Microsoft decided to make this mechanism generic, so that any application could use it. And so was born something called the notification area.
Eventually geeks discovered the
systray.exe name and started calling the notification area the “system tray”. Microsoft has been struggling for 15 years now to get people to call it the “notification area” instead, and largely failing.
In the first versions of Gnome, there was no notification area (though, infamously, there were five separate clocks). Building on a “status dock” in Gnome 1.4, Gnome 2.0 introduced the status notification area, again with strict instructions to use it only for notifications — only to find that people kept calling it the “system tray” here too.
I think there are two basic reasons people keep using this name. The first is that the notification area has always been used for things that aren’t notifications. The first two items in the Windows implementation, clock and volume, were never “notifications” in any meaningful sense. And in Gnome there’s a technical distinction between “panel applets” (such as the clock and volume) and the notification area itself, but visually, that distinction barely exists.
The second reason is that the notification area isn’t actually good at delivering notifications. A tiny square icon, taking up less than 0.1 percent of a typical display, can communicate extremely simple, ignorable things — like “you have new messages” or “your battery is charging”. But any information more abstract than that, such as “software updates are available for this computer”, is a non-starter. This became clear when Windows 2000 introduced notification balloons that point at particular icons, explaining what they mean. These balloons have their own problems: in particular, they float on top of every other window regardless of whether you need to pay attention to them right now. (For that reason, we replaced Gnome’s equivalent notification balloons with Notify OSD bubbles that you can click straight through if you want to.)
The situation is made worse by developers who feel the urge to add a notification area icon for their application just because they can. In Ubuntu, many programs — Rhythmbox, Banshee, VLC, Pino, and Pidgin, to name just five — put items in the notification area that aren’t notifications at all.
Often this is a substitute for minimizing the window, to avoid cluttering the taskbar. For example VLC’s notification area has a menu with a “Hide VLC media player in taskbar” item, and the AllTray utility exists for people who want “to have a program always running, but easy to put out of the way”. That may make perfect sense to the developers of those individual applications. But looking at the operating system as a whole, it’s crazy. No competent designer, sitting down to design an operating system from scratch, would say to themselves “I know, let’s have two completely inconsistent ways to hide windows”.
Microsoft, to their credit, have tried to rein in this kind of misuse of the notification area in Windows. But combined with their devotion to backward compatibility, that has caused its own problems. Windows XP hid persistent notification area items by default, and therefore also had a button for revealing them just in case you needed to access them. And in Windows Vista and 7, there is an entire dialog devoted to toggling which notification area icons should be hidden. It’s the OS equivalent of a car dealer including, with every car, a free roll of masking tape so you can cover up unwanted warning lights on the dashboard.
Meanwhile, there’s another problem with the notification area: inconsistent behavior. On Windows, in theory, a left single-click is supposed to “display whatever users most likely want to see”, a right-click is supposed to display a context menu, and a left double-click is supposed to either “Perform the default command on the context menu” or “perform the same action as a left single-click”. In practice, icons have a huge variety of behaviors, with the only common element being a context menu on right-click — to the point where some users have forgotten that they could ever left-click on the icons.
In Gnome, the same kind of hyper-flexibility is baked into the System Tray Protocol: items embedded in the notification area can do pretty much anything they like. So we’ve inherited the same problem as Windows: some items open a menu on left click, some open a menu on right click, some do both, some open a window, and at least one reliably disappears when you click it. It’s hopelessly inconsistent — and as long as we continue with the current protocol, it always will be inconsistent.
We can’t go on like this.
Nuke the entire site from orbit — it’s the only way to be sure
We took our first small step towards getting rid of the notification area in Ubuntu 9.04, when we stopped trying to use it to notify people of software upates, and instead just opened the updates window. Our reasoning was that a tiny icon couldn’t possibly do a good job of conveying something bureaucratic like the availability of new versions of software. (We still have work to do to simplify and streamline the presentation of updates, and we’d be glad to have help with that.)
In Ubuntu 9.10, we introduced the messaging menu, which replaced the various notification area items from messaging applications (Empathy, Evolution, Gwibber, and so on). We also introduced the session menu, which replaced both the user account switching menu (
fast-user-switch-applet) and the big red button that had previously opened the shutdown dialog.
In Ubuntu 10.10, we plan to introduce a power menu, which replaces the Gnome Power Manager applet; a network menu, which replaces the Network Manager applet (
nm-applet); and a clock menu, or time and date menu, that replaces the Gnome clock applet. We’ll also be extending the sound menu, to replace the notification area items for music players. We will be posting more about these and other menus, and asking for feedback on our designs, in the coming weeks.
The pattern here is that everything is becoming a menu. And further, everything is becoming a single set of menus. You can see glimmerings of this in Ubuntu 10.04: for example, if you click on the messaging menu by mistake instead of the sound menu, you can just slide straight over to the sound menu without having to click again. (Currently, this is implemented using two panel applets,
indicator-applet-session. We’ll be consolidating this in future Ubuntu versions.)
Our roadmap is that in Ubuntu 11.04, one year from now, there will be no notification area. And in Ubuntu Netbook Edition, we’ll remove it even earlier, in 10.10. So if you develop an application that uses the notification area, and you want the millions of Ubuntu users to be able to use it, now is the time to change it.
What applications should do instead
Many programs should not have an item in the panel at all. Where a notification area icon was being used mainly as a substitute for minimizing, the window should just minimize instead. We will be working on ways for long-running applications to be less obtrusive when their windows are minimized.
Some applications should integrate into one of the menus that aggregate a particular category of items. An e-mail, instant messaging, feed reading, or similar applications should integrate into the messaging menu. An instant messaging client should respond to status changes in the “me” menu. And a music player should integrate into the sound menu. We’ll provide tutorials and example code for each of these things, as we finalize designs for each menu.
In a few cases, it makes sense for an application to use its own custom status menu. Some applications do this already in Ubuntu 10.04, and we’ll be extending this “application indicator” mechanism in Ubuntu 10.10. The application indicator protocol uses D-Bus, which means that the menu a program publishes looks native whether it’s running in Gnome (appearing in the Gnome panel) or in KDE (in the KDE system tray). Once the API stabilizes in a year or two, we’ll propose it for inclusion in those environments.
We welcome your feedback on these plans, either on this post directly, or on the Ayatana mailing list.
Our colleagues in Canonical’s desktop experience team have worked extremely hard over the past year in implementing these menus and APIs, and we are grateful to them. This is not revolutionary work, but it is important. When we’re done, we will have fixed an annoyance that has existed since years before Ubuntu began.