GNU bug report logs - #63384
x-display-mm-width and x-display-mm-height both return 0 on wayland

Previous Next

Package: emacs;

Reported by: tomasralph2000 <at> gmail.com

Date: Tue, 9 May 2023 02:06:02 UTC

Severity: normal

To reply to this bug, email your comments to 63384 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Tue, 09 May 2023 02:06:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to tomasralph2000 <at> gmail.com:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 09 May 2023 02:06:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: tomasralph2000 <at> gmail.com
To: bug-gnu-emacs <at> gnu.org
Subject: x-display-mm-width and x-display-mm-height both return 0 on
 wayland
Date: Tue, 09 May 2023 02:08:29 +0000
[Message part 1 (text/plain, inline)]
The functions "x-display-mm-width" and "x-display-mm-height" both return
0 on Wayland, but on a specific display.

I also have a laptop with the same setup (Arch Linux on Hyprland as
window manager) and a similar emacs version (I compiled both on my
desktop and laptop about ~1 hour from each other, my laptop went
first). This problem is not present on my laptop.

These functions should return the dimensions of my display in
milimiters, as one would assume. This issue is causing numerous features
to fail with an "Arithmetic Overflow Error" since at some point they
divide by this number, and division by 0 is problematic of course.

Most built-in games are broken (like tetris or snake) since they depend
on these functions to compute the size of the game grid.

More importantly, latex previews on org files are also broken, since
they use the value to render the images.

If I switch to X11 (more specifically, qtile) with this same setup, the
functions return proper values, and these features are fixed.

If I launch emacs with the "GDK_BACKEND" environment variable set to
"x11" then emacs launches using xWayland, and once again, the functions
return proper values and the issue is "fixed".

This seems to be an issue with GTK, rather than emacs. I found another
user complaining about this here:
https://discourse.gnome.org/t/gdk-monitor-get-width-mm-failure-wayland/5412

Since there doesn't seem to be much the emacs developers can do about
this, I propose a workaround is set in place.

The functions that return the display size in pixels do work. Maybe
emacs could check if the mm dimensions are being reported as 0, and try
to guess appropiate values. They may be wrong, but it's a better option
than having these features outright fail with non-descriptive errors.

Alternatively, since we now know that these functions can return 0,
maybe it's more appropiate to put a check in place, and fail with a more
descriptive error message.

In the thread I linked, there's a code snippet of the xorg source code
that showcases it doing exactly that. Maybe emacs could do the same.

It is likely that my monitor is the problem here (it's a cheap one). It
may not have these values properly set in its firmware. Probably Xorg
isn't getting proper values either, and it may be relying on that code snippet.

This would also explain why it works on my laptop.
In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.37, cairo version 1.17.8) of 2023-03-21 built on Rainbow
Repository revision: 42fba8f36b19536964d6deb6a34f3fd1c02b43dd
Repository branch: makepkg
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-modules --without-libotf --without-m17n-flt --without-gconf
 --with-native-compilation=yes --with-native-compilation=aot
 --with-xinput2 --with-pgtk --without-xaw3d --with-sound=alsa
 --with-tree-sitter --without-gpm --without-compress-install
 '--program-transform-name=s/([ec]tags)/1.emacs/'
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection'
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM GTK3 ZLIB

Important settings:
 value of $LANG: en_US.UTF-8
 locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
 global-undo-tree-mode: t
 undo-tree-mode: t
 org-roam-db-autosync-mode: t
 marginalia-mode: t
 which-key-mode: t
 global-tree-sitter-mode: t
 recentf-mode: t
 treemacs-filewatch-mode: t
 treemacs-follow-mode: t
 treemacs-git-mode: t
 global-git-commit-mode: t
 magit-auto-revert-mode: t
 shell-dirtrack-mode: t
 override-global-mode: t
 vertico-mouse-mode: t
 vertico-mode: t
 corfu-popupinfo-mode: t
 global-corfu-mode: t
 corfu-mode: t
 pixel-scroll-precision-mode: t
 xterm-mouse-mode: t
 global-auto-revert-mode: t
 electric-pair-mode: t
 delete-selection-mode: t
 global-display-line-numbers-mode: t
 display-line-numbers-mode: t
 tooltip-mode: t
 global-eldoc-mode: t
 eldoc-mode: t
 show-paren-mode: t
 electric-indent-mode: t
 mouse-wheel-mode: t
 file-name-shadow-mode: t
 context-menu-mode: t
 global-font-lock-mode: t
 font-lock-mode: t
 blink-cursor-mode: t
 line-number-mode: t
 transient-mark-mode: t
 auto-composition-mode: t
 auto-encryption-mode: t
 auto-compression-mode: t

