Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
#include * Evgeny M. Zubok [Tue, Oct 27 2009, 07:51:03PM]: > Eduard Bloch writes: > > > inkscape: only one 64x64 icon included. Icewm requires an icon set > > having images of sizes 16x16 and 32x32. Rescaling is not supported > > yet, as far as I can see. > > Rescaling is supported. To verify this I have added 64 to the list of > acceptable icon sizes in wmframe.cc (sizes[] in function updateIcon), > changed number of iterations in loops from 3 to 4 and got the desirable > result. > > Also I have discovered IceWM option HugeIconSize (which has default > value 48). Changing it to 64 in ~/.icewm/preferences also resulted in > visible inkscape icon. Unfortunately, the applications which have 48x48 > icon (for example, gqview in my application set) will not show the icons > in this case. There are only three options: SmallIconSize, LargeIconSize > and HugeIconSize. Do we need the new option (say, GiantIconSize) with > default value 64 or another solution? Hm, ok. Personally I feel that the time has come to fork icewm since there is not much activity from upstream author anymore. But it's rude after all and I would like to avoid it. Let's ping Marco and ask for his opinion (Cc'ed). Further, I suggest to set a timeout of few weeks before doing this radical steps. Regards, Eduard. -- ich habe unter Debian die falsche Grafikkarte installiert, wie kann ich das ändern? janw: rechner aufschrauben, karte raus, die richtige karte rein, zuschrauben, booten, fertig. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
tags 552292 + patch thanks I have written the patch to rescale the icons other way. The old behaviour was to search through NET_WM_ICON set for icons with sizes that matched SmallIconSize, LargeIconSize, HugeIconSize (either their defaults - 16, 32, 48 - or user defined values). The missing icons were being created by scaling already found larger icons. But if no icons had been found at the first step (inkscape 64x64 icon didn't match 16, 32 or 48) then the taskbar icon wasn't being created. The patch I suggest has a new approach. First we look up the NET_WM_ICON set for icons that match the SmallIconSize, LargeIconSize, HugeIconSize. Also we search the largest icon from provided NET_WM_ICON set. Then we create the image from largest icon and scale it to fill the missing icons. Inkscape icon now appears. What do you think? --- a/src/wmframe.cc 2009-10-28 17:09:16.0 +0300 +++ b/src/wmframe.cc 2009-10-28 17:11:27.0 +0300 @@ -2397,28 +2397,43 @@ ref oldFrameIcon = fFrameIcon; if (client()->getNetWMIcon(&count, &elem)) { -ref icons[4]; -int sizes[] = { YIcon::smallSize(), YIcon::largeSize(), YIcon::hugeSize() }; - -// find icons that match Small-/Large-/HugeIconSize, icons[3] is -// fallback if none matches -for (long *e = elem; e - count < elem; e += 2 + e[0] * e[1]) { -int i = 0; -for (; i < 3; i++) -if (e[0] == sizes[i] && e[0] == e[1]) -break; -if (icons[i] == null) -icons[i] = YImage::createFromIconProperty(e + 2, e[0], e[1]); -} - -// use the next larger existing icon to scale those that were missing -for (int i = 0; i < 3; i++) -if (icons[i] == null) -for (int j = i + 1; j < 4; j++) -if (icons[j] != null) { -icons[i] = icons[j]->scale(sizes[i], sizes[i]); -break; -} +ref icons[3], largestIcon; +int sizes[] = { YIcon::smallSize(), YIcon::largeSize(), YIcon::hugeSize()}; + long *largestIconOffset = elem; + int largestIconSize = 0; + +// Find icons that match Small-/Large-/HugeIconSize and search +// for the largest icon from NET_WM_ICON set. +for (long *e = elem; e - count < elem && e[0] > 0 && e[1] > 0; + e += 2 + e[0] * e[1]) { + + if (e[0] > largestIconSize && e[0] == e[1]) { + largestIconOffset = e; + largestIconSize = e[0]; + } + +for (int i = 0; i < 3; i++) { +if (e[0] == sizes[i] && e[0] == e[1] && + icons[i] == null && e + 2 + e[0] * e[1] <= e + count) { + icons[i] = YImage::createFromIconProperty(e + 2, e[0], e[1]); + break; + } + } + } + + // create the largest icon + if (largestIconSize > 0) + largestIcon = + YImage::createFromIconProperty(largestIconOffset + 2, + largestIconSize, + largestIconSize); + + // create the missing icons by rescaling the largest icon + if (largestIcon != null) + for (int i = 0; i < 3; i++) + if (icons[i] == null) + icons[i] = largestIcon->scale(sizes[i], sizes[i]); fFrameIcon.init(new YIcon(icons[0], icons[1], icons[2])); XFree(elem);
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
Eduard Bloch writes: > inkscape: only one 64x64 icon included. Icewm requires an icon set > having images of sizes 16x16 and 32x32. Rescaling is not supported > yet, as far as I can see. Rescaling is supported. To verify this I have added 64 to the list of acceptable icon sizes in wmframe.cc (sizes[] in function updateIcon), changed number of iterations in loops from 3 to 4 and got the desirable result. Also I have discovered IceWM option HugeIconSize (which has default value 48). Changing it to 64 in ~/.icewm/preferences also resulted in visible inkscape icon. Unfortunately, the applications which have 48x48 icon (for example, gqview in my application set) will not show the icons in this case. There are only three options: SmallIconSize, LargeIconSize and HugeIconSize. Do we need the new option (say, GiantIconSize) with default value 64 or another solution? -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
#include * Evgeny M. Zubok [Mon, Oct 26 2009, 11:44:07PM]: > I think that icewm doesn't properly recognize 64x64 icons and possibly > other sizes. Only the following sizes (from themable.h) is defined in > the source and specially verified within updateIcon (wmframe.cc): > > XIV(int, menuIconSize, 16) > XIV(int, smallIconSize, 16) > XIV(int, largeIconSize, 32) > XIV(int, hugeIconSize, 48) Yes?! It would need to downscale at run time, that's why I retitled this bug report already. See <20091026192812.ga10...@rotes76.wohnheim.uni-kl.de>. Regards, Eduard. -- Naja, Garbage Collector eben. Holt den Müll sogar vom Himmel. (Heise Trollforum über Java in der Flugzeugsteuerung) -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
"Evgeny M. Zubok" writes: > I'm reopening this bug. The last patch mainly solved the problem > (thank you) but not completely. The applications remain (for example > `inkscape' and `qtconfig-qt3') that supply icons, but the icons don't > appear in the taskbar and are replaced by default icon as in the > previous case. I think that icewm doesn't properly recognize 64x64 icons and possibly other sizes. Only the following sizes (from themable.h) is defined in the source and specially verified within updateIcon (wmframe.cc): XIV(int, menuIconSize, 16) XIV(int, smallIconSize, 16) XIV(int, largeIconSize, 32) XIV(int, hugeIconSize, 48) -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
severity 552292 wishlist retitle 552292 Downscaling of netwm icons thanks #include * Evgeny M. Zubok [Mon, Oct 26 2009, 06:54:45PM]: > reopen 552292 > thanks > > I'm reopening this bug. The last patch mainly solved the problem (thank > you) but not completely. The applications remain (for example `inkscape' > and `qtconfig-qt3') that supply icons, but the icons don't appear in the > taskbar and are replaced by default icon as in the previous case. > `inkscape' provides the icon (64x64) with NET_WM_ICON property, and qtconfig-qt3: no icon data at all (just look at the output that you included) inkscape: only one 64x64 icon included. Icewm requires an icon set having images of sizes 16x16 and 32x32. Rescaling is not supported yet, as far as I can see. Regards, Eduard. -- Wer hat eigentlich diesen dämlichen Spruch erfunden von wegen "Es gibt keine dummen Fragen, nur dumme Antworten"? andreasj: willst du ihm ne einladung schicken? hank: Ich würde ihn lieber besuchen, mit nem Baseballschläger andreasj: setz ihn lieber 24h in #debian...@qnet. duerfte ihm auch nen klaren kopf bescheren... -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
reopen 552292 thanks I'm reopening this bug. The last patch mainly solved the problem (thank you) but not completely. The applications remain (for example `inkscape' and `qtconfig-qt3') that supply icons, but the icons don't appear in the taskbar and are replaced by default icon as in the previous case. `inkscape' provides the icon (64x64) with NET_WM_ICON property, and `qtconfig-qt3' uses legacy method. xprop output for these application below: qtconfig-qt3 _ICEWM_TRAY(CARDINAL) = 0 _WIN_LAYER(CARDINAL) = 4 _NET_WM_DESKTOP(CARDINAL) = 1 _WIN_WORKSPACE(CARDINAL) = 1 WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _NET_WM_STATE(ATOM) = _WIN_STATE(CARDINAL) = 0, 63 WM_COMMAND(STRING) = { "qtconfig-qt3" } _NET_WM_NAME(UTF8_STRING) = 0x51, 0x74, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67 , 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e XdndAware(ATOM) = ATOM _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0 _QT_SIZEGRIP(WINDOW): window id # 0x10e WM_CLIENT_LEADER(WINDOW): window id # 0x102 WM_WINDOW_ROLE(STRING) = "main window" _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 16777219 _NET_WM_PID(CARDINAL) = 13478 _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _N ET_WM_SYNC_REQUEST WM_NAME(STRING) = "Qt Configuration" WM_LOCALE_NAME(STRING) = "ru_RU.UTF-8" WM_CLASS(STRING) = "qtconfig-qt3", "Qtconfig-qt3" WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. bitmap id # to use for icon: 0x13c bitmap id # of mask for icon: 0x13a window id # of group leader: 0x102 WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified size: 700 by 600 program specified size: 700 by 600 program specified minimum size: 670 by 515 window gravity: NorthWest WM_CLIENT_MACHINE(STRING) = "localhost" inkscape 0.46 (Lenny) = _ICEWM_TRAY(CARDINAL) = 0 _WIN_LAYER(CARDINAL) = 4 _NET_WM_DESKTOP(CARDINAL) = 1 _WIN_WORKSPACE(CARDINAL) = 1 WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _NET_WM_STATE(ATOM) = _WIN_STATE(CARDINAL) = 0, 63 WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. bitmap id # to use for icon: 0x12c bitmap id # of mask for icon: 0x133 window id # of group leader: 0x101 XdndAware(ATOM) = BITMAP _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0 _NET_WM_ICON(CARDINAL) = 64, 64, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, === long sequence of numbers skipped by me (this is icon 64 x 64) === 16777215, 16777215, 16777216, 33554432, 50331648, 67108864, 67108864, 67108864, 50331648, 33554432, 16777216, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215, 16777215 _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 16777231 _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL _NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x10e WM_CLIENT_LEADER(WINDOW): window id # 0x101 _NET_WM_PID(CARDINAL) = 13496 WM_LOCALE_NAME(STRING) = "ru_RU.UTF-8" WM_CLIENT_MACHINE(STRING) = "localhost" WM_NORMAL_HINTS(WM_SIZE_HINTS): program specified minimum size: 550 by 652 window gravity: NorthWest WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST WM_CLASS(STRING) = "inkscape", "Inkscape" WM_ICON_NAME(COMPOUND_TEXT) = "Новый документ 1 — Inkscape" _NET_WM_ICON_NAME(UTF8_STRING) = 0xd0, 0x9d, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x8b, 0xd0, 0xb9, 0x20, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0, 0xba, 0xd1, 0x83, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x82, 0x20, 0x31, 0x20, 0xe2, 0x80, 0x94, 0x20, 0x49, 0x6e, 0x6b, 0x73, 0x63, 0x61, 0x70, 0x65 WM_NAME(COMPOUND_TEXT) = "Новый документ 1 — Inkscape" _NET_WM_NAME(UTF8_STRING) = 0xd0, 0x9d, 0xd0, 0xbe, 0xd0, 0xb2, 0xd1, 0x8b, 0xd0, 0xb9, 0x20, 0xd0, 0xb4, 0xd0, 0xbe, 0xd0, 0xba, 0xd1, 0x83, 0xd0, 0xbc, 0xd0, 0xb5, 0xd0, 0xbd, 0xd1, 0x82, 0x20, 0x31, 0x20, 0xe2, 0x80, 0x94, 0x20, 0x49, 0x6e, 0x6b, 0x73, 0x63, 0x61, 0x70, 0x65 -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
Eduard Bloch writes: > Where? > > In the taskbar and window lists? Sure, that applications don't > provide one via wm propties (just watch xprop output, compared to... > e.g. iceweasel). > I mean taskbar and also window's header. For example, icewm 1.2.28 from Lenny shows xpdf (or emacs) application icon, and icewm 1.2.37 doesn't. The latter was backported to Lenny from Sid. xprop output for xpdf and emacs window shows that bitmap id for application is provided, but _NET_WM_ICON is absent. I suppose that icewm ignores information from WM_HINTS, and only _NET_WM_ICON is taken into account. xpdf: $ xprop _ICEWM_TRAY(CARDINAL) = 0 _WIN_LAYER(CARDINAL) = 4 _NET_WM_DESKTOP(CARDINAL) = 0 _WIN_WORKSPACE(CARDINAL) = 0 WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ _WIN_STATE(CARDINAL) = 12, 63 _MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x0, 0x, 0x, 0x, 0x0 WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW WM_LOCALE_NAME(STRING) = "C" WM_CLASS(STRING) = "win", "Xpdf" WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. bitmap id # to use for icon: 0x16000c7 WM_NORMAL_HINTS(WM_SIZE_HINTS): program specified location: 0, 0 program specified size: 650 by 551 program specified minimum size: 100 by 100 program specified base size: 0 by 0 window gravity: NorthWest WM_CLIENT_MACHINE(STRING) = "localhost" WM_ICON_NAME(STRING) = "Xpdf" WM_NAME(STRING) = "Xpdf" emacs: $ xprop _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 XdndAware(ATOM) = BITMAP _ICEWM_TRAY(CARDINAL) = 0 _WIN_LAYER(CARDINAL) = 4 _NET_WM_DESKTOP(CARDINAL) = 0 _WIN_WORKSPACE(CARDINAL) = 0 WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _NET_WM_STATE(ATOM) = _WIN_STATE(CARDINAL) = 0, 63 WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, WM_SAVE_YOURSELF WM_CLIENT_LEADER(WINDOW): window id # 0x17a WM_LOCALE_NAME(STRING) = "ru_RU.UTF-8" WM_CLASS(STRING) = "emacs", "Emacs" WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. bitmap id # to use for icon: 0x184 bitmap id # of mask for icon: 0x186 WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified location: 0, 0 user specified size: 656 by 544 program specified minimum size: 16 by 0 program specified resize increment: 8 by 16 window gravity: NorthWest WM_CLIENT_MACHINE(STRING) = "localhost" WM_ICON_NAME(STRING) = "em...@localhost" WM_NAME(STRING) = "em...@localhost" -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
#include * Evgeny M. Zubok [Sun, Oct 25 2009, 11:31:15AM]: > Package: icewm > Version: 1.2.37+1.3.4pre2-6 > Severity: normal > > Icewm doesn't show the icons of some applications (for example, xpdf, > aumix, scribus, emacs, etc.) and replaces them by default "app" icon > from /usr/share/icewm/icons (this is red "X logo" sign). Where? In the taskbar and window lists? Sure, that applications don't provide one via wm propties (just watch xprop output, compared to... e.g. iceweasel). In the menu? Not reproducible, there is one. However, icewm does not use the menu icon as window icon because those need to have a well defined format (xpm, include size infos in the filename, etc.). Maybe there should be an extra feature to try to use the icon known from the menu as fallback icon for the window, but I think it wouldn't be that easy to implement. Regards, Eduard. -- Für einen Politiker ist es gefährlich, die Wahrheit zu sagen. Die Leute könnten sich daran gewöhnen, die Wahrheit hören zu wollen. -- George Bernard Shaw -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#552292: icewm: IceWM replaces the icons of some applications by default "app" icon
Package: icewm Version: 1.2.37+1.3.4pre2-6 Severity: normal Icewm doesn't show the icons of some applications (for example, xpdf, aumix, scribus, emacs, etc.) and replaces them by default "app" icon from /usr/share/icewm/icons (this is red "X logo" sign). -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org