So lösen Sie das HiDPI-Problem mit Qt-Apps

So lösen Sie das HiDPI-Problem mit Qt-Apps

Ich habe vor kurzem begonnen, den Befehl xrandr --dpi 166für meinen neuen Laptop zu verwenden, auf demUbuntu 16.04.3 64-Bitnachdem Sie bemerkt haben, dass das System sonst automatisch 96 dpi verwendet.

Eine so hohe DPI-Einstellung führt jedoch zu extrem großen Menüs und Symbolleistennur in Qt-AppsIch habe beispielsweise Master PDF Editor, digiKam und Krita (die beiden letzteren sind im AppImage-Format). Bei anderen Apps, die in einer Java- oder WINE-Umgebung laufen, treten derartige Probleme nicht auf.

Ich hoffe, eine Möglichkeit zu finden, manuell eine bestimmte dpi-Einstellung für Qt-Apps einzugeben oder dieses Problem auf andere Weise zu lösen.

Wenn es keine Möglichkeit gibt, eine DPI-Einstellung für Qt-Apps global anzugeben, xrandr --dpi 96könnte es vielleicht auch ein einfaches Wrapper-Skript tun, das vor einer solchen App eingreift und die anfängliche DPI-Einstellung nach ihr wiederherstellt ...

Antwort1

Eine nicht ganz perfekte Übergangslösung, die ich gefunden habe, ist das folgende einfache Wrapper-Bash-Skript, das in der entsprechenden .desktop-Datei anstelle der ausführbaren Datei der betreffenden App verwendet werden kann, z. B masterpdfeditor4.:

#!/bin/bash
HiDPI="$(xdpyinfo | grep dots | awk -F'x' '{print $2}' | awk -F' ' '{print $1}')"
if [[ ! $HiDPI = 96 ]]
then
    xrandr --dpi 96
    masterpdfeditor4 "$@"
    xrandr --dpi $HiDPI
else
    masterpdfeditor4 "$@"
fi

Dadurch wird die ursprüngliche DPI-Einstellung nur wiederhergestellt, wenn eine solche App geöffnet und geschlossen wird, oder, falls mehr als eine solche App gestartet wird, nur, wenn die erste App zuletzt geschlossen wird.

Zweitens können einige GUI-Elemente außer Menüs und Symbolleisten nicht auf diese Weise behoben werden, z. B. die Cursorgröße im Krita-Arbeitsbereich ...

Antwort2

Ich konnte durch die Anpassung einiger Qt-Umgebungsvariablen, nämlich QT_AUTO_SCREEN_SCALE_FACTORund , recht gute Ergebnisse erzielen QT_SCALE_FACTOR. Sie können eigene Werte wählen, die für Ihren Fall besser geeignet sein könnten:

$ QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_SCALE_FACTOR=1.1 virtualbox

Mehr zu Qt-Variablen finden Sie hier:https://doc.qt.io/qt-6.2/highdpi.html

verwandte Informationen