Load-path shadows:
/home/tralph3/.local/share/emacs/elpa/transient-20230501.1034/transient hides /usr/share/emacs/30.0.50/lisp/transient

Features:
(shadow sort mail-extr emacsbug mule-util treemacs-bookmarks
treemacs-tags magit-bookmark bookmark time org-tempo tempo eglot
external-completion array ert ewoc debug backtrace jsonrpc xref
flymake-proc flymake project undo-tree queue org-superstar org-roam-ui
org-roam-dailies websocket bindat org-roam-migrate org-roam-log
org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
org-capture org-element org-persist xdg avl-tree generator org-attach
org-id org-refile org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-src ob-comint org-pcomplete org-list org-footnote
org-faces org-entities noutline outline ob-emacs-lisp ob-core ob-eval
org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs
find-func cal-menu calendar cal-loaddefs org-version org-compat org-macs
emacsql-sqlite emacsql-sqlite-common emacsql emacsql-compiler
simple-httpd marginalia which-key tree-sitter-langs
tree-sitter-langs-build tar-mode arc-mode archive-mode pp tree-sitter-hl
tree-sitter tree-sitter-load tree-sitter-cli tsc tsc-dyn tsc-dyn-get
dired-aux tsc-obsolete dashboard dashboard-widgets recentf tree-widget
wid-edit ffap treemacs treemacs-header-line treemacs-compatibility
treemacs-mode treemacs-interface treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator pulse treemacs-faces
treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils
pfuture inline hl-line ht treemacs-logging treemacs-customization
treemacs-macros s orderless magit-submodule magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff smerge-mode diff diff-mode git-commit
log-edit message sendmail yank-media puny dired dired-loaddefs rfc822
mml mml-sec epa derived epg rfc6068 epg-config gnus-util time-date
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util add-log magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor shell pcomplete server
magit-mode transient magit-git magit-base magit-section format-spec
cursor-sensor crm dash edmacro kmacro use-package-bind-key bind-key
easy-mmode vertico-mouse vertico rust-utils thingatpt rust-mode
rust-rustfmt rust-playpen rust-compile compile text-property-search
comint ansi-osc ansi-color rust-cargo kind-icon svg-lib color svg dom
xml corfu-popupinfo corfu compat all-the-icons all-the-icons-faces
data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons use-package-ensure use-package-core
pixel-scroll cua-base ring xt-mouse autorevert filenotify elec-pair
delsel comp comp-cstr warnings icons rx cl-extra help-mode
display-line-numbers magit-autoloads pcase tree-sitter-langs-autoloads
all-the-icons-autoloads corfu-autoloads kind-icon-autoloads
svg-lib-autoloads which-key-autoloads org-superstar-autoloads
git-commit-autoloads with-editor-autoloads vertico-autoloads
treemacs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads
pfuture-autoloads ace-window-autoloads s-autoloads rust-mode-autoloads
lv-autoloads undo-tree-autoloads org-roam-ui-autoloads
websocket-autoloads simple-httpd-autoloads org-roam-autoloads
magit-section-autoloads ht-autoloads dash-autoloads dashboard-autoloads
marginalia-autoloads avy-autoloads queue-autoloads transient-autoloads
compat-autoloads emacsql-autoloads info orderless-autoloads
tree-sitter-autoloads tsc-autoloads realgud-autoloads
realgud-recursive-autoloads test-simple-autoloads loc-changes-autoloads
load-relative-autoloads package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/pgtk-win pgtk-win term/common-win pgtk-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
gtk pgtk lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 397011 511676)
 (symbols 48 30258 126)
 (strings 32 115820 52200)
 (string-bytes 1 4250573)
 (vectors 16 67268)
 (vector-slots 8 1303883 755007)
 (floats 8 814 2552)
 (intervals 56 1037 529)
 (buffers 984 17))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Wed, 10 May 2023 00:40:01 GMT) Full text and rfc822 format available.

