Re: Monitor attributes on Windows 11/WSL2

martin rudalics <[email protected]> Sat, 1 Aug 2026 14:11:14 +0200
Newsgroups gmane.emacs.devel
Message-ID <[email protected]>
 > The code which uses mm-size in our code base seems to assume without
 > checking that the value is non-zero.  So I wonder how this particular
 > platform violates the assumption that held since time immemoriam.
 > Which code is responsible for asking X to provider these values, and
 > why does it not work in this case?  I tried to answer this question
 > myself, but was surprised to see the relevant variables set only under
 > one particular combination of toolkit and use of XRandr.  I'm probably
 > missing something.

XRandr should not be involved here.  The relevant code is

#if GTK_CHECK_VERSION (3, 22, 0)
       width_mm = gdk_monitor_get_width_mm (monitor);
       height_mm = gdk_monitor_get_height_mm (monitor);
#else
       width_mm = gdk_screen_get_monitor_width_mm (gscreen, i);
       height_mm = gdk_screen_get_monitor_height_mm (gscreen, i);
       if (width_mm < 0)
	width_mm = rec.width * mm_width_per_pixel + 0.5;
       if (height_mm < 0)
	height_mm = rec.height * mm_height_per_pixel + 0.5;
#endif

around line 6991 of xfns.c since the source reported by the OP is Gdk
(source . "Gdk").  But maybe xrandr can do better (unless the user is on
Wayland).

 > We don't officially support WSL, so we could just say that.  But it
 > would be nice to have a better understanding of what APIs fail us in
 > this case.  Can you perhaps point to the relevant code, so Arash could
 > then try working with that user to find out what goes wrong?

Either gdk_monitor_get_width_mm or gdk_screen_get_monitor_width_mm above
seem to return 0.

martin