Abrir o arquivo .desktop fora da área de trabalho imediatamente efetua logout

2

Esta é a minha primeira pergunta com o Ask Ubuntu, por isso gostaria de lhe agradecer desde já pela sua paciência.

Minha situação é esta: Eu tenho um arquivo *.desktop (que eu escrevi) que deve executar um script de shell. Minha intenção inicial era colocar esse arquivo em ~/.config/autostart para que ele fosse executado automaticamente na inicialização; no entanto, isso faz com que o Ubuntu pisque a área de trabalho por uma fração de segundo e depois me desconecta. Eu posso clicar duas vezes no arquivo na minha área de trabalho e ele irá iniciar o script como deveria. Se eu tirar o arquivo *.desktop do diretório ~/Desktop e colocá-lo literalmente em qualquer outro lugar, clicando duas vezes nele no Nautilus também fará com que eu seja desconectado imediatamente.

O arquivo *.desktop está definido para executar um script de shell que inicia bash in gnome-terminal . Minhas razões para fazer isso não são necessariamente importantes, então, por favor, assuma que é assim que eu preciso que seja. Se eu adicionar sleep 10 ao início do primeiro script de shell, eu me desconectarei 10 segundos depois de iniciar o arquivo *.desktop , independentemente de como ele é iniciado. Parece que o problema está no fato de que uma nova janela gnome-terminal é iniciada a partir do segundo script, mas não entendo como ou por que isso aconteceria. Entrada na área de trabalho:

[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application

InitSystem:

#!/bin/bash
nohup gnome-terminal --title=Autocapture --maximize -e "bash -c 'bash /Autocapture/Startup/StartAutocap.sh';bash"
wmctrl -a "Autocapture"           # Give focus to new terminal window
kill -9 $PPID                     # Close this terminal

StartAutocap.sh:

#!/bin/bash
source /usr/local/bin/virtualenvwrapper.sh
workon Autocap
python /path/to/python/module.py

Isso deve (e com êxito, se iniciado a partir da área de trabalho) iniciar uma janela gnome-terminal de tela inteira executando bash e iniciar o programa " module.py " nessa sessão bash. Ele também fecha a primeira janela gnome-terminal que iniciou e desanexou o processo filho.

Desculpe pelo incrivelmente longo primeiro post. Eu só quero entender o que está errado aqui e como eu posso consertar isso. Qualquer ajuda é muito apreciada!

    
por TheIntern 04.06.2018 / 22:38

1 resposta

2

Embora eu tenha minhas teorias, tenho medo de proclamar que sei exatamente (ou mesmo remotamente) como ou por que isso funciona. Eu imagino que tem algo a ver com a maneira como um *.desktop launcher executa seu alvo. Talvez eu estivesse tentando matar a janela do gnome-terminal depois que ela já havia sido fechada no final da execução do script e acabasse matando minha sessão? Talvez vice-versa? Eu não pretendo saber, mas eu gostaria de convidar qualquer um que fizer isso para responder esta pergunta com sua explicação para que outros possam aprender com meu erro.

Remover a linha kill -9 $PPID resolveu o problema

Se o script for executado a partir do *.desktop launcher, a janela inicial gnome-terminal será fechada, deixando a segunda. Se o script for executado a partir da linha de comando (por exemplo, $ bash InitSystem ), a janela inicial gnome-terminal não será fechada.

    
por TheIntern 04.06.2018 / 22:57