Message #8 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: tomasralph2000 <at> gmail.com
Cc: 63384 <at> debbugs.gnu.org
Subject: Re: bug#63384: x-display-mm-width and x-display-mm-height both
 return 0 on wayland
Date: Wed, 10 May 2023 08:39:25 +0800
tomasralph2000 <at> gmail.com writes:

> The functions "x-display-mm-width" and "x-display-mm-height" both return
> 0 on Wayland, but on a specific display.
>
> I also have a laptop with the same setup (Arch Linux on Hyprland as
> window manager) and a similar emacs version (I compiled both on my
> desktop and laptop about ~1 hour from each other, my laptop went
> first). This problem is not present on my laptop.
>
> These functions should return the dimensions of my display in
> milimiters, as one would assume. This issue is causing numerous features
> to fail with an "Arithmetic Overflow Error" since at some point they
> divide by this number, and division by 0 is problematic of course.
>
> Most built-in games are broken (like tetris or snake) since they depend
> on these functions to compute the size of the game grid.
>
> More importantly, latex previews on org files are also broken, since
> they use the value to render the images.
>
> If I switch to X11 (more specifically, qtile) with this same setup, the
> functions return proper values, and these features are fixed.
>
> If I launch emacs with the "GDK_BACKEND" environment variable set to
> "x11" then emacs launches using xWayland, and once again, the functions
> return proper values and the issue is "fixed".
>
> This seems to be an issue with GTK, rather than emacs. I found another
> user complaining about this here:
> https://discourse.gnome.org/t/gdk-monitor-get-width-mm-failure-wayland/5412
>
> Since there doesn't seem to be much the emacs developers can do about
> this, I propose a workaround is set in place.
>
> The functions that return the display size in pixels do work. Maybe
> emacs could check if the mm dimensions are being reported as 0, and try
> to guess appropiate values. They may be wrong, but it's a better option
> than having these features outright fail with non-descriptive errors.
>
> Alternatively, since we now know that these functions can return 0,
> maybe it's more appropiate to put a check in place, and fail with a more
> descriptive error message.
>
> In the thread I linked, there's a code snippet of the xorg source code
> that showcases it doing exactly that. Maybe emacs could do the same.
>
> It is likely that my monitor is the problem here (it's a cheap one). It
> may not have these values properly set in its firmware. Probably Xorg
> isn't getting proper values either, and it may be relying on that code snippet.
>
> This would also explain why it works on my laptop.

I don't want to work around these painfully obvious GTK bugs, because
that just gives their developers an excuse to keep things broken.

Would you please report this to their developers?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Sat, 13 May 2023 22:29:01 GMT) Full text and rfc822 format available.

Message #11 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: tomasralph2000 <at> gmail.com
To: 63384 <at> debbugs.gnu.org
Subject: x-display-mm-width and x-display-mm-height both return 0 on
 wayland
Date: Sat, 13 May 2023 22:32:09 +0000
[Message part 1 (text/plain, inline)]
I searched through their issues and apparently this is expected behavior. According to this (https://gitlab.gnome.org/GNOME/gtk/-/issues/3115) issue, returning 0 if the value can't be determined is a documented output. I couldn't find it in the documentation (https://docs.gtk.org/gdk3/method.Monitor.get_width_mm.html), but it is what it is.

Furthermore, they don't seem to be willing to add checks in place to calculate a proper value.

So, back to emacs. Maybe it should be fixed on this side? I personally made a workaround in the meantime that checks if these functions return 0, and if they do, they override the pgtk function that returns the display info, calculating the proper values for the mm size. It works great. You can find it here (https://github.com/tralph3/.dotfiles/tree/9ab2ab7a2a34827b4912a72c5975edb07d36182f/.config/emacs#display-size-in-milimiters-workaround), in case anyone finds it useful.
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Sun, 14 May 2023 05:01:02 GMT) Full text and rfc822 format available.

Message #14 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: tomasralph2000 <at> gmail.com, Po Lu <luangruo <at> yahoo.com>
Cc: 63384 <at> debbugs.gnu.org
Subject: Re: bug#63384: x-display-mm-width and x-display-mm-height both return
 0 on wayland
Date: Sun, 14 May 2023 07:59:56 +0300
> Date: Sat, 13 May 2023 22:32:09 +0000
> From: tomasralph2000 <at> gmail.com
> 
> So, back to emacs. Maybe it should be fixed on this side? I personally made a workaround in the
> meantime that checks if these functions return 0, and if they do, they override the pgtk function that
> returns the display info, calculating the proper values for the mm size. It works great. You can find it
> here, in case anyone finds it useful.

If we can have a reasonably useful fallback on our side, I think we
should add it.  AFAIU, this problem also exists on the emacs-29
branch?  If so, I think we should add this fallback, if it is
reasonable, to the emacs-29 branch soon.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Sun, 14 May 2023 05:23:01 GMT) Full text and rfc822 format available.

