On Thu Apr 3 08:54:07 2025 +0000, Rémi Bernon wrote:
I don't understand what difference it makes, or even how this is better? When the window is mapped, window managers should check whether it has the property set already, (and whether it is fullscreen) and apply the proper changes.
I didn't check the Mutter logs. I am gussing this is what happens regarding a window that covers two monitors.
On Mutter, the _NET_WM_FULLSCREEN_MONITORS property is not checked when a window is mapped. For example, meta_x11_display_init_window_prop_hooks() doesn't load the _NET_WM_FULLSCREEN_MONITORS property. So in meta_window_x11_set_net_wm_state(), window->fullscreen is TRUE, but meta_window_has_fullscreen_monitors(window) is FALSE because window->fullscreen_monitors is not initialized. So _NET_WM_FULLSCREEN_MONITORS then gets deleted at the end of meta_window_x11_set_net_wm_state(). With window->fullscreen being TRUE, the window becomes fullscreen only on one monitor, and then a ConfigureNotify is sent. Then Wine synchronizes the window size with that of the X11 window, which only covers one monitor.
Now that you mentioned it. It's probably Mutter's bug. I will see if I can get it fixed on the Mutter side.