In a sign of how display handling is evolving, the GNOME desktop’s 3D-compositing Mutter window manager is gaining support for variable refresh rate (VRR, also known as Adaptive Sync) displays.
Mutter is an important chunk of code. As the project page says, it’s “a Wayland display server and X11 window manager and compositor library.”
It’s the basis of GNOME Shell, which is implemented [PDF] as a Mutter plug-in, but other desktops use it as well.
For instance, the PIXEL desktop of the Raspberry Pi OS.
It’s also used in Pop!_OS’s Cosmic desktop. Cinnamon uses a fork of it called Muffin.
Its name comes from Metacity + Clutter. Metacity was the old GNOME 2 window manager, which used Gtk2 to render to the screen, and Clutter used to be GNOME’s OpenGL rendering library.
The long-outstanding change to give it VRR support has finally lost its “work-in-progress” tag. Once merged, it will be visible in the GNOME Control Center as a simple on/off toggle.
Why would I need it?
Many modern chipsets, such as Intel’s Arc, support “Adaptive Sync.” Even plain old X.org has supported it for a while, and HDMI has since 2017. In brief, it enables the monitor’s refresh rate to change to match the frame rate of the program driving the display.
Until now, this has primarily been a feature for gamers, allowing for a smoother display with less tearing or stuttering. The GNOME developers work hard at making sure it generates a fast, smooth display, and this should help.
The change’s general significance is wider than just high-end gaming displays, though. If you look at the merge request we linked above, this superficially small feature, which will only be visible as a single small on/off switch, has taken two years of work.
It will require matching hardware: a compatible graphics card, compatible monitor, even the cable between them, and driver support.
This points to a wider issue with changing standards in modern displays. For instance, HiDPI screens are becoming widespread, and more and more people use laptops rather than desktops. If your laptop screen is HiDPI but your external screen is standard definition, or vice versa, you need fractional scaling support to get matching displays, as we mentioned when testing Ubuntu Cinnamon.
Currently only a handful of Linux desktops support this. Of the three desktops offered in Linux Mint 20, only Cinnamon supports fractional scaling. In some other desktops, you can change the scaling in integer steps, but this can lead to 1x being too small and 2x being too big. In some older ones, you can change the X server’s DPI setting, but that affects all displays globally – so it doesn’t help if you have mismatched displays. The Arch wiki explains some of the workarounds.
The Reg FOSS desk has already looked at the issues around Gtk4 theming.
Adopting toolkits, libraries or even whole components, like Mutter, intended for one specific desktop into others they were never designed for is complex and difficult. If the development team aren’t interested in cooperating with other desktops – something the GNOME team is infamous for – it’s harder still.
This presents less-mainstream desktops with a big problem. Either adopt technology of newer desktops (which is why Cinnamon exists: it’s a fork of GNOME 3) so you inherit new features such as fractional scaling or VRR support. Or stay with older libraries or toolkits (for example, MATE, a fork of GNOME 2, or Trinity, a fork of KDE 3), in which case you may end up unable to support the features of modern graphics chips and monitors. The risk is that these more niche desktops gradually get sidelined and become unusable.
Call it variable refresh rate or Adaptive Sync or whatever: support is a good thing. We’re definitely not criticizing it. We’re just worried about older, arguably better desktops slowly becoming unusable, and being shepherded into using modern ones we don’t really like. ®