bbidulock / icewm

A window manager designed for speed, usability, and consistency
Other
596 stars 99 forks source link

icewm vs. gv titles #544

Closed jidanni closed 1 year ago

jidanni commented 3 years ago

I do:

$ gv /tmp/y.pdf

In the bar at the bottom of the screen I see " /tmp/y.pdf" (space at front.)

I would expect to see "gv: /tmp/y.pdf" (like I see when I hit ALT TAB) or at least "/tmp/y.pdf"

(Apparently the space at the front of " /tmp/y.pdf" is some kind of null icon.)

gijsbers commented 3 years ago

Screenshot? Does it matter how many tasks you have on the taskbar? What happens if gv is the only one?

jidanni commented 3 years ago

20210202T084624 20210202T084509 Reducing the number of windows just makes each tab there at the bottom wider. Debian Sid.

gijsbers commented 3 years ago

Maybe the locale you use plays a role? Could you obtain the name and title properties from the gv window? xprop | grep -e NAME -e TITLE -e CLASS + click on the gv window. Or try to use a different locale?

jidanni commented 3 years ago

OK, here's what I did, piped through sort | uniq -c | colrm 61 2 $ xprop | grep -e NAME -e TITLE -e CLASS 2 WM_CLASS(STRING) = "gv", "GV" 2 WM_ICON_NAME(STRING) = "/home/jidanni/taxforms/2020t 1 WM_LOCALE_NAME(STRING) = "C" 1 WM_LOCALE_NAME(STRING) = "zh_TW.UTF-8" 2 WM_NAME(STRING) = "gv: /home/jidanni/taxforms/2020ta 2 _NET_WM_ICON_NAME(UTF8_STRING) = "/home/jidanni/taxf 2 _NET_WM_NAME(UTF8_STRING) = "gv: /home/jidanni/taxfo 2 _NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = "/home/jida 2 _NET_WM_VISIBLE_NAME(UTF8_STRING) = "gv: /home/jidan

Actually it is becoming very clear to me that the problem is the icon is being displayed, but just as a transparent block.

$ for i in emacs xterm gv; do echo -n $i:; dlocate $i|grep -c icon.xpm; done emacs:26 xterm:4 gv:1 $ dlocate gv|grep icon.xpm gv: /usr/share/pixmaps/gv_icon.xpm Hmmm, icewm-preferences man page says: IconPath="/usr/local/share/icons:/usr/local/share/pixmaps:/usr/share/icons:/usr/share/pixmaps" $ identify /usr/share/pixmaps/gv_icon.xpm /usr/share/pixmaps/gv_icon.xpm XPM 50x50 50x50+0+0 8-bit sRGB 2866B 0.000u 0:00.000 $ xli /usr/share/pixmaps/gv_icon.xpm shows a ghost floating on a black backround Maybe icewm is having a problem because the icon is 50x50 and not 48x48? $ convert /usr/share/pixmaps/gv_icon.xpm -scale 48x48 /tmp/gv_icon.xpm $ identify /tmp/gv_icon.xpm /tmp/gv_icon.xpm XPM 48x48 48x48+0+0 8-bit sRGB 3871B 0.000u 0:00.000

mv /usr/share/pixmaps/gv_icon.xpm /usr/share/pixmaps/gv_icon.xpm.ORIG

mv /tmp/gv_icon.xpm /usr/share/pixmaps/gv_icon.xpm

Doesn't fix the problem.

mv /usr/share/pixmaps/gv_icon.xpm.ORIG /usr/share/pixmaps/gv_icon.xpm

convert /usr/share/pixmaps/gv_icon.xpm -scale 32x32 /usr/share/pixmaps/gv_32x32.xpm

convert /usr/share/pixmaps/gv_icon.xpm -scale 32x32 /usr/share/icewm/icons/gv_32x32.xpm

Still no help. Maybe icewm is looking for a ghostscrpit alias icon, but it is not installed.

$BROWSER /usr/share/pixmaps/pcmanx.svg looks great. As does running pcmanx in icewm. $ xli -zoom 333 /usr/share/pixmaps/display-im6.q16.xpm looks odd, a hoop in the corner.

