Como resolver o problema de HiDPI com aplicativos Qt

Como resolver o problema de HiDPI com aplicativos Qt

Recentemente comecei a usar o comando xrandr --dpi 166para meu novo laptop rodandoUbuntu 16.04.3 64 bitsdepois de perceber que, caso contrário, o sistema usará automaticamente 96 dpi.

No entanto, uma configuração de dpi tão alta resulta em menus e barras de ferramentas extremamente grandesapenas em aplicativos QtTenho, como Master PDF Editor, digiKam e Krita (os dois últimos estão no formato AppImage). Outros aplicativos executados em ambiente Java ou WINE não apresentam tais problemas.

Espero encontrar uma maneira de inserir manualmente uma configuração de dpi específica para aplicativos Qt ou alguma outra maneira de resolver esse problema.

Se não houver como especificar globalmente uma configuração de dpi para aplicativos Qt, talvez um simples script wrapper entrando xrandr --dpi 96antes e restaurando a configuração inicial de dpi depois de tal aplicativo também possa funcionar ...

Responder1

Uma solução temporária menos que perfeita que encontrei é o seguinte script bash simples que pode ser usado no arquivo .desktop relevante em vez do executável do aplicativo em questão, por exemplo 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

Isso restaurará a configuração original de dpi somente se um desses aplicativos for aberto e fechado ou, caso mais de um aplicativo seja iniciado, somente se o primeiro aplicativo for fechado por último.

Em segundo lugar, de alguma forma, alguns elementos da GUI, além dos menus e barras de ferramentas, não podem ser corrigidos desta forma, por exemplo, o tamanho do cursor na área de trabalho do Krita...

Responder2

Consegui obter resultados muito bons ajustando algumas variáveis ​​de ambiente do Qt, nomeadamente QT_AUTO_SCREEN_SCALE_FACTORe QT_SCALE_FACTOR. Você pode escolher seus próprios valores, que podem se adequar melhor ao seu caso:

$ QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_SCALE_FACTOR=1.1 virtualbox

Mais sobre Qt vars pode ser encontrado aqui:https://doc.qt.io/qt-6.2/highdpi.html

informação relacionada