The aristocratic desktop (part 3) : There's no tray icon in GNOME!
Le mercredi, août 5 2009, 20:17 :: advocacy, gnome, ubuntu, usability, :: Lien permanent
Part 1 : Introduction
Part 2 : Home is Desktop
Part 3 : There's no tray icon in GNOME !
Repeat after me one more time : there's no such thing as a "tray icon" in GNOME. GNOME has a notification area which has nothing to do with the Windows-ish obscenity called "systray", this little space where any application can put a little icon.

I mean, seriously, have you ever think about how completely stupid is the idea of a "tray icon"? Can you imagine how black magic it should be for a new computer user?
The origin of the systray
Windows 95 came with a new concept called "taskbar" when you could have a list of opened windows, a start button and a notification area. Due to an historical misunderstanding, some people started to call the notification area by the name "systray". This was wrong but this misconception might have helped to forget the original goal of the notification area.

As computer performances raised, people had more and more applications opened at the same time. Unfortunately, the taskbar list of opened windows was limited by the width of the screen. In the Unix-like world, the solution was found with virtual desktops. But there were no virtual desktops in Windows.
Developers then found a workaround : abusing the notification area and putting their application there instead of the list of opened windows because notification icons were smaller. It was clearly an abuse but it had many benefits for the developers. One of those was that the user would be less likely to close the application, unaware that it's running. It allows the application to have more control on what the user is doing, to start faster, to continue to do some processing in the background. Remember : we are in a commercial world where each application want to be seen as much as possible by the user, using non-standard skins, splashscreens. We are in a world where we don't want to help the user, we just want to be familiar to the user and to look completely different so it worth the price to spend.

With Windows XP, Microsoft acknowledged the abuse of the notification area and offered a function to "hide" some icons from the notification area. I find that really funny. I mean, imagine that you buy a brand new car and that some mysterious indicators started blinking everywhere on your dashboard. What would you think if the car maker, knowing the problem, offered you a pair of sunglasses with the next model of the car?

Anyway, this "feature" reinforced the idea that it was a "systray", something not well defined but where you could put icons if you wanted them to be smaller than in the tasklist.
The notification area of most Windows system is now fucked beyond any repair. I highly recommend the euthanasia of the whole thing.
I've seen with my own eyes, a fresh OEM installation of Windows XP on a Toshiba laptop starting for the first time with 43 (forty-three!) icon in the "tray"… by default! The notification area was starting before the middle of the screen[1].
Torture your users, basic usability common sense is for sisies
At this point, you might think : "ok but what's wrong with putting icon in the systray?". The answer is in three words : consistency, logic and usability.
You might not realize it because you are using tray icons for years but there's no logic behind the systray. Once a window is open, there's absolutely *no* way of knowing what will be the result of the close button. Will it close the application, stoping its current work or will it just hide itself in the tray?

Even worst : the systray is sometimes called on close, sometimes on minimize. And when it's on close, this is not trivial to really quit the application.
Using the notification area as a systray break the window manager !
So, only because you, application programmer, want your application to behave in your non-standard way, you break the usability of one key component of all your users! Yes, it is that bad : if your application use a tray icon by default, you are breaking completely the usability of your user's desktop. Even if it's only your application. It is proven that when beginner met an exception to the rule, they don't trust the rule anymore, seeing once again the computer as a scary stuff without any kind of logic.

For beginners, it's a nightmare. There's no way to know what an application will do when you press close. There's no intuition. Marie was quick to grasp the taskbar concept but she still doesn't understand that some applications are not in the window list. I pointed her the notification area but she said to me that it was so tiny that she doesn't want to understand it. Jean, on his side, is still fighting with the taskbar concept. He doesn't understand the difference between closing and minimizing[2], I don't believe I will be able to explain him the so-called "systray".
On the other hand, application that behaves normally let the user choose to put them in the taskbar or on another desktop. User is put back in control! Yummy!
How to turn a lot of screen space into a scary pile of useless junk
So much for usability? Wait, there's more. Using the notification area as a tray make it useless. When there's more than 4 or 5 icons, the eyes simply don't catch any new icon anymore. Finding the icon you want is slower which each icon you add. Of course, if your application was the only one to use the notification area as a tray, it would be fine. Unfortunately, it is not the case.

