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.
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.