Message #17 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: tomasralph2000 <at> gmail.com, 63384 <at> debbugs.gnu.org
Subject: Re: bug#63384: x-display-mm-width and x-display-mm-height both
 return 0 on wayland
Date: Sun, 14 May 2023 13:22:03 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> Date: Sat, 13 May 2023 22:32:09 +0000
>> From: tomasralph2000 <at> gmail.com
>> 
>> So, back to emacs. Maybe it should be fixed on this side? I
>> personally made a workaround in the meantime that checks if these
>> functions return 0, and if they do, they override the pgtk function
>> that returns the display info, calculating the proper values for the
>> mm size. It works great. You can find it here, in case anyone finds
>> it useful.
>
> If we can have a reasonably useful fallback on our side, I think we
> should add it.  AFAIU, this problem also exists on the emacs-29
> branch?  If so, I think we should add this fallback, if it is
> reasonable, to the emacs-29 branch soon.

Sigh...  The number of excuses GNOME people can come up for their own
failings is astonishing.

Thomas, if you run:

  $ wayland-info

then, somewhere alongside the descriptions of each output, should be
their respective EDID blobs.  Would you please send them here, so that I
can see if some accurate information can be extracted?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Sun, 14 May 2023 18:54:02 GMT) Full text and rfc822 format available.

Message #20 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: tomasralph2000 <at> gmail.com
To: 63384 <at> debbugs.gnu.org
Subject: Re: bug#63384: x-display-mm-width and x-display-mm-height both
Date: Sun, 14 May 2023 18:57:28 +0000
[Message part 1 (text/plain, inline)]
Sigh... The number of excuses GNOME people can come up for their own failings is astonishing. Thomas, if you run: $ wayland-info then, somewhere alongside the descriptions of each output, should be their respective EDID blobs. Would you please send them here, so that I can see if some accurate information can be extracted? 
Sure! Here you go:

interface: 'wl_shm', version: 1, name: 1
 formats (fourcc):
 0x38344241 = 'AB48'
 0x38344258 = 'XB48'
 0x48344241 = 'AB4H'
 0x48344258 = 'XB4H'
 0x30334241 = 'AB30'
 0x30334258 = 'XB30'
 0x36314752 = 'RG16'
 0x35314152 = 'RA15'
 0x35315852 = 'RX15'
 0x32314152 = 'RA12'
 0x32315852 = 'RX12'
 0x34324742 = 'BG24'
 0x34324241 = 'AB24'
 0x34324258 = 'XB24'
 1 = 'XR24'
 0 = 'AR24'
