It looks like the fractional scaling currently supports only percentages (multiples of 5%).
It would be really nice if KDE supported true fractional scaling by an arbitrary rational scaling factor (specified as numerator/denominator). That way you could achieve a pixel-perfect area ↔ area mapping without any rounding error, match different size & pixel density screens etc.
For single Hi-DPI display you could also get the most common “virtual” pixel resolutions. For example: the increasingly common QHD laptop screens (2560px width) could be easily mapped to the most common 1920px width “virtual resolution” using the 4/3 scaling factor. Currently the best you can do is probably 125% (2048px virtual width) - most other settings result in a virtual resolutions with a rational component (and need to be rounded to the closes integer)
Since the “virtual resolution” is currently used for window placement/sizing rules (a decision which might have warranted an option as well), getting a nice value (non prime, with nice factors like 2 & 3) also helps with creation of even grid-like window layouts etc.
That’s how the 5% granularity is achieved currently. The denominator is 120 but we don’t expose the whole thing to limit UI complexity among things.
The current granularity in Plasma is already the highest granularity there is among all Graphical Operating System, FOSS or not, AFAICT.
And Qt is the only toolkit supporting it sadly.
You have been spoiled
Kwin will pick a default scale based on pixel density and screen hardware size: you don’t the same scaling on a 13’’ 4k laptop and a 32’’ 4k screen or a 24.5’’ 4k monitor.
Definitely not.
This involves a lot of complication code-wise for very little benefit.
There is a tension between complexity we expose the users to and the number of users that will use the feature, or complain the option exists, i.e “systemsettings is scary”
Current state allows this, to the point the naked eye can’t perceive the eventual rounding.
But KWin/ksreen with a simple patch could achieve what you expect here, that probably won’t be accepted upstream but I would curious to see how big the visual difference would be (spoiler, it would be small).
That’s great news! I was worried those limitation were deeply embedded in the current technical solution. I wouldn’t mind even editing the config file directly in some cases if both numerator and denominator were exposed there.
In my mind fractions are the natural way to do this. Whether the reasons for the current state are the technical limitations of various legacy toolkits, or just the copycat mentality of the original designers of these systems I don’t know. That doesn’t mean we shouldn’t strive for something better.
Yes and it probably does a decent job of that. But the current system (in general case) doesn’t allow to perfectly match the scaling of two side by side monitors of different pixel densities.
Example: Let’s imagine I have two 24" displays side by side. One is FullHD (1920px width) and the other QHD (2560px width). What scaling should I set to match those? In my mind it would be 100% on the FullHD one and 4/3 on the QHD which would match them perfectly. But that is currently not possible.
Also (speaking about the default setting): to optimally set the default/initial scaling Kwin should probably consider the viewing distance. But I’m not aware of any source of such information.
Well, I would have probably chosen the opposite default (it feels more natural to me to work with the true pixel resolution of the screen), but OK. I understand it’s easier to maintain just one code path, and it would work fine if true fractions were permitted. But working with a resolution of 1706.66 x 1066.66 (2560x1600 at 150% scaling) just feels wrong to me (it was suggested default on my 16" laptop).
BTW. It could be a good idea to display this new calculated “virtual resolution” next to the scaling settings.
That probably depends upon a user and could be solved by gradually exposing different levels of settings based on the users experience/preference. For me the ability to tune things exactly to my liking is one of the main reasons I chose KDE. Frankly I just can’t stand the “We know best & settings just overwhelm users anyway” attitude that Gnome (and many others) have. Reasonable defaults - yes. Hide complexities under the “Advanced” settings - no problem. You can even point me to edit the config file directly for a rarely used stuff. But let the tinkerers tinker and optimize their workflow to their liking. That is the true strength of KDE.
For me it’s not just about a visual difference but about setting initial window dimensions / window placement & scripting. I believe there is a reason why both dimensions of FullHD (1920x1080) have nice factors of 2,3,5. It simplifies quite a few things and it would be a shame to lose those properties just because of scaling.
I believe this option could be exposed in such a way that would actually simplify the settings & improve users understanding. Most user probably don’t want to insert the desired scaling fraction into some dialog directly, but we could help them achieve the results they are looking for:
Get the virtual resolution/pixel density of a screen to something they are used to (E.G. match the sizing on a new HiDPI display to the previous similarly sized regular one)
Match the “virtual pixel density” of two or more displays based on their physical dimensions & resolution (or declared DPI if it can be depended upon)
If the UI is clear & useful to users, I don’t see while it shouldn’t be upstreamed (worst case a little hidden under some “advanced” dialog) .