Anyway there is some problem with the gv icon vs. icewm!

gijsbers commented 3 years ago

You can set Trace=icon in preferences and restart, which should log the paths of loaded icons. If you believe some icons are fine, then you could swap them with the gv icon and restart. The problems should then occur with the other application and gv should now be fine. If the gv icon really is proven the culprit then you can post it here for us to be able to reproduce.

jidanni commented 3 years ago

OK, in ~/.xsession-errors I now see

01:16:53.951: IceWM: icon open: /usr/share/icewm/icons/icewm_16x16.png
01:17:19.349: IceWM: icon open: /usr/share/icewm/icons/emacs_32x32.xpm

But I don't see anything for chrome or gv, despite opening and closing them several times.

So chrome's icon gets into icewm by other means, and gv's icon doesn't get into icewm by any means. But none of those two are logged.

gijsbers commented 3 years ago

The way that icewm obtains the icon from gv is by the WM_HINTS property on the gv window. You can see for yourself that gv advertises a pixmap ID of its icon by running xprop on gv. It will look something like this:

WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
        bitmap id # to use for icon: 0xc00001

In this case it is 0xc00001.

This should also be shown as a desktop icon if you have MinimizeToDesktop=1 and minimize gv or chrome.

Again, to understand how chrome communicates its icon to icewm run xprop on chrome. Look for:

_NET_WM_ICON(CARDINAL) =    Icon (128 x 128):

or so. Minimize to desktop to see what it looks like.

But you can still swap the gv icon with some other app's icon and observe where the problems go or not.

jidanni commented 3 years ago

Well that is all great to know. Especially for the more technically inclined. However all I know is that

# apt-cache policy gv icewm
gv:
  Installed: 1:3.7.4-2+b1
  Candidate: 1:3.7.4-2+b1
  Version table:
 *** 1:3.7.4-2+b1 990
        990 http://opensource.nchc.org.tw/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status
icewm:
  Installed: 2.1.1-1
  Candidate: 2.1.1-1
  Version table:
 *** 2.1.1-1 990
        990 http://opensource.nchc.org.tw/debian unstable/main amd64 Packages
        100 /var/lib/dpkg/status

are not interacting properly.

gijsbers commented 3 years ago

So I have this for gv:

$ apt-cache policy gv 
gv:
  Installed: 1:3.7.4-2+b1
  Candidate: 1:3.7.4-2+b1
  Version table:
 *** 1:3.7.4-2+b1 500
        500 http://deb.debian.org/debian bullseye/main amd64 Packages
        100 /var/lib/dpkg/status

On the taskbar it looks like this: gvd

You see that the icon is shown correctly.

gijsbers commented 3 years ago

It looks like this is a bug in Imlib2. Check your version of libimlib2-dev. 1.4.7 is most disfunctional, 1.6.1 shows the icon on the taskbar, 1.7.1 also shows it on the desktop.

jidanni commented 3 years ago

Running any commands you send me to probe my system is easy for me. But doing much thinking beyond that isn't. So I'm glad to hear the problem has been narrowed to libimlib2-dev. Maybe you just meant libimlib2.

# aptitude install libimlib2-dev
0 packages upgraded, 22 newly installed, 0 to remove and 0 not upgraded.
^C

# apt-cache policy libimlib2
libimlib2:
  Installed: 1.7.1-2

And that version has been installed for two weeks.

gijsbers commented 3 years ago

For the moment it is then unclear where the bug originates: icewm, imlib2 or the X11 server. The case is that gv uses a 1-bit deep bitmap for its icon, which is unusual and outdated. Hence it doesn't receive as much testing in any recently released software.

I also observed that it may help to set Alpha=1 in preferences and restart icewm. Does that help you?

We should try to compile using gdk-pixbuf-xlib, instead of imlib2, to see if that makes a difference.

jidanni commented 3 years ago

I also observed that it may help to set Alpha=1 in preferences and restart icewm.

Bingo! Perfect! Now I see the same as the image you posted.