GNOME and Mutter 45 (and 44) is a downgrade to GNOME 43

I’m still running Fedora 37 with GNOME and Mutter 43 (LTS Kernel) because the newer versions I tried on Fedora 38 and 39 were simply not as good. Note that I have a Nvidia GPU (gtx 1060) and use X11.

In terms of performance, one app in particular - GNOME Extensions Manager (flatpak), when opened, causes mircro-stutter when dragging windows (for all other windows), as well as window resize lag. Note that this is not the only app with similar problems, but the easiest one for me to remember and probably most severe. Consequently, all such problems are caused BY GTK4 / Libadwaita apps.
In GNOME 43 with Mutter 43, all I have to do is enable “Force full composition pipeline” in NVIDIA settings and all weird things like that are fixed. In fact, GNOME 43 with Mutter 43 reached the absolute pinnacle of performance on X11 for me (I think it was version 43.3 or 43.4 that made everything so good). Prior versions also had similar lags like above.
In GNOME 44 and 45 I experimented with various NVIDIA settings configs, and all of them always result in one thing being fixed over the other. For example if setting A is on and B is off, resize lag disappears, but dragging across the screen lag is still there. If B is on and A is off, the opposite. If they’re both on or off, nothing changes etc.

The other issue I have with GNOME 44+ (introduced in GNOME 44 and still present) is applications not remembering their maximization state / window size properly. It was really bad in GNOME 44. Thunar - my file manager of choice and basically all non GTK4 apps (and I use a lot of them) would always start in their default in windowed state every time when the application was restarted. GNOME 45 appears to have fixed this to some extent, but not fully. Right off the top of my head VSCodium wasn’t fixed at all and the rest were partially fixed, where the window size / maximization state was only remembered on per-session basis. In other words, if you sign out or reboot, it would once again start those apps in their default windowed size. And of course, this effects both X11 and Wayland. It looks like the devs have introduced some totally different method of handling window data in GNOME 44, or changed the previous one and it results in this.

That is something implemented by applications themselves, not by GNOME or the Shell. File bugs for the affected applications.

If this is about server side decorated X11 windows (that includes XWayland windows), in early versions of 44 there was an issue with the newly introduced frames client which moved drawing the window decorations to a separate process that creates a gtk window. There the gtk window was applying its maximization state (i.e. not maximized) after the client window. That was fixed in one of the later 44 releases (and 45) by delaying the restoration of the maximization state by mutter until the client window has been successfully reparented. But maybe there is still some timing issue with when gtk applies its maximization state.

is there a performance benefit by moving it to a new process or is it for modularity purposes? If not, why not just undo it?
I notice VSCodium for example has the File / Edit / View menus right below the decoration and maybe everything is linked to the GUI all the other GUI components below, so the whole thing is considered as 1 component. In other words when mutter thinks it’s loading the decoration it’s actually loading the entire window.
I’m no expert in these things, but if these components were linked somehow and treated as one, delay is not going to fix it. Maybe if there is a check where if there is only one component to an app, it attempts to maximize after creating the decoration (with the same class or whatever it’s used)

Neither. The old code used GTK methods to draw decorations as GTK would draw them, but without using real GTK widgets. Those methods were removed in GTK4, so in order to not be stuck with GTK3 indefinitely, a new approach was needed.

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.