Eu escrevi um programa em java para iniciar vários programas no linux com uma API anexa. Eu quero que este programa java seja executado em segundo plano como meu usuário e inicie automaticamente na inicialização do sistema. Eu tentei executar o arquivo jar de um serviço systemd mas ao tentar iniciar aplicativos GUI ele falha.
Eu entendo que, para executar um aplicativo GUI, duas variáveis de ambiente precisam ser definidas:
DISPLAY e XAUTHORITY
Eu tentei defini-los no arquivo de serviço systemd, mas o processo java ainda não lança nenhum programa GUI. Não há problema ao iniciar aplicativos GUI ao executar o arquivo jar a partir de um terminal.
Este problema pode ser resolvido com o systemd ou qualquer outro daemon em segundo plano?
É assim que meu arquivo de serviço se parece:
[Unit]
Description=Application API
After=network.target
[Service]
User=me
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/me/.Xauthority
ExecStart=/usr/bin/java -jar /usr/local/bin/windows-application-launcher.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Atualização:
Ele só precisa ser executado quando eu estiver conectado ao meu ambiente de trabalho.