The VDG team keeps running into a variety of inter-related problems regarding the apparent sizes of things on the screen that are preventing us from achieving consensus on the ideal size of various UI elements.
Essentially, each user experiences the size of items on screen differently due to widely varying sizes, resolutions, and viewing distances of screens, compounded by scale factors and scaling methods. Because we haven't defined what things are supposed to look like with a reference/baseline screen size and resolution, it is impossible to have a conceptually sound design discussion about object sizing at any other size, let alone in general.
From what I can tell, the historically intended screen PPI value is 96 (immortalized in X11's default DPI value, and visible in our Fonts KCM). This PPI value is only seen for desktop displays, which makes sense given X11's roots, so let's use the desktop UX as a baseline. Various online sources indicate that a desktop screen should be placed about 27" (68.5cm) from the user's face, and at that distance, a 23" (58cm) display is pretty comfortable. I personally have a 27" (68.5cm) display, which is 115% larger and would therefore look the same from 115% farther away, or 31" (81cm). This is in fact about as far away as I naturally sit from it, so I think this works as a baseline.
Let's choose 1920x1080 as the resolution for our 23" (58cm) display, which gives us the desired 96 PPI on that screen. A user with this setup will thus roughly view the system's visuals the way they were intended to be seen:
If a person uses a laptop, that person is likely using the laptop a bit closer to their face compared to a desktop screen. About 23" (58.5cm) seems about right, based on my own usage. That's 17% closer than the desktop screen is, which means that a laptop screen's PPI should also be about 17% greater. This gives us a target laptop PPI of 112.
A 13.3" (34cm) 1366x720 screen is 118 PPI, which is pretty close to that. Unfortunately most 1366x720 laptop screens are very low quality, sold as a budget option. A 1440p resolution at that same screen size provides us 236 PPI, which means you can use a 200% scale factor to make everything look perfect, and the quality is typically very high. Unfortunately again, most laptop manufacturers typically do not offer this or similar resolutions, only Apple and Lenovo do--and for Lenovo, it's only one option among many.
Instead, most laptops these days provide a 1080p display for all sizes between 13.3" (34cm) and 17" (43cm) which produce PPI values of between 129 and 165.
129 PPI makes everything look close-ish to the right size on a 17" (43cm) screen, but the 165 PPI 13.3" (34cm) screen makes everything much much much too small at 100% scale. Without knowing about or using fractional scaling, the user will be constantly tempted to make things bigger in an ad-hoc way, by raising the font sizes, increasing their panel thickness, increasing icon sizes in Dolphin and Plasma's Folder View, zooming in on all the web pages they view, and so on. A 4K screens at one of these physical sizes doubles the PPI, so using a nice round 200% scale factor brings you back to the original problem of everything looking tiny. They are crisp and sharp, but still tiny! My only conclusion is that using 1080p and 4K resolutions for small laptop computer screens has been a terrible industry-wide mistake, and our users are suffering as a result. We cannot change the direction of the industry, but we can provide software tools to adapt. In this case, that means fractional scaling.
I believe this is what's behind the persistent criticisms we face from different users that things are too big or too small; too cramped or with too much padding--sometimes simultaneously. We need to define once and for all the way things are supposed to look by default, and help these users reach that appearance.
I would therefore like to make a few proposals:
- We define that the baseline appearance is experienced by sitting 27" away from a 23" 1080p screen (or 4k with a 200% scale factor), as it matches the original DPI value.
- Given this baseline size, we use that to decide what's too big and what's too small. For example perhaps at this size, the font size, panel thickness, titlebar size, cursor size etc could stand to be adjusted one way or the other. Hopefully it should be obvious once we have a reference appearance that's supposed to look perfect.
- We put real effort and resources into making fractional scaling work properly and avoid as many technical and visual glitches as possible (see T9500). This may involve clever hacks like changing the font size to 12pt under the hood if the user selects 120% scaling, instead of actually doing the scaling (just an idea). It may require truly horrible hacks to make GTK apps match the same scale as KDE apps. I know that achieving perfection is impossible; a certain amount of this is inevitable and should be minimized rather than eliminated. The net result should be to resolve T9500 and make it easy for users to adjust the scale in a way that works.
- We apply by default a 125% fractional scale factor for the following displays to get them into the realm of a sane PPI value that won't leave their users squinting at everything:
13.3" (34cm) 1080p (125% scale becomes effectively 132 PPI)
14" (35.5cm) 1080p (125% scale becomes effectively 126 PPI)
(For people with these screen sizes and a 4K screen, we would obviously double the scale factor to 250%)
- Beyond this, for people who want to make everything on the screen a bit larger or smaller to suit their tastes or eyesight, we declare that primary tool to make scale screen elements is the scaling slider in KScreen. Not adjusting the font size, not adjusting the font DPI, not adjusting the resolution, not adjusting the panel thickness or icon sizes or or the zoom factor of websites--just the Qt scaling system in the KScreen KCM. One thing. Just that. We don't remove the other things of course, but we declare once and for all that Qt scaling is the primary and only formally supported method to accomplish the goal of making everything bigger or smaller.
This isn't perfect, but I think it's much better than the status quo and solves many persistent problems.
Thoughts?