Since i saw other threads talking about the experience on 4K monitors, i’d like to show another experience: very small screens.
The device is a X-Plus Piccolo Series81x, it has a 1920x1200 8" display. It uses 190% scale and anything below gets too small. This can also turn into a tablet so scaling is really essential.
Most X11 applications gets basically unusable so i set it for system scaling as default, but it also regress on usability for applications that already worked great on per-app scaling.
Unsupported X11 software
The very first example is Netbeans 8.2. This is the best version to develop J2ME CLDC and CDC applications, it is a old software which only uses old X11 functionality and has almost no scaling properties. When using per-app scaling method, it won’t scale and everything looks too small to see without gluing my snout to the screen and becoming hunchback with time.
But if we go to $NETBEANS_DIR/etc/netbeans.conf, we can add “–fontsize 32”. It works, but we can clearly see this software was never meant to be scaled since everything looks so buggy and menu contexts starts to flicker
This is a software that can only look nice on scaling by system mode
Supported X11 software
But an X11 application that does work on per-app scaling mode, although not perfect, is KiCAD. The buttons are small (honestly, they’re better this way in this case) but everything else is easy to see.
But system scaling not only makes it look blurry: Boxes occupy too much spaces and it gets basically unusable. Texts are also bad to read without having to zoom in which wasn’t a problem on per-app scaling.
This is an X11 application that can only work well on per-app scaling
Manually scaled X11 software
There’s also the case of X11 software that supports scaling, but has to be manually set. A popular one being Wine - I know, it’s not an app, but we can consider it’s basic graphical functionality. I’m testing it alongside q2mdlr9b for demonstration. Since not every Windows applications work alongside scaling, which is why Wine made it manual, it’s a case where system scaling could be used as default and some software could use per-app when it fits better. KDE wouldn’t detect it as “wine” but as the application name running it (MDL.EXE)
Of course, the default scaling with per-app mode is bad
But we can manually scale it thorough winecfg. We can also do it exclusively for this software by either using wine prefixes or adding a custom setting on the “Applications” tab on winecfg.
It also works on system scaling mode
This is a case where both works well but some could bring better experience over one option
Gaming
Many games works really well with either option since their respective tools can alreay handle with Wayland, Steam games works well, OpenArena works well. But 2 games catches my attention due to having issues on one of options: Minecraft with system scaling and Unreal with per-app scaling.
Minecraft with per-app scaling looks really nice
But we lost all the beauty when we are in system-scaling mode, even in fullscreen. The game is rendering at a way lower resolution and rescaling to a higher one. Since it’s a small screen it doesn’t bothers much, but we lost the potential to use every pixel of the display. An workaround is to use a modified GLFW to force it to use Wayland instead of XWayland.
Now the next one get’s completely unplayable. This is Unreal Gold running in pure Wine in per-app scaling mode:
Even though the UMPC is at landscape, the display is a portrait tablet display. So the real resolution is 1200x1920. The game renders at this resolution and glitches out when it tries to fullscreen at 1920x1200.
But it works well on system-scaling mode. Yes, it looks blurry, but now it’s finally playable
For now, i have to constantly switch between these options or use workarounds.
I think instead of enabling a blacklist only if “Apply scaling themselves” is chosen, it could work for both options. The blacklist would work by application name like how it does on window rules, when “Apply scaling themselves” is chosen blacklisted apps would be scaled by the system, when “Scaled by system” is chosen, the compositor would let blacklisted apps scale by themselves. All using the global display scaling defined by the user, apps wouldn’t be able to use their own scaling factor.
That would mean: Use this scaling method as default EXCEPT for these names in the blacklist.
For user friendliness, i think the user could also have a list of running apps when adding to the blacklist, or access it via the Application Window Rules menu and have the X11 Scaling mode rule there.