interface: 'wl_drm', version: 2, name: 2
interface: 'zwp_linux_dmabuf_v1', version: 4, name: 3
 main device: 0xE280
 tranche
 target device: 0xE280
 flags: none
 formats (fourcc) and modifiers (names):
 0x48344241 = 'AB4H'; 0x00ffffffffffffff = INVALID
 0x48344241 = 'AB4H'; 0x0000000000000000 = LINEAR
 0x48344258 = 'XB4H'; 0x00ffffffffffffff = INVALID
 0x48344258 = 'XB4H'; 0x0000000000000000 = LINEAR
 0x38344241 = 'AB48'; 0x00ffffffffffffff = INVALID
 0x38344241 = 'AB48'; 0x0000000000000000 = LINEAR
 0x38344258 = 'XB48'; 0x00ffffffffffffff = INVALID
 0x38344258 = 'XB48'; 0x0000000000000000 = LINEAR
 0x30335241 = 'AR30'; 0x00ffffffffffffff = INVALID
 0x30335241 = 'AR30'; 0x0000000000000000 = LINEAR
 0x30335258 = 'XR30'; 0x00ffffffffffffff = INVALID
 0x30335258 = 'XR30'; 0x0000000000000000 = LINEAR
 0x30334241 = 'AB30'; 0x00ffffffffffffff = INVALID
 0x30334241 = 'AB30'; 0x0000000000000000 = LINEAR
 0x30334258 = 'XB30'; 0x00ffffffffffffff = INVALID
 0x30334258 = 'XB30'; 0x0000000000000000 = LINEAR
 0x34325241 = 'AR24'; 0x00ffffffffffffff = INVALID
 0x34325241 = 'AR24'; 0x0000000000000000 = LINEAR
 0x34324241 = 'AB24'; 0x00ffffffffffffff = INVALID
 0x34324241 = 'AB24'; 0x0000000000000000 = LINEAR
 0x34325258 = 'XR24'; 0x00ffffffffffffff = INVALID
 0x34325258 = 'XR24'; 0x0000000000000000 = LINEAR
 0x34324258 = 'XB24'; 0x00ffffffffffffff = INVALID
 0x34324258 = 'XB24'; 0x0000000000000000 = LINEAR
 0x35315241 = 'AR15'; 0x00ffffffffffffff = INVALID
 0x35315241 = 'AR15'; 0x0000000000000000 = LINEAR
 0x36314752 = 'RG16'; 0x00ffffffffffffff = INVALID
 0x36314752 = 'RG16'; 0x0000000000000000 = LINEAR
 0x20203852 = 'R8 '; 0x00ffffffffffffff = INVALID
 0x20203852 = 'R8 '; 0x0000000000000000 = LINEAR
 0x20363152 = 'R16 '; 0x00ffffffffffffff = INVALID
 0x20363152 = 'R16 '; 0x0000000000000000 = LINEAR
 0x38385247 = 'GR88'; 0x00ffffffffffffff = INVALID
 0x38385247 = 'GR88'; 0x0000000000000000 = LINEAR
 0x32335247 = 'GR32'; 0x00ffffffffffffff = INVALID
 0x32335247 = 'GR32'; 0x0000000000000000 = LINEAR
 0x39565559 = 'YUV9'; 0x00ffffffffffffff = INVALID
 0x39565559 = 'YUV9'; 0x0000000000000000 = LINEAR
 0x31315559 = 'YU11'; 0x00ffffffffffffff = INVALID
 0x31315559 = 'YU11'; 0x0000000000000000 = LINEAR
 0x32315559 = 'YU12'; 0x00ffffffffffffff = INVALID
 0x32315559 = 'YU12'; 0x0000000000000000 = LINEAR
 0x36315559 = 'YU16'; 0x00ffffffffffffff = INVALID
 0x36315559 = 'YU16'; 0x0000000000000000 = LINEAR
 0x34325559 = 'YU24'; 0x00ffffffffffffff = INVALID
 0x34325559 = 'YU24'; 0x0000000000000000 = LINEAR
 0x39555659 = 'YVU9'; 0x00ffffffffffffff = INVALID
 0x39555659 = 'YVU9'; 0x0000000000000000 = LINEAR
 0x31315659 = 'YV11'; 0x00ffffffffffffff = INVALID
 0x31315659 = 'YV11'; 0x0000000000000000 = LINEAR
 0x32315659 = 'YV12'; 0x00ffffffffffffff = INVALID
 0x32315659 = 'YV12'; 0x0000000000000000 = LINEAR
 0x36315659 = 'YV16'; 0x00ffffffffffffff = INVALID
 0x36315659 = 'YV16'; 0x0000000000000000 = LINEAR
 0x34325659 = 'YV24'; 0x00ffffffffffffff = INVALID
 0x34325659 = 'YV24'; 0x0000000000000000 = LINEAR
 0x3231564e = 'NV12'; 0x00ffffffffffffff = INVALID
 0x3231564e = 'NV12'; 0x0000000000000000 = LINEAR
 0x30313050 = 'P010'; 0x00ffffffffffffff = INVALID
 0x30313050 = 'P010'; 0x0000000000000000 = LINEAR
 0x32313050 = 'P012'; 0x00ffffffffffffff = INVALID
 0x32313050 = 'P012'; 0x0000000000000000 = LINEAR
 0x36313050 = 'P016'; 0x00ffffffffffffff = INVALID
 0x36313050 = 'P016'; 0x0000000000000000 = LINEAR
 0x30333050 = 'P030'; 0x00ffffffffffffff = INVALID
 0x30333050 = 'P030'; 0x0000000000000000 = LINEAR
 0x3631564e = 'NV16'; 0x00ffffffffffffff = INVALID
 0x3631564e = 'NV16'; 0x0000000000000000 = LINEAR
 0x56555941 = 'AYUV'; 0x00ffffffffffffff = INVALID
 0x56555941 = 'AYUV'; 0x0000000000000000 = LINEAR
 0x56555958 = 'XYUV'; 0x00ffffffffffffff = INVALID
 0x56555958 = 'XYUV'; 0x0000000000000000 = LINEAR
 0x30313459 = 'Y410'; 0x00ffffffffffffff = INVALID
 0x30313459 = 'Y410'; 0x0000000000000000 = LINEAR
 0x32313459 = 'Y412'; 0x00ffffffffffffff = INVALID
 0x32313459 = 'Y412'; 0x0000000000000000 = LINEAR
 0x36313459 = 'Y416'; 0x00ffffffffffffff = INVALID
 0x36313459 = 'Y416'; 0x0000000000000000 = LINEAR
 0x56595559 = 'YUYV'; 0x00ffffffffffffff = INVALID
 0x56595559 = 'YUYV'; 0x0000000000000000 = LINEAR
 0x59565955 = 'UYVY'; 0x00ffffffffffffff = INVALID
 0x59565955 = 'UYVY'; 0x0000000000000000 = LINEAR
 0x30313259 = 'Y210'; 0x00ffffffffffffff = INVALID
 0x30313259 = 'Y210'; 0x0000000000000000 = LINEAR
 0x32313259 = 'Y212'; 0x00ffffffffffffff = INVALID
 0x32313259 = 'Y212'; 0x0000000000000000 = LINEAR
 0x36313259 = 'Y216'; 0x00ffffffffffffff = INVALID
 0x36313259 = 'Y216'; 0x0000000000000000 = LINEAR
