Version 34 of winico

Updated 2010-05-30 15:23:20 by SES_home

winico is a Tk extension for Windows that manages icons for use in the Windows desktop taskbar and for setting an application icon. Part of this extensions functionality has been merged into the Tk core so for Tk 8.4+ this extension is really only useful for managing the taskbar (see wm iconbitmap). The extension works on both Windows 98/ME and Windows NT/2K/XP varieties of windows. Since version 0.5 Tcl 8.4 is required.

The project is managed at SourceForge as part of the tktable project [L1 ] and pre-compiled binary release and source code can be downloaded from the project site. Bugs can be raised using the sourceforge trackers on this site and documentation is located at http://tktable.sourceforge.net/winico/winico.html

Tom Wilkason describes how to work with an icon in the system tray in a posting to the comp.lang.tcl newsgroup [L2 ].

The package release also contains a demonstration application of a system tray-based application. Another example of an application using winico is the tkchat application found in tclapps.


MG April 1st 2004 - I use this for getting menus in the system tray. Works on Win 98, and (I'm told) Win XP.

 winico taskbar add $winico -callback {winicoCallback %m %x %y} -text $yourAppName
 proc winicoCallback {t {x 0} {y 0}} {
     if { $t == "WM_LBUTTONUP" } {
          wm deiconify .
          raise .
          focus .
        } elseif { $t == "WM_RBUTTONUP" } {
          .winicoPopup post $x $y
          .winicoPopup activate 0
        }
   }

where .winicoPopup is a menu I've already created, and . is the main GUI window of my application. That causes a left-click of the icon to bring the application up to the front, and a right-click to post the menu.

Along with the winico.html documentation referenced immediately above, also be aware of these remarks from KBK and DRH:

"to look 'normal' you need a .ico file with all the sizes. The Windows standards recommend including: 48x48 32bpp, 32x32 32bpp, 16x16 32bpp, 48x48 8bpp, 32x32 8bpp, 16x16 8bpp, (plus same sizes at 4bpp and monochrome). Nowadays, typically only 32bpp and possibly monochrome are relevant because few users use 4- or 8-bit depth color settings.

Windows sometimes reduces the size to 16x16 automatically, but I think you have to give winico a 32x32. The stylized 'Tk' that appears in the upper left is at 16x16. You are also limited to 16 colors, if memory serves."


MG 7 Oct 2007 - Just plugged winico 0.6 into an app (I'd used winico 0.3 before with past apps, I think) and went to test it, and found what seemed to be a bug: whenever I clicked the icon in the system tray when I had a -callback set, the main window (.) was raised and given focus, even though I hadn't told it to be. Had a look in the source to see if I could see the cause for it, and it seems it's deliberate, to work around a Windows bug that occurs when you post a menu from the system tray icon without giving the main window focus first (the menu doesn't disappear if you click another app without first clicking the menu).

Anyone know if it's still totally necessary to do that? I'm using Win XP SP2, and don't see the problem with some other apps (like the latest Windows Live Messenger), so I'm wondering if there's a newer/better/different solution to the problem out there somewhere.


JMN 2007-12-07 Using winico 0.6, I can't seem to get 'winico taskbar add ..' to behave properly on Vista x64. It adds the icon to the systemtray ok at first, but then it just starts displaying one of the other icons in the panel.

Also 'winico setwindow' only seems to affect the window when maximized. The minimized window on the taskbar shows the default red Tk icon. The same code worked ok on win2k.

- 2008-03-06 Using png files, Tk 8.5+ and Img - the desired effect for the window and taskbar can be acheived without winico. This displays correctly both minimized & maximized (tested on vista x64)

 package require Img
 image create photo mylabel -file ./ico16.png
 wm iconphoto . pcm

- Using Winico for the systemtray; it seems it might be important to make sure you're using a 32x32 version.

e.g if your .ico file contains both a 16x16 & 32x32, you may need to set the -pos argument to 1


[ Category Package ]


SES_home - 2010-05-30 11:23:20

SeS/SES_home (30-5-2010):

Thanks to package winico and a smart wrapper around it and on top of this a nice & simple GUI to customize the menu, will lead you to more consistent and fast results. To see what I mean, please have a look at : tG2 v1.05.02