在 18.04 中,我在 Dash 中有一个启动器,用于在终端中运行应用程序,当应用程序运行时,Dash 会显示启动器的指示点,而不是通用终端启动器的指示器(这样,如果其他终端窗口打开,我就能找到它)。我能够使用 Exec 条目中的 --class 选项以及 StartupWMClass 来实现这一点。
在 20.04 中,启动器无法工作,因为打开终端后,应用程序尝试启动,然后终端关闭。我在 Google 上搜索了这个问题,有人在谈论 --class 选项被弃用。如果我删除 --class 选项,启动器可以工作,但指示点会附加到通用终端启动器上。
这是删除 --class 选项之前的 .desktop 文件
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Encoding=UTF-8
StartupNotify=true
Icon[en_US]=sage-terminal
Icon=sage-terminal
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal
StartupWMClass=SageTerminal
Name=SageTerminal
Name[en_US]=SageTerminal
Actions=SageDocumentation;
[Desktop Action SageDocumentation]
Name=Sage Documentation
Exec=firefox /home/rquint/Sage/SageMath/local/share/doc/sage/html/en/index.html
答案1
这不是一个完美的解决方案,但目前它是有效的。我在谷歌上搜索后发现了以下内容
https://itectec.com/ubuntu/ubuntu-how-to-make-a-custom-launcher-for-terminal-applications/
它显示了如何在终端中启动应用程序,尽管启动器使用 Terminal=false。本质上,您正在启动一个终端仿真器,然后运行该应用程序。此方法可能存在两个问题。首先,它专门调用特定的终端仿真器;其次,--class 选项已弃用,将来可能不再起作用。
因此,目前(Ubuntu 20.04.1 和 Gnome 3.36.3),我已经替换了以下几行
Terminal=true
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal
和
Terminal=false
Exec=gnome-terminal --class=SageTerminal -e /home/rquint/Sage/SageMath/sage
并具有我期望的行为。