interface: 'wl_compositor', version: 6, name: 4
interface: 'wl_subcompositor', version: 1, name: 5
interface: 'wl_data_device_manager', version: 3, name: 6
interface: 'zwlr_export_dmabuf_manager_v1', version: 1, name: 7
interface: 'zwlr_data_control_manager_v1', version: 2, name: 8
interface: 'zwlr_gamma_control_manager_v1', version: 1, name: 9
interface: 'zwp_primary_selection_device_manager_v1', version: 1, name: 10
interface: 'wp_viewporter', version: 1, name: 11
interface: 'zwlr_output_power_manager_v1', version: 1, name: 12
interface: 'xdg_wm_base', version: 5, name: 13
interface: 'wl_seat', version: 8, name: 14
 name: seat0
 capabilities: pointer keyboard
 keyboard repeat rate: 25
 keyboard repeat delay: 600
interface: 'wp_presentation', version: 1, name: 15
 presentation clock id: 1 (CLOCK_MONOTONIC)
interface: 'org_kde_kwin_idle', version: 1, name: 16
interface: 'zwlr_layer_shell_v1', version: 4, name: 17
interface: 'org_kde_kwin_server_decoration_manager', version: 1, name: 18
interface: 'zxdg_decoration_manager_v1', version: 1, name: 19
interface: 'zxdg_output_manager_v1', version: 3, name: 20
 xdg_output_v1
 output: 49
 name: 'HDMI-A-1'
 description: 'TXD HDMI J257M96B00FL (HDMI-A-1)'
 logical_x: 0, logical_y: 0
 logical_width: 1920, logical_height: 1080
