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