Just one real life example under GNOME:
- you are connected on a wifi : one icon (it can be seen as a notification)
- you are on battery : one icon (it's an important notification)
- you have taskcoach started on another desktop : one icon (or just try gtg)
- you start tomboy from the menu to see a note and don't have it in your panel : one more icon
- you have lot of ram and want OpenOffice to start faster : one f*** completely useless icon
- you listen to music with rhythmbox which is on its own desktop and controlled through music-applet : nevertheless one icon more[3]
- you want to take regular breaks and use workrave with the applet. You still have this cute but useless icon.
- you are connected with Empathy on Jabber. You have no new messages but there is still one icon, redundant with the User Change applet.
This is a basic session that can be handled very well with a few virtual desktops [4]. You can see that there's nothing fancy (it's not far from my own default session) and that I only took icons that cannot be disabled (I disabled tracker for example). It means that, by default, the notification area is already 8 icons wide and only 2 of them are real notifications!

With 8 icons, you already take a lot of space on smaller resolutions like notebooks. It also means that there's very few chances that the user see a 9th notification icon unless it's blinking. And now the war to get user attention start : Ubuntu already abandoned the too crowded notification area to start the update manager automatically. According to user complaints…hem, feedbacks, this is one idea which is so bad that you can put it with the idea of using the notification area as a second taskbar. Bad ideas call bad ideas and, eventually, you end up with something as unusable as Windows XP.
Remember : it's not because you are the developer of an application that you can choose what your users desktops will look like. You have to respect your users and the first thing is, by default, to behave like any other application. Your application is *not* special.
Good applications are applications we don't even notice.
Yeah but it's so easy for cross-desktop development
One argument that I often hear is "systray works also on KDE and XFCE, it's easier than an applet. Applet are old and complicated".
I agree with the statement above but I have two questions :
1) Do you really need that icon? It's not because it's easy to do that you have to do it. It looks like all new application quickly gain a tray icon only because it's cool.
2) Do you really believe that because our underlying implementation sucks, we have to decrease usability, user experience and perceived quality of our desktop?
Do you really believe that user should pay the hard price for our laziness?
Daddy, where were you when they completely killed the notification area?
If we don't do anything, we will end in a few years/months with a default 43 icons wide notification area. Fortunately, there's hope, you can too correct your own application or report bugs against misbehaviour in your favourites applications.
I know that you are so used to this systray behaviour that we cannot just get rid of it. We also have to respect historical power users. So, what should we do?
1) By default, no application should have a permanent place in the notification area. If you still want to have this behaviour, make it a plugin or an option.
2) By default, your application should close on close and minimize on minimize. It makes sense, isn't it? Hiding in the tray cannot be a default behaviour in any circumstances. There's of course nothing wrong to have it as an option as it's then the user choice, not the developer's one.
3) Think twice before having an icon in the notification area. Kill useless icon (like openoffice starter). And rethink twice about adding that icon.
4) The icon should indicate an event or something new in your system. Pidgin and Specto already allow you to have this behaviour. They don't show in your notification area unless there's something you should check. You cannot believe how good it is to see the pidgin icon only when I have a message. I also rarely miss a message, which was not the case previously and, because it's not blinking, I can choose to ignore it for some time if I want to. More freedom and power to the user = win[5].
5) If I have the applet, shouldn't be obvious that I don't want the icon in the notification area?

Not too hard too do, isn't it? So, let's make the desktop more usable, one icon at a time. Yes, I like the smell of burned systray in the morning!
Part 1 : Introduction
Part 2 : Home is Desktop
Part 3 : There's no tray icon in GNOME !
Notes
[1] I should have taken a screenshot, I'm sure you don't believe me
[2] I will talk about that another time
[3] should be solved in the next release, yeah, thanks rhythmbox developers!
[4] Maries seems to like Virtual Desktops a lot, she asked me how to increase the number up to 6
[5] that feature alone is the reason why I can't use Empathy at all

