Contexto: inicie uma aplicação GUI como um serviço linux. Eu considerei fazer um daemon sem cabeça com um front-end de GUI, mas há muito código envolvido para fazer isso agora. Este serviço deve iniciar no login do usuário, ele deve ser iniciado no shell do usuário (os direitos de arquivo são importantes aqui). Nenhuma interação do root deve ser necessária (instalação automática a partir de um RPM). Além disso, o sistema (root) deve poder iniciar e parar este serviço para executar tarefas de manutenção chamadas pelo cron.
Eu consegui fazer isso até agora, mas tenho uma pergunta de segurança sobre isso: o seguinte quebra alguma segurança do servidor X uma vez que o usuário 'username' está logado?
.xinitrc criado em '/ home / username', chamando xhost antes de iniciar o gerenciador de janelas
xhost + local:username
exec $WINDOWMANAGER
'/ etc / sudoers' modificado com um editor personalizado para adicionar essas linhas
username localhost = NOPASSWD: /etc/init.d/my-daemon
Defaults env_keep += "DISPLAY XAUTHORITY"
script de serviço '/etc/init.d/my-daemon'
#!/bin/bash
DISPLAY=${DISPLAY:-:0.0}
export DISPLAY=$DISPLAY
gnomesu -u username -c 'my-gui-app-bin with-some-arguments'
O serviço my-daemon não inicia em nenhum nível (o DISPLAY não está pronto, mesmo no nível 5)
chkconfig --del my-daemon
autostart do deamon através de um arquivo .desktop em '/ etc / xdg / autostart /' e o seguinte script
#!/bin/bash
sudo /etc/init.d/my-daemon start