デスクトップ外で .desktop ファイルを開くとすぐにログアウトします

デスクトップ外で .desktop ファイルを開くとすぐにログアウトします

これは Ask Ubuntu での最初の質問ですので、お待ちいただけることをあらかじめ感謝いたします。

私の状況はこうです。*.desktopシェル スクリプトを実行するファイル (自分で書いたもの) があります。当初の意図は、このファイルを配置して~/.config/autostart起動時に自動的に実行されるようにすることでしたが、これにより Ubuntu がデスクトップを一瞬フラッシュし、その後ログアウトしてしまいます。デスクトップでファイルをダブルクリックすると、スクリプトが想定どおりに起動します。ファイルをディレクトリ*.desktopから取り出して~/Desktop文字通り他の場所に置くと、Nautilus でダブルクリックしてもすぐにログアウトしてしまいます。

ファイルは、で*.desktop始まるシェル スクリプトを実行するように設定されています。これを行う理由は必ずしも重要ではないので、必要な方法であると想定してください。最初のシェル スクリプトの先頭に追加すると、ファイルの開始方法に関係なく、ファイルの開始から 10 秒後にログアウトされます。問題は、2 番目のスクリプトから新しいウィンドウが開始されることにあるようですが、これがどのように、またはなぜ起こるのか理解できません。デスクトップ エントリ:bashgnome-terminalsleep 10*.desktopgnome-terminal

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

初期化システム:

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

Autocap.shを起動します:

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

gnome-terminalこれは、フルスクリーンウィンドウの実行を開始しbash、その bash セッションで " " プログラムを起動するはずです (デスクトップから起動した場合は正常に実行されます) module.py。また、子プロセスを開始して切り離した最初のgnome-terminalウィンドウも閉じます。

最初の投稿が信じられないほど長くて申し訳ありません。ここで何が問題なのか、どうすれば修正できるのかを知りたいだけです。どんな助けでも大歓迎です!

答え1

私には自分の理論があるが、これがなぜどのように機能するのかを正確に(あるいは少しでも)知っていると断言するのは怖い。ランチャーが*.desktopターゲットを実行する方法と関係があるのではないかと思う。おそらく、スクリプトの実行終了時に既に閉じられていたgnome-terminalウィンドウを終了しようとして、セッションを終了させて​​しまったのだろうか?その逆だろうか?私は知っているとは言わないが、知っている人はぜひこの質問にあなたの説明とともに答えてください他の人が私の失敗から学べるように。

線を削除することでkill -9 $PPID問題は解決しました

スクリプトがランチャーから実行されると*.desktop、最初のgnome-terminalウィンドウが閉じて 2 番目のウィンドウが残ります。スクリプトがコマンド ライン (たとえば、$ bash InitSystem) から実行されると、最初のgnome-terminalウィンドウは閉じません。

関連情報