interface: 'zwlr_output_manager_v1', version: 4, name: 21
interface: 'zwlr_input_inhibit_manager_v1', version: 1, name: 22
interface: 'zwp_keyboard_shortcuts_inhibit_manager_v1', version: 1, name: 23
interface: 'zext_workspace_manager_v1', version: 1, name: 24
interface: 'zwp_pointer_constraints_v1', version: 1, name: 25
interface: 'zwp_relative_pointer_manager_v1', version: 1, name: 26
interface: 'zwp_virtual_keyboard_manager_v1', version: 1, name: 27
interface: 'zwlr_virtual_pointer_manager_v1', version: 2, name: 28
interface: 'zwlr_foreign_toplevel_manager_v1', version: 3, name: 29
interface: 'wp_drm_lease_device_v1', version: 1, name: 30
interface: 'zwp_tablet_manager_v2', version: 1, name: 31
interface: 'zwp_idle_inhibit_manager_v1', version: 1, name: 32
interface: 'zxdg_exporter_v1', version: 1, name: 33
interface: 'zxdg_importer_v1', version: 1, name: 34
interface: 'zxdg_exporter_v2', version: 1, name: 35
interface: 'zxdg_importer_v2', version: 1, name: 36
interface: 'zwp_pointer_gestures_v1', version: 3, name: 37
interface: 'zwp_text_input_manager_v3', version: 1, name: 38
interface: 'zwp_input_method_manager_v2', version: 1, name: 39
interface: 'xdg_activation_v1', version: 1, name: 40
interface: 'ext_session_lock_manager_v1', version: 1, name: 41
interface: 'wp_single_pixel_buffer_manager_v1', version: 1, name: 42
interface: 'xwayland_shell_v1', version: 1, name: 43
interface: 'hyprland_toplevel_export_manager_v1', version: 2, name: 44
interface: 'wp_fractional_scale_manager_v1', version: 1, name: 45
interface: 'zwp_text_input_manager_v1', version: 1, name: 46
interface: 'hyprland_global_shortcuts_manager_v1', version: 1, name: 47
interface: 'zwlr_screencopy_manager_v1', version: 3, name: 48
interface: 'wl_output', version: 4, name: 49
 name: HDMI-A-1
 description: TXD HDMI J257M96B00FL (HDMI-A-1)
 x: 0, y: 0, scale: 1,
 physical_width: 0 mm, physical_height: 0 mm,
 make: 'TXD', model: 'HDMI',
 subpixel_orientation: unknown, output_transform: normal,
 mode:
 width: 1920 px, height: 1080 px, refresh: 59.718 Hz,
 flags: current
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Mon, 05 Jun 2023 04:57:03 GMT) Full text and rfc822 format available.

Message #23 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: "William A Cadegan-Schlieper" <wacs <at> covering.space>
To: 63384 <at> debbugs.gnu.org
Subject: re: x-display-mm-width and x-display-mm-height both return 0 on
 wayland
Date: Sun, 04 Jun 2023 20:29:24 -0700
I have run into this problem and can confirm that a 0mm×0mm display is reported by Wayland in many cases, including the Weston run by the virtualized server of the WSL system.

interface: 'wl_compositor',                              version:  4, name:  1
interface: 'wl_subcompositor',                           version:  1, name:  2
interface: 'wp_viewporter',                              version:  1, name:  3
interface: 'zxdg_output_manager_v1',                     version:  2, name:  4
        xdg_output_v1
                output: 11
                name: 'rdp-0'
                logical_x: 0, logical_y: 0
                logical_width: 1920, logical_height: 1080
interface: 'wp_presentation',                            version:  1, name:  5
        presentation clock id: 4 (CLOCK_MONOTONIC_RAW)
interface: 'zwp_relative_pointer_manager_v1',            version:  1, name:  6
interface: 'zwp_pointer_constraints_v1',                 version:  1, name:  7
interface: 'zwp_input_timestamps_manager_v1',            version:  1, name:  8
interface: 'wl_data_device_manager',                     version:  3, name:  9
interface: 'wl_shm',                                     version:  1, name: 10
        formats (fourcc):
        0x36314752 = 'RG16'
                 1 = 'XR24'
                 0 = 'AR24'
