Como forçar a aplicação do Qt em execução via sudo para usar a configuração de tema / fontes do usuário?

0

todos.

Estou desenvolvendo aplicativos no Qt5, mas requer acesso de hardware de baixo nível e, portanto, precisa ser executado como root. Meus sistemas operacionais de destino são Debian (ARM) e Ubuntu (x86).

O problema é que todos os aplicativos que são executados como root (via sudo) estão usando configurações raiz e ambiente.

Eu preciso de alguma forma forçar o aplicativo Qt para executar com o mesmo tema e fontes como usuário normal.

É de alguma forma possível conseguir isso? Como executar via shell script com parâmetros e comandos de execução adicionais?

Aqui estão as capturas de tela para mostrar a diferença:

Qt app rodando como root via sudo

Qt app sendo executado como usuário

    
por HeliTux 28.10.2017 / 17:46

2 respostas

0

Seus temas de usuário residem em ~/.themes em seu diretório inicial, onde o root não está procurando. Temas de todo o sistema sempre funcionarão bem em /usr/share/themes .

Você pode abrir seu terminal e inserir:

sudo ln -s ~/.themes /root/.themes

Desta forma, usuários root e normais compartilharão o diretório do tema.

Se necessário, você também pode fazer o mesmo para as preferências de fonte e ícone:

sudo ln -s ~/.icons /root/.icons
sudo ln -s ~/.fonts /root/.fonts

A única desvantagem é que você não terá nenhuma dica visual para lembrá-lo quando a execução do aplicativo com privilégios de root.

    
por 28.10.2017 / 20:40
0

Infelizmente, parece que não é possível na versão mais recente do Qt em distros recentes. O problema é descrito neste link para o Arch, mas a solução sugerida não está funcionando no Ubuntu / Debian.

Mas encontramos uma solução alternativa, que provavelmente é muito melhor se você quiser 100% de design estático (em todas as máquinas) no aplicativo raiz do Qt.

Você precisa especificar a folha de estilo Qt personalizada e o estilo personalizado para o aplicativo:

sudo ./QtApplication -style Adwaita -stylesheet=./stylesheet.css

Os estilos disponíveis do sistema estão localizados em / usr / lib / x86_64-linux-gnu / qt5 / plugins / styles /. No meu caso, os estilos disponíveis são Adwaita, Breeze e Oxygen. Esses estilos afetam apenas o estilo dos elementos da interface do usuário - por exemplo, botões, listas, mostradores e assim por diante. Para aplicar cores e fontes da interface do usuário personalizadas, usei a folha de estilo personalizada. Eu escrevi o meu baseado nesta folha de estilo personalizada para o QtCreator

Não sei como aplicar o tema de ícones também, mas isso não é grande coisa no meu caso.

Isso forçará o aplicativo a ser executado com um design especificado completamente personalizado, independentemente de como o estilo e as fontes locais estejam configurados. Pode ser usado no usuário e no root

    
por 29.10.2017 / 17:31