ターミナルで実行されているアプリケーションにStartupWMClassを使用する

Oct 04 2020

18.04では、Dashにアプリケーションを実行するためのランチャーがあり、Dashは、汎用ターミナルランチャーのインジケーターではなく、実行時にランチャーのインジケータードットを表示していました(このようにして、次の場合に見つけることができました)。他のターミナルウィンドウが開いています)。これを実現するために、Execエントリの--classオプションをStartupWMClassと一緒に使用することができました。

20.04では、端末が開かれ、アプリケーションが起動を試みてから端末が閉じるという点で、ランチャーが機能しません。私はこれをグーグルで検索しましたが、-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 RichardQuint Oct 06 2020 at 00:10

これは完璧な解決策ではありませんが、今のところは機能します。グーグルで回ると、次のことがわかりました

https://itectec.com/ubuntu/ubuntu-how-to-make-a-custom-launcher-for-terminal-applications/

これは、ランチャーがTerminal = falseを使用しているにもかかわらず、ターミナルでアプリケーションを起動する方法を示しています。本質的には、アプリケーションを実行するターミナルエミュレータを起動します。この方法には2つの落とし穴があります。まず、特定の端末エミュレーターを具体的に呼び出します。次に、-classオプションは減価償却されており、将来機能しなくなる可能性があります。

だから、今のところ(Ubuntu20.04.1とGnome3.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

そして私が望む振る舞いをします。