Lança programas GUI do serviço em segundo plano no Linux

0

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.

    
por Jimmy 01.07.2017 / 21:15

1 resposta

1

Inicie seu processo como parte do fluxo de login.

  • Para adicioná-lo a todos os usuários: adicione um arquivo .desktop para ele em /etc/xdg/autostart (especificação completa aqui ).
  • Para adicioná-lo apenas para você, adicione o .desktop em ~/.config/autostart/ . Seu gerenciador de área de trabalho provavelmente tem alguma caixa de diálogo de configurações para fazer isso para você - no KDE5 (Configurações do Sistema): Settings>Workspace>Startup and shutdown>Autostart
por 02.07.2017 / 11:58