Beim Öffnen einer .desktop-Datei außerhalb des Desktops erfolgt die sofortige Abmeldung

Beim Öffnen einer .desktop-Datei außerhalb des Desktops erfolgt die sofortige Abmeldung

Dies ist meine erste Frage bei Ask Ubuntu, daher möchte ich Ihnen im Voraus für Ihre Geduld danken.

Meine Situation ist folgende: Ich habe eine *.desktopDatei (die ich geschrieben habe), die ein Shell-Skript ausführen soll. Ursprünglich wollte ich diese Datei ~/.config/autostartso platzieren, dass sie beim Start automatisch ausgeführt wird. Dies führt jedoch dazu, dass Ubuntu den Desktop für den Bruchteil einer Sekunde aufblinkt und mich dann wieder abmeldet. Ich kann auf meinem Desktop auf die Datei doppelklicken und das Skript wird wie vorgesehen gestartet. Wenn ich die Datei *.desktopaus dem ~/DesktopVerzeichnis nehme und sie buchstäblich irgendwo anders ablege, führt ein Doppelklick in Nautilus ebenfalls dazu, dass ich sofort abgemeldet werde.

Die *.desktopDatei ist so eingestellt, dass sie ein Shell-Skript ausführt, das bashin startet gnome-terminal. Meine Gründe dafür sind nicht unbedingt wichtig, also gehen Sie bitte davon aus, dass es so sein muss. Wenn ich sleep 10am Anfang des ersten Shell-Skripts etwas hinzufüge, werde ich 10 Sekunden nach dem Starten der Datei abgemeldet *.desktop, unabhängig davon, wie sie gestartet wird. Das Problem scheint darin zu liegen, dass gnome-terminalvom zweiten Skript aus ein neues Fenster gestartet wird, aber ich verstehe nicht, wie oder warum das so ist. Desktop-Eintrag:

[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

Dies soll (und tut dies erfolgreich, wenn es vom Desktop aus gestartet wird) ein Vollbildfenster öffnen gnome-terminalund bashdas module.pyProgramm " " in dieser Bash-Sitzung starten. Es schließt auch das erste gnome-terminalFenster, das gestartet wurde, und trennt den untergeordneten Prozess.

Entschuldigen Sie den unglaublich langen ersten Beitrag. Ich möchte nur verstehen, was hier schief läuft und wie ich es beheben kann. Jede Hilfe ist sehr willkommen!

Antwort1

Obwohl ich meine Theorien habe, traue ich mich nicht zu behaupten, dass ich genau (oder auch nur annähernd) weiß, wie oder warum das funktioniert. Ich könnte mir vorstellen, dass es etwas mit der Art und Weise zu tun hat, wie ein *.desktopLauncher sein Ziel ausführt. Vielleicht habe ich versucht, das Gnome-Terminal-Fenster zu beenden, nachdem es am Ende der Ausführung des Skripts bereits geschlossen war, und habe dadurch meine Sitzung beendet? Vielleicht umgekehrt? Ich behaupte nicht, es zu wissen, aber ich würde jeden, der es weiß, einladen,Bitte beantworten Sie diese Frage mit Ihrer Erklärungdamit andere aus meinen Fehlern lernen können.

Das Entfernen der Leitung kill -9 $PPIDlöste das Problem

Wenn das Skript vom Launcher aus ausgeführt wird *.desktop, wird das erste gnome-terminalFenster geschlossen und das zweite bleibt übrig. Wenn das Skript von der Befehlszeile aus ausgeführt wird (z. B. $ bash InitSystem), wird das erste gnome-terminalFenster nicht geschlossen.

verwandte Informationen