A variável de ambiente global de escalonamento do Qt não funciona de forma consistente

A variável de ambiente global de escalonamento do Qt não funciona de forma consistente

Estou me deparando com um daqueles problemas que acontecem de forma inconsistente e, portanto, são difíceis de replicar, até mesmo para mim.

Tenho uma tela 4K (3840x2160) e estou usando o escalonamento HiDPI sempre que possível, com um fator de 2. Porém, como estou executando uma configuração personalizada combinando o Xfce (para o painel, configurações e gerenciador de sessão) com bspwm (gerenciador de janelas lado a lado) e picom (sucessor espiritual de Compton como compositor), normalmente tenho que sujar um pouco as mãos para escalar aplicações Qt. As configurações do Xfce controlam apenas aplicativos GTK.

Para habilitar o escalonamento do Qt, normalmente sigoo wiki do Arco, adicionando export QT_SCALE_FACTOR=2my .bashrcou tentando as alternativas ( QT_AUTO_SCREEN_SCALE_FACTOR, QT_SCREEN_SCALE_FACTORS) até funcionar. E funcionou quando eu estava executando o Ubuntu 20.04.

No entanto, desde que migrei para o Debian 11 "Bullseye", o escalonamento do Qt agora é inconsistente por sessão. Quando funciona, funciona perfeitamente, para todas as aplicações. Mas outras vezes, não funciona de jeito nenhum. Parece que tenho que reiniciar até começar a trabalhar. E é como um cara ou coroa, ambos os resultados aparecem com relativa frequência.

Como solução alternativa, posso especificar a variável de ambiente localmente, ao iniciar o aplicativo, em vez de executá-lo globalmente. Por exemplo, env QT_SCALE_FACTOR=2 qpdfviewinicia o qpdfview com escala apropriada.

É claro que isso não é conveniente e prefiro que a variável de ambiente global, definida em .bashrc, se comporte como deveria. .bash_profileA propósito, também tentei criar um , mas isso não melhorou a situação.

Então o que está acontecendo? Estou suspeitando de problemas com a ordem de partida. Mesmo quando não recebo minha escala, printenvmostra que QT_SCALE_FACTOR(ou qualquer alternativa) está listada... então está lá, mas algo deve estar mexendo com isso. Estou mencionando a ordem inicial, pois minha configuração (reconhecidamente incomum) é aparentemente sensível a quais processos já estão (ou não) em execução; às vezes (raramente), estou inicializando em um painel bagunçado e em janelas que não podem ocupar mais de um quarto da tela. Então eu simplesmente reinicio e está tudo bem.

De qualquer forma, eu apreciaria sua ajuda. Desde já, obrigado!


EDITAR: problema resolvido! Lightdm foi o perpetrador. Como explicadoaqui, .bashrce os arquivos relacionados não são obtidos ao efetuar login no lightdm, pois a exibição não é iniciada pelo shell. Lightdm analisa alguns arquivos para iniciar scripts e é aqui que você pode armazenar variáveis ​​de ambiente. O nome exato pode depender da distro. Archwiki diz ~/.xprofile, masno Debianvocê usaria ~/.xsessionrc.

Então, criei ~/.xsessionrccontendo export QT_SCALE_FACTOR=2e agora funciona.

informação relacionada