次のように.desktopファイルから呼び出されるPythonターミナルアプリケーションがあります。
[Desktop Entry]
Version=1.0
Name=My App
Exec=python3 /home/pi/my_app.py
Terminal=true
Type=Application
Categories=Application;
私が望むように動作します。デスクトップショートカットをダブルクリックすると端末が起動し、アプリケーションが実行され、操作が完了すると端末も閉じます。
しかし最近、Pythonアプリケーションを強制的に閉じるいくつかのエラー/例外が発生し始めました。これにより端末も閉じられるため、エラーメッセージを読み取ることができません。
だから私は次のことを試しました。
[Desktop Entry]
Version=1.0
Name=My App
Exec=python3 /home/pi/my_app.py ; read -p "press"
Terminal=true
Type=Application
Categories=Application;
...しかし、Execパラメータに直接あり、明示的に呼び出されないので、bash
そのread ..
部分はPythonプログラムのコマンドライン引数として解釈され、プログラムはすぐにクラッシュして端末を閉じます(ただし、少なくともこれを繰り返すのは簡単です) )、そしてコマンドライン引数に関してPythonからエラーメッセージが表示されることを認識してください。
bash
このアプリケーションを端末で直接実行するとエラーを再現できないことがわかったので、.desktopファイルに呼び出しを追加したくありません(明らかにエラーはDisplayを実行したときにのみ何らかの方法で発生します)。 .desktopファイルをダブルクリックします.)
それでは、端末で.desktopショートカットを介してこのアプリケーションを実行し、エラーメッセージを読み取ることができるように、アプリケーションが終了したときに端末ウィンドウを閉じずに何を追加できますか?
答え1
Gnome端末には、コマンドが終了したときに端末を開いたままにするオプションがあります。クラッシュ後もエラーが表示されるように設定を開いておく必要があります。他の端末にも同様のオプションがあります。
Gnome端末がデフォルト端末でない場合(必要に応じてインストールされたと仮定)、ファイルから明示的に呼び出して.desktop
Pythonアプリケーションを実行できます。
[Desktop Entry]
Version=1.0
Name=My App
Exec=gnome-terminal --command 'python3 /home/pi/my_app.py'
Terminal=false
Type=Application
Categories=Application;
このオプションは実行したくないので、に設定されていますTerminal
。false
gnome-terminal
存在するターミナル。
シャットダウン動作オプションはプロファイルごとにあるため、ターミナルが終了時に開いたままにし、オプションを次のように変更してExec
使用を指定する場合にのみ適用されるプロファイル(たとえば、「開いたまま」)を生成できます。この設定ファイル:
Exec=gnome-terminal --profile='Hold Open' --command 'python3 /home/pi/my_app.py'
何らかの理由で、Gnome Terminalのコマンドライン引数は、GUIアクセス可能ヘルプ文書に文書化されていません。完全なリストを表示するには、を実行してくださいgnome-terminal --help-all
。
答え2
より簡単な解決策:
Exec=bash -c "python3 /home/pi/my_app.py ; read -p press"