The System Tray Icon
The icon that lives in the Windows System tray
is a small, but vitally important part of a Windows Jabber client.
The system tray icon is the place that your user will check most
regular for new messages or other events, and to make sure they
are online, and what their current status is, even when the main
contact list window is obscured or minimised.
The functions of the Windows system tray are somewhat
limited, but with a little imagination, it can be used as a great
way to pack a lot of information and function into a small space
on the screen. It is worth spending some time on this part
of the client, because it is all the user has to go by when the
main contact list window is minimised or obscured by other windows.
First of all, the icon itself should give the user
some feedback as to his or her online status, and if there are any
events waiting that require attention. Usually the icon is
changed by the program whenever the system status changes or is
changed by the user. It is also helpful if hovering the mouse
pointer over the icon will show the current status and status message
as text in the form of a tool-tip.
To indicate to the user that a message or other event
requires their attention, the icon on the system tray should blink
to attract attention. A bright colour for the flashing icon
For minor events that do not require user interaction
(such as a user coming online), it is helpful to also notify the
user in a non-obtrusive way. It is worth remembering that
anything like this that pops up without the users direct request
has the potential to obscure something that the user is working
on. This may be a good chance to use the semi-transparent
window properties or Balloon Tooltips that were introduced in Win2000/ME.
Left clicking on the icon should bring up a menu that lets the user
change status, in the same way as the main status button on the
contact list window does.
Right clicking on the icon should bring up the same menu that is
called by the main Start-style button on the contact list window.
Double clicking on the icon should action the next queued event
if one exists, or if there is no event waiting, should restore the
contact list window and give it focus.
I would suggest clicking both buttons simultaneously on the system
tray icon could bring up a small history window showing the last
10 or so events.
Note: Because Microsoft have not
provided anyway to request a position of your icon in the System
Tray, and the user has no way of changing the order, icons get added
to the right-hand side near the clock, and then get gradually pushed
further to the left as other icons get added. This means that
if you want your icon to be the rightmost icon in the tray (where
I prefer my IM icon to reside) the best you can do is code a small
time delay into the auto-startup of your client. This will
mean (hopefully) it is the last icon to get added to the tray, and
will stay on the very right. (Although this will not prevent
programs that are started manually by the user adding icons later).
Note: Windows being Windows, means
that sometimes the Explorer Shell task crashes. When this
happens, it will (most of the time) restart on its own, but means
that the icons that were added to the system tray as programs were
started are no longer visible. To solve this problem, with
the release of Internet Explorer 4.0 and later Microsoft introduced
a system message that is broadcast to all running applications when
the Taskbar (re)initialises. Your Jabber client should trap
this message and use the the opportunity to refresh the programs
system tray icon, otherwise it will be lost, causing user frustration.