interface: 'wl_output',                                  version:  3, name: 11
        x: 0, y: 0, scale: 1,
        physical_width: 0 mm, physical_height: 0 mm,
        make: 'weston', model: 'rdp',
        subpixel_orientation: unknown, output_transform: normal,
        mode:
                width: 1920 px, height: 1080 px, refresh: 60.000 Hz,
                flags: current preferred
interface: 'zwp_input_panel_v1',                         version:  1, name: 12
interface: 'zwp_text_input_manager_v1',                  version:  1, name: 13
interface: 'xdg_wm_base',                                version:  1, name: 14
interface: 'zxdg_shell_v6',                              version:  1, name: 15
interface: 'wl_shell',                                   version:  1, name: 16
interface: 'weston_rdprail_shell',                       version:  1, name: 17
interface: 'weston_screenshooter',                       version:  1, name: 18
interface: 'wl_seat',                                    version:  7, name: 19
        name: RDP DESKTOP-QGUMTJ2
        capabilities: pointer keyboard
        keyboard repeat rate: 40
        keyboard repeat delay: 400
interface: 'zwp_input_method_v1',                        version:  1, name: 20




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Mon, 05 Jun 2023 09:13:02 GMT) Full text and rfc822 format available.

Message #26 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: tomasralph2000 <at> gmail.com
Cc: 63384 <at> debbugs.gnu.org
Subject: Re: bug#63384: x-display-mm-width and x-display-mm-height both
Date: Mon, 05 Jun 2023 17:12:19 +0800
tomasralph2000 <at> gmail.com writes:

> Sigh... The number of excuses GNOME people can come up for their own failings is astonishing. Thomas, if you run: $ wayland-info then, somewhere alongside the descriptions of each output, should be their respective EDID blobs. Would you please send them here, so that I can see if some accurate information can be extracted? 
>
> Sure! Here you go:

Hmm, it looks as if my understanding of the Wayland protocol is
incorrect.  Upon further investigation, there seems to be no way to
portably obtain the EDID blob from an output.

What does the X modesetting driver think of your output's geometry?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#63384; Package emacs. (Mon, 05 Jun 2023 09:14:01 GMT) Full text and rfc822 format available.

Message #29 received at 63384 <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: "William A Cadegan-Schlieper" <wacs <at> covering.space>
Cc: 63384 <at> debbugs.gnu.org
Subject: Re: bug#63384: x-display-mm-width and x-display-mm-height both
 return 0 on wayland
Date: Mon, 05 Jun 2023 17:13:33 +0800
"William A Cadegan-Schlieper" <wacs <at> covering.space> writes:

> I have run into this problem and can confirm that a 0mm×0mm display is reported by Wayland in many cases, including the Weston run by the virtualized server of the WSL system.
>
> interface: 'wl_compositor',                              version:  4, name:  1
> interface: 'wl_subcompositor',                           version:  1, name:  2
> interface: 'wp_viewporter',                              version:  1, name:  3
> interface: 'zxdg_output_manager_v1',                     version:  2, name:  4
>         xdg_output_v1
>                 output: 11
>                 name: 'rdp-0'
>                 logical_x: 0, logical_y: 0
>                 logical_width: 1920, logical_height: 1080
> interface: 'wp_presentation',                            version:  1, name:  5
>         presentation clock id: 4 (CLOCK_MONOTONIC_RAW)
> interface: 'zwp_relative_pointer_manager_v1',            version:  1, name:  6
> interface: 'zwp_pointer_constraints_v1',                 version:  1, name:  7
> interface: 'zwp_input_timestamps_manager_v1',            version:  1, name:  8
> interface: 'wl_data_device_manager',                     version:  3, name:  9
> interface: 'wl_shm',                                     version:  1, name: 10
>         formats (fourcc):
>         0x36314752 = 'RG16'
>                  1 = 'XR24'
>                  0 = 'AR24'
> interface: 'wl_output',                                  version:  3, name: 11
>         x: 0, y: 0, scale: 1,
>         physical_width: 0 mm, physical_height: 0 mm,

We don't support WSL in the PGTK build, as the native W32 port works
fine on the systems where it runs.  In this case, it's clearly a problem
with the MS compositor.




This bug report was last modified 324 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.