I got a new laptop at work, a Lenovo P1gen2. It has a 4k internal display built in, which has caused nothing but immense pain on the crappy Linux graphics stack. Of course it has a built-in nvidia card, with all the driver nightmare that comes with that.
Anyway, I installed Fedora 32 Mate on it, and surprise surprise, everything was very tiny. Fortunately there’s a fix in Mate for that:
Appearance > Fonts > Details > Set DPI to 192
Now the text is readable, everything is working fine. So I thought. Until I opened KeepassXC, which is a QT application (this affects all QT applications,
like Zoom, VirtualBox, etc.). KeepassXC was HUGE, like 4x bigger than it should be. After some googling, I found a reference to
QT_SCALE_FACTOR on the Arch wiki.
Something on MATE sets this to
2, which causes the MATE scaling to apply and on top of that the QT scaling. I tried to set this variable to
1 in different places,
but non had effect: something resets that value to
2 on login. After some googling, I found the culprit: the MATE session manager.
To fix that, you now have two options. Either you hardcode the scale factor to
1 via this command
gsettings set org.mate.interface window-scaling-factor 1
or you disable the QT sync via
gsettings set org.mate.interface window-scaling-factor-qt-sync false
I found the name of this configuration option in the PR which fixed the bug linked above.
I still have some problems when using a 2k display besides the 4k display, but I guess this is what I get for using Linux with modern hardware. I heard Cinnamon has good support for Hi-DPI, so maybe next time I give it a try.