Comment 0 for bug 1583364

Revision history for this message
tweej (tweej) wrote :

IceWM requires that XDG_DATA_DIRS be set so that libgdk-pixbuf2.0 can find the MIME cache. This is required to load images/pixmaps used for icons by IceWM (window decorations, minimize/maximize/close buttons).

Setting XDG_DATA_DIRS appears to be the job of x11-common (/etc/X11/Xsession.d/60x11-common-xdg_path). x11-common does not set the XDG_DATA_DIRS environment variable to its default (DEFAULT_XDG_DATA_DIRS='/usr/local/share/:/usr/share/') if the DESKTOP_SESSION environment variable is not set by the display manager. XDM does not set the DESTKOP_SESSION environment variable, so IceWM windows and the IceWM taskbar do not display correctly since IceWM is unable to load the required pixmaps/images.

The function which fails is gdk_pixbuf_new_from_file() (called in IceWM's yimage_gdk.cc), and provides an error message like "Couldn't recognize the image file format for file '/usr/share/icewm/themes/icedesert/closeI.xpm'". IceWM "helpfully" converts this error message to something like "IceWM: Warning: Out of memory for image /usr/share/icewm/themes/icedesert/closeI.xpm", which is a separate bug.

Other window managers (GDM, lightdm) do set DESKTOP_SESSION, so IceWM works as expected with these window managers. Since the combination of XDM and IceWM does not work, it looks like XDM should be setting the DESKTOP_SESSION environment variable, at least when configured for use with IceWM.