Como iniciar o aplicativo GUI com o script Upstart

4

Eu tenho um aplicativo gtk python que eu preciso executar quando um usuário faz o login. Eu não posso começar a lançar qualquer aplicativo GUI, mesmo se x estiver sendo executado.

Quando estou conectado ao X e emito o evento do script upstart abaixo

guitest

com o initctl, obtenho

initctl: Event failed

Aqui está um exemplo do meu script, exceto que substituí o gedit pelo meu aplicativo. Como posso modificar esse script para que o gedit ou meu aplicativo gtk python seja iniciado?

task

start on desktop-session-start  or guitest

script
    gedit
end script
    
por bambuntu 24.02.2012 / 05:51

3 respostas

0

Eu encontrei uma solução alternativa. Se alguém mais souber "o caminho certo", por favor me avise.

O script upstart precisa gravar um arquivo de sinalizador. Outro processo que é iniciado pelo usuário será constantemente procurando por esse arquivo de sinalizador a ser criado. O script upstart pode deixar qualquer informação relevante no arquivo de sinalização. Um usuário regular de curso ou root não tem problema em executar aplicativos gui. Por que o upstart tem um problema, ainda precisa ser respondido.

    
por bambuntu 21.03.2012 / 23:00
7

O Upstart é principalmente para gerenciar serviços do sistema. Se você deseja executar um aplicativo como parte da sessão do usuário, existem ferramentas melhores.

Através da GUI

Você pode configurar um aplicativo de inicialização na sessão de um usuário selecionando Startup Applications... no menu cog no canto superior direito da tela e, em seguida, escolha Add e preencha os detalhes de gedit .

Quando você fizer login na próxima vez, o aplicativo deve começar com a sessão.

manualmente

Se você não puder usar a interface do usuário para configurá-la, será possível configurá-la descartando um arquivo .desktop em um dos diretórios autostart de acordo com a especificação de início automático:

link

Se você quiser que ele afete todos os usuários no sistema, coloque o arquivo em /etc/xdg/autostart . Se você quiser apenas afetar um único usuário, coloque o arquivo em ~/.config/autostart .

O arquivo .desktop deve ser parecido com:

[Desktop Entry]
Type=Application
Exec=/usr/bin/gedit
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=GEdit
Comment=

Se você colocar o arquivo no diretório pessoal do usuário, certifique-se de definir o bit de execução no arquivo. Isso faz parte de uma medida de segurança para impedir que programas involuntariamente escrevam arquivos .desktop em funcionamento devido a bugs.

    
por James Henstridge 24.02.2012 / 08:19
0

Consegui fazer isso funcionar com um aplicativo QT definindo uma variável de ambiente "USER" e uma variável de ambiente "DISPLAY" no script upstart.

# gui - auto launch daemon

description     "gui daemon"

start on desktop-session-start
stop on desktop-shutdown

env HOME=/home/user

script
    export DISPLAY=:0
    mygui
end script

É limitado ao usuário indicado, é claro, pode não ser uma opção válida para alguns casos, mas, no meu caso, funciona perfeitamente.

    
por frmdstryr 28.04.2016 / 20:11

Tags