具有 Exec 和 Terminal=True 的 .desktop 文件:暂时防止应用程序退出时终端关闭?

具有 Exec 和 Terminal=True 的 .desktop 文件:暂时防止应用程序退出时终端关闭?

我有一个 Python 终端应用程序,我从 .desktop 文件调用它,如下所示:

[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 文件中添加调用,因为我注意到,当我直接从终端运行此应用程序时,我无法重现错误(显然,只有当我运行时,错误才会以某种方式显示)双击 .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 终端的命令行参数没有记录在其 GUI 可访问的帮助文档中。有关这些的完整列表,请运行gnome-terminal --help-all.

答案2

更简单的解决方案:

Exec=bash -c "python3 /home/pi/my_app.py ; read -p press"

相关内容