[plasmashell] [Bug 471443] Low-res Images in Qt Apps when using fractional scaling

Ilya Fedin bugzilla_noreply at kde.org
Wed Jul 5 00:40:10 BST 2023


https://bugs.kde.org/show_bug.cgi?id=471443

Ilya Fedin <fedin-ilja2010 at ya.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|general                     |Startup process
                 CC|                            |kde at davidedmundson.co.uk
   Target Milestone|---                         |1.0
           Assignee|unassigned-bugs at kde.org     |plasma-bugs at kde.org
            Product|kde                         |plasmashell
            Version|unspecified                 |5.27.6

--- Comment #2 from Ilya Fedin <fedin-ilja2010 at ya.ru> ---
Hope plasmashell is the correct component, the bug is in startkde which is a
part of plasma-workspace. The underlying problem is Plasma uses debug
environment variables Qt provides instead of the proper API[1] such as Xft.dpi
in xrdb and Xft/DPI in xsettings. The second one could be changed without
re-login.

Since the way Plasma sets up the scaling[3][4] is a debug one[2], it completely
disregards the hints set by applications, such as no fractional scaling
support[5] so Qt applies fractional scaling forcefully what leads to UI
corruption. I'd say this is even worse than the effect of setting GTK debug
environment variables which Plasma was doing in the past.

Moreover, during the evolution of the codebase it has happened that a part of
this logic has ended up being in startplasma-x11.cpp[3] and a part resides now
in startplasma.cpp[4]. This leads to Xwayland Qt 5 applications being forbidden
to scale.

QT_AUTO_SCREEN_SCALE_FACTOR[4] is also a deprecated variable that was replaced
by QT_ENABLE_HIGHDPI_SCALING during Qt 5 lifetime (seem to be undocumented) and
is not being read by Qt 6 so Qt 6 applications end up being double-scaled.

What Plasma should is to stop using Qt's debug environment variables, at all.
This never makes any good, just like with gtk and likely any other library. If
it needs its apps to be fractionally scaled then it should do that properly: by
opting in every application, as that's the way upstream in the face of Qt has
provided. Every other way screws up third-party applications which may not have
support for fractional scaling.

[1] https://doc.qt.io/qt-6/highdpi.html#configuring-x11 (undocumented in Qt 5
but mostly the same)
[2] https://doc.qt.io/qt-6/highdpi.html#environment-variable-reference (poorly
documented in Qt 5)
[3]
https://invent.kde.org/plasma/plasma-workspace/-/blob/master/startkde/startplasma-x11.cpp#L46-54
[4]
https://invent.kde.org/plasma/plasma-workspace/-/blob/master/startkde/startplasma.cpp#L328-330
[5]
https://doc.qt.io/qt-5/qguiapplication.html#highDpiScaleFactorRoundingPolicy

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Unassigned-bugs mailing list