Al abrir el archivo .desktop fuera del escritorio, se cierra la sesión inmediatamente

Al abrir el archivo .desktop fuera del escritorio, se cierra la sesión inmediatamente

Esta es mi primera pregunta con Ask Ubuntu, así que me gustaría agradecerles de antemano su paciencia.

Mi situación es la siguiente: tengo un *.desktoparchivo (que escribí) que se supone que debe ejecutar un script de shell. Mi intención inicial era colocar este archivo ~/.config/autostartpara que se ejecutara automáticamente al inicio; sin embargo, esto hace que Ubuntu muestre el escritorio por una fracción de segundo y luego vuelva a cerrar la sesión. Puedo hacer doble clic en el archivo en mi escritorio y se iniciará el script como se supone que debe hacerlo. Si saco el *.desktoparchivo del ~/Desktopdirectorio y lo coloco literalmente en cualquier otro lugar, al hacer doble clic en Nautilus también cerraré mi sesión inmediatamente.

El *.desktoparchivo está configurado para ejecutar un script de shell que comienza bashen gnome-terminal. Mis razones para hacer esto no son necesariamente importantes, así que asuma que así es como necesito que sea. Si agrego sleep 10al principio del primer script de shell, me desconecto 10 segundos después de iniciar el *.desktoparchivo, independientemente de cómo se inicie. Parece que el problema está en el hecho de que gnome-terminalse inicia una nueva ventana desde el segundo script, pero no entiendo cómo ni por qué sería así. Entrada de escritorio:

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

Sistema de inicio:

#!/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

IniciarAutocap.sh:

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

Se supone que esto (y lo hace con éxito, si se inicia desde el escritorio) inicia una gnome-terminalventana de pantalla completa en ejecución bashe inicia el module.pyprograma " " en esa sesión bash. También cierra la primera gnome-terminalventana que inició y desconectó el proceso hijo.

Perdón por la primera publicación increíblemente larga. Solo quiero entender qué está mal aquí y cómo podría solucionarlo. ¡Cualquier ayuda es muy apreciada!

Respuesta1

Si bien tengo mis teorías, tengo miedo de proclamar que sé exactamente (o incluso remotamente) cómo o por qué funciona esto. Me imagino que tiene algo que ver con la forma en que un *.desktoplanzador ejecuta su objetivo. ¿Quizás estaba intentando cerrar la ventana de gnome-terminal después de que ya se había cerrado al final de la ejecución del script y terminé matando mi sesión? ¿Quizás al revés? No pretendo saberlo, pero invitaría a cualquiera que lo sepa apor favor responde esta pregunta con tu explicaciónpara que otros puedan aprender de mi error.

Quitar la línea kill -9 $PPIDresolvió el problema.

Si el script se ejecuta desde el *.desktoplanzador, la gnome-terminalventana inicial se cerrará, dejando la segunda. Si el script se ejecuta desde la línea de comando (por ejemplo, $ bash InitSystem), la ventana inicial gnome-terminalno se cierra.

información relacionada