[I am not a developer.]
Vincent Reher composed on 2017-12-09 19:21 (UTC-0800):
I recently purchased a Dell XPS15 laptop for my
daughter and before I turn it
over to her, I am experimenting to see what must be done to make it usable
under Linux/TDE for those with no better than normal eyesight. Per EDID, the
laptop's native screen resolution is 3840 x 2160 and its physical screen
dimensions are 346 x 194mm (~15.6" diagonal). My objective is to run the
laptop at native resolution both inside and outside of X (no re-scaling).
Using the EDID metrics, it is pretty easy to
determine during boot an optimum
terminal font (ter-i32b.psf) and X font scaling (Xft.dpi=240). After that,
using the TDE control panel to increase panel and icon sizes produces a nice
looking desktop environment … almost.
15.6" nominal is physically 282.42 DPI @3840x2160 resolution:
http://fm.no-ip.com/PC/displays.html
3840x2160 is considered "quad density", aka 4K resolution.
For a little perspective, consider what increased density means drawing icons or
text characters compared to lower resolutions.
15.6" nominal is 141.21 DPI @1920x1080 resolution (the HDTV standard).
The reference DPI, on which web standards are based, and from which most
software developers worked until production display densities started to
considerably exceed the standard reference, is 96. A screen that actually is 96
DPI @1920x1080 would be almost 23".
At the reference, a 16px by 16px icon is comprised at most of 16^2 or 256
pixels, and measures 4.417mm square. Going down to a 15.6" screen at that same
resolution shrinks those same pixels into a 141 DPI 3.003mm square space.
Raising the resolution to *nominal* quad (3840x2160) squeezes those 256px into
242 DPI 1.502mm square space.
The converse is that in order to get an icon that was 4.417mm square on a true
96 DPI screen to stay that size on a 15.6" screen @1920x1080 would require
utilizing approximately 554 pixels. On a quad screen, 3840x2160, that jumps to 2216.
Computers can be programmed to scale up objects so as to improve their physical
size, but with images that comprise the standard 96 DPI icons, their appearance
cannot be improved to take advantage of higher available pixel density. Higher
density screens need to have different, and much larger, icons.
The remaining issue concerns TDE window/menu
controls that are too small.
These include window resizing double-arrows, window scrollbar and associated
up and down arrows, the menu-submenu right arrow, list expand-collapse (+/-)
controls, checkboxes, and radio buttons.
I suspect that these resources are part of QT3
but don't really know for
sure. I suspect QT3 because applications that do not use that toolkit (e.g.
LibreOffice and Firefox) do not manifest the problem.
TDE and its own applications are QT3-based. QT3's initial release was 16 years
ago and for all practical purposes its development ended 3.5 years later, mid-2005.
QT3's design foundation is close to two decades old, well before developers had
to consider escalation of display densities. Some elements could be scaled with
density, by using units that scaled (e.g. pt, mm or in), but images weren't
among them. Some design elements used a mixture of pixel units and scalable
units, while others used one or the other. Compromises were inevitable where
densities varied more than a little from the standard.
Image scaling simply can't work as well as today's "HiDPI" screens
require.
Either images in additional sizes need to be provided, or a different kind of
image designed to be scaled need to be provided, or both. QT3 wasn't designed
for scalable images, and no one ever provided much in the way of additional
images, or just as, or more, importantly, an effective framework for utilizing
them without compromises.
Getting TDE off QT3 onto a foundation that fully supports "HiDPI", assuming
any
such open source foundation actually exists at this point, in my estimation
would require resources several orders of magnitude larger than those available
to the TDE project.
I am hoping that somebody more knowledgeable
about GUI configuration and
programming can point me in the right direction. Is this something that can
be corrected via a configuration file (e.g. qtrc)? If not, can somebody
point me to where in in the source code tree I should be looking and what I
would need to do to correct this?
IMO you're probably facing a choice between using TDE and not using native
resolution. At a normal viewing distance, 141 DPI ought to be as high a display
density as anyone with no better than average visual acuity can fully
appreciate, absent side-by-side comparisons, where differences may or may not be
detectable without getting closer or using a magnifying glass.
I suggest giving 1920x1080 (physically 141 DPI) a try. The kernel cmdline can be
configured through the bootloader menu to have it override EDID and use
1920x1080. Xorg and thus TDE should use that mode automatically, but if it does
not, Xorg can readily be configured to use it directly. TDE settings can do same
if need be.
Fonts in apps generally work best if DPI is a multiple of 24 (96 * 1.25,
96*1.50, 96*1.75, etc.), less well at 12X, even less well at 4X or 8X, so at
1920x1080 you might wish to try forcing DPI to 143 or 144. 144 is a breakpoint
in some software design, so you might notice some big differences between 143
and 144. Depending on how good your daughter's vision is, leaving logical DPI
set to its 96 default may well prove acceptable with 1920x1080.
Of course, if HiDPI issues have already been
addressed by others in the post
R14.0.4 source code, that would be great.
Leaving QT3 has been suggested, but
I've seen nothing on this mailing list or on
IRC to suggest anyone thinks it could ever happen.
HTH
Felix, thank you for your lengthy if somewhat pessimistic reply.
To be clear, I have no issue whatsoever with the fonts -- they look great on this display
with Xft.dpi=240, perhaps in part due to my past efforts at making fonts look reasonable
on Linux desktops. And the desktop/panel icons are fine after stepping up to larger sizes
(no scaling).
It's just those apparently fixed-size bitmap images used for window/menu controls that
are way too tiny. If indeed the problem lies in QT3 and it cannot be "configured
away" either during build time or run time, then I simply ask for somebody more
knowledgeable to point me in the right direction so I can start looking and experimenting
with the source code.
I am also not suggesting TDE be ported to QT>3. I know that is a non-trivial effort
and would not be feasible. Also, I am not even sure that QT fixed this problem until the
5.x versions (
).
To downsize from native resolution on this laptop would be to admit defeat and loose a
touted feature. It's not going to be a problem for my daughter since most of the
software she needs to run is "windows only" and the laptop's pre-installed
Windows 10 does not seem to have any problem at all. It may be a problem eventually for
me should I choose to get a similar laptop and stick with TDE.