Commentaires
So, how then should we imagine default behaviour of instant messenger? Behaving like file manager? No tray icon, closing on close and minimizing on minimize?
What should an IM stay on window list for?
I guess you like moving clutter instead of getting it away. But don't make other people do so.
Better think of merging "quick launch", taskbar and systray. Because all they are about programs.
Kinda Windows 7 and kinda OSX (but without tray on top panel).
It would be awesome, I think.
Excellent post. Thank you very much for fighting for our notification area! :)
Ah by the way, the idea in GNOME Shell is that this problem won't be possible any more. In the top panel there will only show up authorized system icons (network connection, battery charging, etc). Everything else will be relegated to a notification area, where the icons are hidden by default and only displayed when there's a notification or you return from "away" status, etc.
"Good applications are applications we don't even remark."
That should be "we don't even notice". Otherwise, the English is excellent, I forgot you were a _francophone_ until then.
That's a little off-topic, but when you say that the Empathy notification icon is « redundant with the User Change applet », how is it ?
Do you have a status icon in this applet ? If so, how did you do ?
Flimm > Corrected. Thanks a lot for the compliment, it's always hard for me to write in correct English so I'm really proud :-)
Pointless rant without providing real solutions. There is a need for applications running in the background without cluttering the window list. Playing semantics on words isn't really an argument, neither is showing random images. Just because you can setup a blog doesn't make you an human interface expert. Sorry, nothing personal!
"I guess you like moving clutter instead of getting it away. But don't make other people do so."
He stated clearly that persons should have the individual choice what they want to do on their OWN desktop. Frankly I think it should be built in that ANY app CAN go to the "tray" at the discretion of the user.
As far as IMs, yes I know a lot of folks want it as you do, but there are some of us that prefer to not have a flashing icon on all our desktops. Sometimes I am working and do not want to be distracted with an IM. But I do not even have the OPTION to just move to another desktop, it's going to do what it damn well pleases whether *I* the *USER* want it to or not.
Following the method the OP suggests we ALL get what we want. Following the current method, SOME of you get what you want and the rest of us are stuck using YOUR choice with no choice of our own. That's not really choice, that's only dictated behavior (perhaps dictated by the majority, and that's where choice is REALLY important).
The "system tray" has evolved into what people needed:
1. a way to see the status of long-running apps at a glance
2. a way to control long-running apps.
Long-running apps don't belong on your taskbar - they aren't "tasks".
If you want notifications, see Ubuntu's notification daemon.
Your article is flawed; you're assuming that the original design docs for the "status" area make sense in the real world.
"Pointless rant without providing real solutions. There is a need for applications running in the background without cluttering the window list."
He offered a VERY REAL solution. Always allow running in the notification area, BY USER CHOICE. That's a simple and elegant solution. That is one of the main problems with much FOSS. Too often they don't want you to decide for yourself, despite all the talk about freedom. (Freedom to hire a programmer to make major changes, when they could be included by default, while it is freedom, is less freedom than simply offering the initial choice out of the box.)
TrueTom > the solution is simple and in the article : putting applications on other desktops. It *works*! MacOSX provides another solution with its "dock" (which is also a different logic but still a logic).
Just tell me what's wrong with virtual desktops and docks and why a "systray" would be better. Also, you don't reply to my main arguments "breaking the windows manager model" and "render the notification area useless".
I don't say that there's no need for background applications, I just say that "systray" is not the answer for this need.
Solution: Kill the system tray / notification area entirely. Use the desktop notification specification (the dbus one) for notifications. We don't need a second task bar, as you have pointed out. Heck, we don't need the FIRST task bar; it's a kludge where the user must break context to find a window that has entirely disappeared from view.
GNOME Shell is ready to push in this direction; the overlay can display running applications. All we need is a way for those applications to identify themselves without touching the window manager :)
Joseph James Frantz > exactly. That's why, for example, I have no problem with an application like alltray : people should do what they want (freedom) but applications should, by default, have a consistent behaviour (usability).
It is worth mentionning that emule on windows doesn't use the close or minimize button to reduce to systray but raher offers a fourth one with a small dot which is dedicated to this action.
For Rhythmbox, I just found this little gem in gconf-editor:
/apps/rhythmbox/plugins/status-icon/notification
-mode
=> set it to 2.
/apps/rhythmbox/plugins/status-icon/status-icon-mode
=> set it to 1.
That's a behavior that I think you'll enjoy :)
I'm pretty confident that most GNOME apps have some hidden configuration keys in GConf to do what you suggest. Whether those should be the defaults or not is another question. Maybe one of the hundred papercuts ?
But what about Spotify? It needs to stay open in the background because it's p2p based. Without the icon, then we wouldn't have the great service that is Spotify.
Is it acceptable to break your rule in this situation?
jackflap > You don't understand : this is for notification, not for background.
If you want to put your app in background, just put it on another virtual desktop. That's exactly the goal of them. I don't see why the fact it's P2P would change anything.
Hi,
It is an interesting article. I have never really understood why the systray was so bad and why Gnome is fighting against that concept until now.
I agree with theses explications, but the given solution (virtual desktop) does not seems to be a simplier solution than the systray, because I have installed a Gnome desktop (Ubuntu) to some friends, and they don't use the virtual desktops at all. Even if I have shown us how it works, they simply don't use it. That why I don't think they are user-friendly.
I must say that I never succeed to make a habit of using them too, it seems easier to me to put an application to the systray, it takes just one click. Moving a window to another desktop is harder for me (with the window decoration context menu or the virtual desktop panels). Am I missing something ?
Anyway, I am going to try to change my habits, one more time.
WMaker is perhaps the solution... no systray at all.
Long running application (like pidgin) are in the dock, exactly at the place I choose.
ktulu77 > are your friends advanced or confirmed windows users? If so, it makes a lot of sense for them to not use Virtual Desktop as it's not in their habits. Last but not least, if virtual desktop is explained to them by someone who don't use Virtual desktop himself (you), then there's little chance they understand the need ;-)
For my parts, I've been convinced by totally new users (most of them elderlies). Whem I tried to explain the systray (that I was using heavily at that time), I discovered than I was not able to answer their questions.
I was also considering the virtual desktop as a "geek stuff" but I was astonished to see how easy it was to understand. But the concept was used only after some weeks/months of experience, when the ability to multitask raised.
And yes, you are missing one big stuff in virtual desktop : you can drag n drop windows from one desktop to another. Just take the window in the pager and drop it on the desired desktop.
Strangely enough, I've seen with my own eyes that new users do that intuitively (if they understand the drag-n-drop concept) while advanced users like us never think about that and use complicated functions. It's astonishing to see the gap and the blindness that we, advanced users, can have.
Do you have knowledge of this?
www.notmart.org/index.php...
Ploum > No they are not advanced windows user. By the way, they didn't use to use the systray too. I think you're right, the concept of virtual desktop is easier to understand.
I know I can use drag n' drop windows with the pager, but is not very easy, the pager is small. Perhaps, it is just that I don't have the habit for now ...
There is applications which use the notification area as a systray by default in Ubuntu like Pidgin, Ubuntu One ... I have seen on Pidgin that we can hide the icon if there is no new messages, but when I click on the close button, Pidgin is still running in background.
If this kind of behavior is a bug, why these applications are by default in a lot of distributions, and why these bugs are not resolved ? Ubuntu One is a new project, and has already this problem. It is strange.
It is true that virtual desktop rocks, and Compiz makes it even more awesome, but it is also (sadly) true that most users won't use them whether they are experienced Windows users or not.
I think some apps have a legitimate use of the notification area such as Pidgin which I should access quickly without being on the dedicated virtual desktop. The "show notification icon on new messages" is good but how do i access my contact list then ? Well the "docky" interface to gnome do can open up the contact list if i closed it.
On the other hand, apps like Amarok have no good reason to be there, I'm turning off this option right now ;)
I'm already guilty of building an app (Synology Redirector) that behaves badly by forcing the user to have a 'systray' icon at all time but it was a port of a Windows app (which are really into the systray madness) and I wanted to have a port a close to the original app.
The good thing about your blog post it that I will now reconsider notification icons in my future apps. I'm working on a Steam clone and obviously I was going to put an icon in the notification area just like Steam does. But seriously ... why would I really need that ?
The window manager usability is another issue. I wouldn't want Pidgin to shut down if I (accidentally) close my contact list window. And as i said before, I wouldn't like my contact list to be dedicated to a particular desktop. Some programs are better with a daemon-like behavior. These apps must not shut down when the main window is closed. I think of Pidgin, Transmission, Tracker, Evolution and all these have a notification icon (except Evolution which is taken care of by the Gnome Calendar). I don't think this is a coincidence, it's the most obvious way for an application developer to let the user know about the background app status. Gnome-Do 'docky' can solve these problems by having the MacOSX logic but it's not very commonly used.
So you made a very good point but I don't think we can solve everything by taking away notification icons and implementing a close window = close app behavior everywhere.
merci pour l'article c cool