Fractional display scaling in Workstation makes some apps incorrectly sized, impacts games

Problem

In Fedora 41 Workstation, old applications, which don’t support Wayland natively, may be incorrectly sized (too small or too large), if you use display scaling above 100% (a popular example: Steam). There also might be performance degradation or potentially some blurriness in games.

Note: Display scaling might be enabled automatically – that depends on what particular display you have.

Note2: If you have tinkered with scaling-related configuration in mutter before, your session might not inherit the latest tweaks for fractional scaling. Particularly in that case, you might see some apps being blurry. See the Workarounds section on how to check it and resolve it, in that case.

Cause

Display scaling is the process of making everything (application windows, texts, etc) bigger on your screen. It’s often used for modern high-density displays, otherwise everything would be tiny and hard to read. There are two display scaling techniques - integer scaling and fractional scaling.

GNOME in Fedora 40 and older only supports integer scaling, which allows you to scale desktop content to 100%, 200% or 300%, but nothing in between. This results in a sharp image even for old (X11) applications, but the content is often either too tiny or too large.

GNOME in Fedora 41 supports fractional scaling by default, which allows you to scale desktop content to fractional sizes like 125%, 150%, etc. This allows you to better fine-tune the preferred size, but only modern Wayland apps support this feature natively. GNOME developers tried to come up with compatibility layers which lets older (X11) apps mostly to be displayed correctly, but in some cases, it doesn’t work perfectly and certain apps might be sized incorrectly (too small or too large). Games, on the other hand, might render in a higher-than-needed resolution, causing a heavy performance penalty and potentially some bluriness. This happens even if you set the scale value to integer numbers, like 200% or 300% (because the underlying scale method is still fractional).

Related Issues

Fedora Workstation WG ticket: Issue #357: Fractional scaling - fedora-workstation - Pagure.io
GNOME bug: Fullscreen XWayland clients are blurry with xwayland-native-scaling (#3705) · Issues · GNOME / mutter · GitLab

Workarounds

Check if you’re using the latest scaling tweaks

If you have tinkered with scaling-related configuration in mutter before, your session might not inherit the latest tweaks for fractional scaling. You can check your current configuration in the Terminal this way:

$ gsettings get org.gnome.mutter experimental-features
['scale-monitor-framebuffer', 'xwayland-native-scaling']

If you see different output, you can reset the configuration to the default values (which should match the above) like this:

gsettings reset org.gnome.mutter experimental-features

Now log out and log back in and test the apps again.

Disable display scaling (with optionally enlarging fonts)

Check GNOME SettingsDisplays → select display → Scale. Perhaps your scale factor was automatically set by GNOME and you might actually not need it. Set 100% and see if works well for you (restart the apps). If you run at 100%, all apps should be sized correctly, compared to the rest of your desktop. (If they aren’t, then the problem might be elsewhere).

If the text is too small, you can use GNOME Tweaks to increase the default font size (and then restart the apps). With this approach, you might find that display scaling (above 100%) is not needed.

Try a single display

If you use multiple monitors, and one or more of them is scaled above 100%, it might cause issues for certain apps when detecting the correct size to use. Try using just a single display (and restart the apps), whether it helps.

Use integer scaling if acceptable

If you’re OK with just using integer scaling values like 200% or 300%, you can disable fractional scaling. You’ll lose the ability to set scaling in 25% intervals, but it should improve compatibility for old apps.

First, set the display scale to 200% or 300%, as preferred. Then disable fractional scaling using this command in your Terminal:

gsettings set org.gnome.mutter experimental-features "[]"

And finally log out and log back in. In GNOME Settings, you should now only see integer scaling options, and old apps should work better.

If you ever change your mind, you can re-enable fractional scaling by running this command in your Terminal:

gsettings reset org.gnome.mutter experimental-features

and logging out and back in again.

Use a lower than native resolution

Instead of using display scaling, you can configure your display in GNOME SettingsDisplays to disable the scaling (scale 100%) and lower the resolution instead (but keep the same aspect ratio as before, e.g. 16:9). That will make everything bigger, at the expense of some blurriness. Depending on your display and your eyesight, it might be an acceptable tradeoff.

Games - set a native in-game resolution

For games specifically, go the to game settings and look at what resolution is the game running at (if available). It might be rendering at a higher than native resolution, causing performance degradation and possibly some blurriness. Select the native resolution of your display (you can check what it is in GNOME SettingsDisplays, it’s the highest number).

Games - use a compatibility tool

Especially for gaming (but it might also be applicable to some fullscreen apps), there are special tools which can convince a game to run in a certain resolution, even if they can’t configure it themselves. Those are gamescope (Arch wiki) and xwayland-run, both packaged in Fedora under the same name. You can study those tools and try whether they help with your particular use case.

13 Likes

You can discuss this topic here.

2 Likes