Um aplicativo precisa de duas coisas para abrir uma janela em um monitor X. Ele precisa saber a localização da tela X; isso é transmitido pela DISPLAYvariável de ambiente. Ele também precisa se autenticar com o servidor X. Isso é transmitido por meio de um cookie, que é um valor secreto gerado pelo servidor X quando é iniciado e armazenado em um arquivo que somente o usuário que iniciou o servidor X pode acessar. O arquivo de cookie padrão é ~/.Xauthority.
Como alternativa, a execução do programa como o usuário que está executando o servidor X funcionará, desde que o arquivo de cookies esteja no local padrão (caso contrário, você precisará localizar o arquivo de cookies, como no caso raiz). Adicione a Userdiretiva (por exemplo User=dogs).
Obviamente, o serviço não será executado se não houver uma exibição X desse número pertencente ao usuário que você especificar.
É um pouco estranho iniciar um programa de GUI no Systemd. Não foi projetado para isso. Os programas GUI vivem em uma sessão X, iniciada por um usuário. Systemd é para processos do sistema. Você deve experimentar os daemons.
systemctl --user
. Além disso, aDISPLAY
variável não é uma questão então. Dê uma olhada aqui .Você pode adicionar
.xinitrc
:Funciona para mim!
fonte