There is no interface for preventing your notification icon from being hidden


Yes, it's another installment of I bet somebody got a really nice bonus for that feature. A customer had this question for the Windows 7 team:

Our program creates a notification icon, and we found that on Windows 7 it is hidden. It appears properly on all previous versions of Windows. What is the API to make our icon visible?

First of all, I'd like to congratulate you on writing the most awesome program in the history of the universe.

Unfortunately, Windows 7 was not prepared for your awesomeness, because there is no way to prevent your notification icon from being hidden. That's because if there were, then every other program (the ones that aren't as awesome as you) would use it, thereby causing your awesome icon to be lost among all the non-awesome ones.

I'm sorry. You will just have to find some other medium for self-actualization.

Comments (38)
  1. frymaster says:

    @dave: remember the user has the ability to control what's hidden and what isn't.  If you can tell me a practical way to let programs do that themselves that isn't open to abuse or overrides user preferences, I'll give you 2.7 internets.

  2. AC says:

    @Dave:

    "The rule for taskbar notifications is that they are there to, well, notify the user of something. Your print job is done. Your new hardware device is ready to use. A wireless network has come into range. You do not use a notification icon to say "Everything is just like it was a moment ago; nothing has changed." If nothing has changed, then say nothing."

  3. Dan Bugglin says:

    Of course, you could still hide the customer's icon in XP, it would just require some user actions to force it to hide.

    7 was changed to realize that your icon that was changing it's image to the same image was, in fact, not doing anything (only notifications pull out an icon from the extended tray) and so it is still considered idle and eventually auto-hidden.

    Of course, there is an awesome new innovation in taskbar UI that allows you to create a UI element when your program starts that remains around until the program quits.  It's called a taskbar button.

  4. Cheetah says:

    What I "love" about the Windows 7 notification area is that it has decided that sometimes it shouldn't show the notification balloons until several minutes after the program asks windows to show them.  My favorite mode of this is the "O HAI, You b0rked the build" notification from CCNet getting delayed for more than ten minutes at times.

    Just on observing symptoms, it seems like windows thinks it should wait to show them until I'm not typing or moving the mouse.  Which means that half the time it waits to show me important notification balloons until I'm not looking at the PC any more.

    The features for customizing which icons are shown always/never/sometimes in Win7 I like a lot.  This balloon behavior has made those balloons 95% useless, as they invariably either tell me something I care about until it has festered for a while, or wait to tell me something minor and transient until long after it has ceased being relevant.

    [If it's important and timely, then a balloon is the wrong interface. -Raymond]
  5. David Crowell says:

    @Dave:

    The visibility is controlled by the user rather than the application.  That's as it should be.  I hate applications that don't respect my wishes.

    If the application is so awesome that I really need to see the icon, I can configure it to be shown at all times.

  6. Guest says:

    I guess Communicator is really "the most awesome program in the history of the universe", and there can be only one…

  7. theOneJohnnyD says:

    So, I guess when you purchase a computer it is not really yours, and the software on it is not yours. The software maker is in control and if they see fit to allow you to use it you should be greatfull; after all it's their money. Wait, it's my money, and if I want an icon to appear, especially if it worked that way in the past, I should be able to have my icon. Suppose this is the only software that I plan to have on the machine. It seems that it would be inefficient to have the extra step of having to unhide my icon. If there is an exchange of money for a product then the product should be yours. – theOneJohnnyD

  8. Joshua Ganes says:

    From the brief snippet included in this post, the person requesting this information does not seem to be attempting to abuse his power. This person is simply trying to understand how to make the application behave the way it does on previous versions of Windows. Unfortunately, this is no longer possible due to the many who have previously abused this power.

  9. pupu_platter says:

    I uninstall application that shove stuff in your face. My new laptop came with a 30 day free trial of Norton 2011. It shows a dialog box urging you to register the product "because it's the only way to get major new updates, such as Norton 2012" (who cares about this if the license expires in 30 days?). It also shows a "security warning" about how I didn't back up my file using a free trial of Norton's online backup service.

    It was the first one to go, to be replaced with Microsoft's free security suite. Most people I know would do the same thing. Unfortunately, these kinds of "in your face" hard sells work only on the ignorant who don't know how to disable/uninstall such programs anyway…

  10. Josh G. says:

    theOneJohnnyD: "<i>So, I guess when you purchase a computer it is not really yours, and the software on it is not yours. The software maker is in control and if they see fit to allow you to use it you should be greatfull; after all it's their money. Wait, it's my money, and if I want an icon to appear, especially if it worked that way in the past, I should be able to have my icon.</i>"

    Yes, it is your computer, and if you want the icon on Windows 7 then you can have it. Just go into 'Customize' under the notification area overflow, and you can explicitly promote a particular program's icon so it appears just like it did under previous versions of Windows.

    I don't see the problem – this gives the power to the user, where it belongs, and not to random software vendors and OEMs who have shown by their past history that they can't be trusted to use it wisely.

    The <a href="msdn.microsoft.com/…/aa511448.aspx">MSDN article on notification area</a> reiterates much the same thing Raymond said in this blog entry, albeit in slightly more diplomatic terms.

  11. Ian Boyd says:

    Using Cheetah's "the build is broken" example, with the "Is this the right user interface" section on MSDN:

    1. Is the information the immediate, direct result of users' interaction with your application? Answer: No, the user does not have to even be in the application.
    2. Is the information relevant only when users are actively using your application? Answer: No, user does not have to be using the application.

    3. Is the information rapidly changing, continuous, real-time information? Answer: No; it is from continuous integration builds, but it doesn't change rapidly.

    4. Is the information useful and relevant? Are users likely to change their behavior or avoid inconvenience as the result of receiving the information? Answer: Yes, user will start looking into the issue.

    5. Is the information critical? Is immediate action required? Answer: No, neither health, national security, or infrastructure will be harmed if an automated build is broken for a day.

    6. Are the primary target users IT professionals? Answer: Yes, programmers.

    "If so, use an alternative feedback mechanism such as log file entries or e-mail messages. IT professionals strongly prefer log files for non-critical information. Furthermore, servers are often managed remotely and typically run without any users logged on, making notifications ineffective."

    As the IT professional, i would probably prefer an e-mail if the automated build failed.

    Can my Outlook show me a balloon in the notification area if i get this particular e-mail?

  12. Joshua says:

    I've seen plenty good reasons for certain notifications to never hide.

    What we need is "Never hide notifications from <full path to .exe>".

  13. Marquess says:

    “What we need is "Never hide notifications from <full path to .exe>".”

    How is this different from the current way of doing this, that is changing the preference via “Customize notification icons”?

  14. Ian Boyd says:

    @Joshua Problem with a "Never hide notifications from <full path to .exe>" is that programs might add themselves to that list.

  15. Nitpicker says:

    Why is there no notification any more in Windows 7 on loss of network connectivity (like XP) or when a startup program set to run as admin is blocked (like Vista)? Even while printing, double clicking the Printer icon that appears in the tray doesn't open the printer status window any more. Windows 7 is broken by design in many areas.

  16. Joshua says:

    @Ian: No more so than a program adding specific notifications.

    I have a program that I use that displays IP address in the tray icon (that's its sole purpose besides changing color if there is no path out). It really doesn't make sense to add each individual IP address to always show.

  17. Teo says:

    Raymond, if only the Shell team in Windows did what they preached … Because, obviously, they DID create the most awesome program in the world! Example: I started copying couple of gigabytes worth of files on my flash drive (a slow operation) and while waiting, was chatting on Skype with a friend. I was typing my sentence, whene th super-awesome-Explorer decided that it feels lonely and really needs my attention. It popped a window, STOLE the focus out of Skype and began accepting my keyboard input. Of course, I was typing and, inevitably, I pressed space. Which triggered the default button on that dialog, which did … something. I just caught a glimpse of a dialog box that appeared and disappeared. And of course, the keyboard focus was given to the desktop window, because, you know, it's exactly what I wanted. Now question, what did Explorer wanted from me? What did it do? And above all, why did it ignoredmy wishes to use skype? I remember when on Windows 7 blog, the Windows chief said that the big goal for 7 was "the user to feel in control of his computer". If that was the goal indeed, how did this "feature" ever went into the RTM?

    [The behavior you describe is clearly a bug. Sorry. (Perhaps you forget that glass houses are great places to throw stones.) -Raymond]
  18. Teo says:

    And the grand question, why it is ok for explorer (i.e. a Microsoft program) to interrupt my work but it's not ok for ISV programs to do it? What gives it these super-awesome powers?

    [Who said it was okay for Explorer to do it? -Raymond]
  19. Joshua says:

    Well at the time I wrote it my response to GUID would have been "What's that?"

  20. David Walker says:

    I happen to like seeing all icons — for one thing, if there are too many of them, then I uninstall some software.  :-)  

    So, I just go into the customization thing and check the box that says "always show all icons" or whatever it says.  

    The awesome software could recommend to the user that they always show the icon for your awesome program, and describe how to do it, but it's up to them.  

    Maybe some users don't WANT to see the awesome program icon all the time — as Raymond said, the choice is theirs, not the awesome programmer's.  Some users may not need "quick access to exit the program", and some users may NEVER change its settings.  Application developers should get used to that.

  21. Dave says:

    It's comforting to turn every dilemma into a right/wrong boolean, but perhaps we could all acknowledge that there *is* a gray area here? Let's say I write a background app that will be running all the time on the user's computer. I want them to have a convenient way to change its behavior or make it exit. After only a few seconds it is swallowed by the Windows 7 Tray Pyramid of Invisibility and the user becomes frustrated that it has disappeared. Or, worse yet, they believe that I am trying to "hide" it from them in order to do nefarious things. I completely understand the potential for abuse of an API to control this, but please at least acknowledge that the current design has problems instead of acting like every app developer is crazy for even asking.

    [There is already a method for something that requires permanent visibility: A taskbar button. If you don't need permanent visibility, then just have the user launch a "XYZ Program Options" shortcut from the Start button/Quick Launch/whatever. -Raymond]
  22. scottnottheotherscott says:

    @theOneJohnnyD

    When you buy a computer, it is yours! You are free to program whatever operating systems and applications you like for it (within legal bounds). They will behave exactly as you code them (not necessarily as you want ;-) and you can make icons appear whenever and wherever you like.

    However, if you *choose* to buy a pre-built, pre-designed operating system (because option 1 is really hard), the only thing you can expect is that it was designed by… the software maker! If you don't like the maker's design choices… don't buy it!

  23. Jolyon Smith says:

    Old behaviour: No icons were hidden unless the app or the user (via options provided by the app) chose to hide them

    New behaviour: Icons are hidden whether the user has said they want them hidden or not (NOT saying they DON'T want them hidden isn't the same as saying they WANT them hidden).

    The new capabilities are fine ("GREAT", I'd say), but the default position should have been "The way things were" with the USER given the CHOICE to change that using the NEW capabilities.  A lot of emphasis has been put on "User Choice" in this thread, without any acknowledgement of the fact that the user is not given any initial choice in this area, but is then REQUIRED to make a choice in order to restore behaviour they are used to.

    i.e. in that respect, they aren't given a choice:  they HAVE to do work to maintain/restore the status quo.

    Had it been otherwise, an application could expect consistent behaviour on old and new systems without having to provide specific instructions to users who may not even be aware that something has changes and needs them to do something to get the old behaviour on their new system.  If a user then chose to use the new capabilities to hide the icon, they can of course do so.

    Just my +0.02

  24. Wayne Johnston says:

    theOneJohnnyD wrote "So, I guess when you purchase a computer it is not really yours, and the software on it is not yours."

    The computer is your property and is really yours. The software probably isn't though, not even in the sense that you own the physical copy and can dispose of it as you see fit. Copyright law allows you to sell a copy of a book (the physical object) even though you don't own the copyright (the rights to the text). In the US, US Ninth Circuit Court of Appeals has ruled that this right does not apply to software if the publisher puts language into the EULA trumping it. I don't understand the subtleties of the decision or the reasoning. To me it seems that the physical copy should be yours to dispose of as you see fit, while respecting the copyright of the owner. How is software on a CD different from works in a printed book in this respect?

    See http://www.eff.org/…/magic-words-trump-user-rights-ninth-circuit-ruling for a description of the ruling. See http://www.eff.org/…/Vernor_9th_Cir_Opinion.pdf for the decision itself.

    Of course this is only in the United States. I don't know the situation elsewhere, although license agreements are structured the same in many countries. Standard disclaimer: IANAL.

  25. John says:

    I think there is a huge disconnect here.  It's fine and dandy to say what the tray notification area is supposed to be used for, but the reality is that *****EVERYONE***** (and I cannot emphasize that strongly enough) uses the tray notification area to give the user persistent visibility and quick access to the program, and more importantly – users have come to EXPECT this behavior.  Not to single anybody out, but right now I have Outlook, Windows Search, and Office Communicator icons sitting there showing no useful information.  I'm pretty sure the only non-persistent tray icons I've ever come across are the "new hardware wizard" and "safely remove hardware" icons built into Explorer.

  26. Richard says:

    @Joshua

    One thing I quickly found with notification icons that that using a new GUID for every time I ran the application rather quickly filled up my list of icons to configure. If you're using a different GUID for every IP address, you'll have the same problem.

    You need to create one single icon, and then you can set different balloons and tooltips as much as you like. If you want to encode the text in the icon, you still need to give it the same ID when you update the image.

    Compare with task manager – you don't get a different icon in the configuration list for every different amount of CPU usage shown in a tooltip, you just get one. This isn't Evil Microsoft(TM) having special back doors for special programs – this is someone at Microsoft reading the documentation for how notification icons work. I have a little freeware MP3 player with a notification icon, a tooltip that shows the current song, and when I open the 'customize notifications' control panel, the 'current items' list shows the icon and the current tooltip – not a separate entry for every song I've ever played. This list even updates in real-time – every change to the icon's tooltip shows up in that window immediately.

    If the user has to force the icon to be shown for every different IP address you display then *you* have done something wrong in *your* code.

    (Disclaimer: I'm stuck on Windows XP right now, but I've done enough on Windows 7 that I'm reasonably sure it's just as good.)

  27. Marthinus says:

    Developers should start learning how the new "Superbar" works. I am dev, I had to learn, that is the way of IT, new things every other day. Deal with it. Also as a Windows user I like the new way where I have the say what is shown and what isn't.

  28. Teo says:

    Well, if what I described were really a bug,

    1. will you report it internally in such a way that can be fixed?

    2. if not, will you point me where I can report it? Preferably, without opening a $1000 golden "incident report".

  29. j says:

    Teo, a great man once said

    "That's the part that confuses me. "I can't find the right person to report this to, so I'll report it to the wrong person." All that's going to happen is that the person will say, "Sorry, wrong person.""

    This anonymous great man even sent you a link to this exact comment.

  30. Ian Boyd says:

    @Teo i can't offer any assistance on where you would report this suggestion to.

    But i can tell you the commonly named go-to place is Microsoft Connect; i cannot guarantee that there is a section for Windows Explorer.

    And even if there is a section for Windows Explorer, and you report it, it is likely that that issue will be either

    • Closed as "Will not fix – behavior by design", or
    • Closed as "Will not fix – suggestion will be considered for future release"

    And while people may not like it, and some of those people work at Microsoft: someone still has to convince a manager to let them spend time, money, and testing, to change code that isn't fundamentally broken. The reality is that people don't want to muck with working code, especially when changes start with a cost of -100.

  31. Jeff says:

    I don't want to hide icons, I want them to go away completely. I don't want a network icon or the "action center." I also don't want driver icons. I should be able to right click these programs and either "exit" them, or open a menu that makes them go away forever. Not just hide. Cease to clutter my bar, I don't want your little icon! (Although, I do want my drivers to keep running).

  32. Florian K. says:

    @Jeff: The Windows system icons can be entirely removed. I don't have the English wording handy, but in the same dialog where you can hide icons, there's a link where you can completely disable some or all of the system icons and their notifications, including the action center (I guess that's the one that's called Wartungscenter on my system) and network connections.

    Driver icons, on the other hand, are usually from some (typically badly programmed) configuration tool of the driver and are usually totally unnecessary. I didn't have one of these icons in years, because I either remove the tool (or avoid installing it) or just use Windows-supplied drivers anyway, which are fine for most hardware these days, except for gaming-related components.

  33. Florian K. says:

    Somehow I forgot to mention that I was talking about Windows 7 in the previous comment.

  34. Jeff says:

    @Florian

    Hey thanks, that was helpful. Not very intuitive, but hey, at least I got rid of the pesky icons :)

  35. Tergiver says:

    From the "a balloon is the wrong interface link" above: "Unfortunately, there are too many annoying, inappropriate, useless, irrelevant notifications out there."

    That's pretty strong language from an MSDN document. I love it!

  36. @Tergiver: yes, it seems more like an article from this blog than the MSDN documentation we all know. It is much less formal than the usual guidelines, and providing Microsoft's own faults is both funny for the reader and honest from their side.

  37. systray says:

    Systray icons are NEVER justified if the user doesn't want them. They're evil.

    Ofcourse there is a way to show your app's icon, it not documented or supported though, and developers who find out usually dont tell how because then loose their advantage and have to fight with other apps. Same goes for focus stealing and start menu pinning.

  38. James says:

    AC said:

    "The rule for taskbar notifications is that they are there to, well, notify the user of something. Your print job is done. Your new hardware device is ready to use. A wireless network has come into range. You do not use a notification icon to say "Everything is just like it was a moment ago; nothing has changed." If nothing has changed, then say nothing."

    Fine, then I want the old XP (not sure if it was the same in Vista) network status icon back that notified me of network activity i.e. to/fro data transfer. I have to run a 3rd party program now just to get that functionality back. Whose bone-headed decision was it to remove this useful feature? >:O

Comments are closed.