我有一个 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"