Verwenden von StartupWMClass für Anwendungen, die in einem Terminal ausgeführt werden

Oct 04 2020

In 18.04 hatte ich einen Launcher im Dash, um eine Anwendung in einem Terminal auszuführen, wobei der Dash einen Indikatorpunkt für den Launcher während der Ausführung anstelle eines Indikators für den generischen Terminal-Launcher anzeigt (auf diese Weise konnte ich ihn finden, wenn andere Terminalfenster sind geöffnet). Ich konnte die Option --class im Exec-Eintrag zusammen mit StartupWMClass verwenden, um dies zu erreichen.

In 20.04 funktioniert der Launcher nicht, wenn ein Terminal geöffnet wird, die Anwendung versucht zu starten und das Terminal dann geschlossen wird. Ich habe dies gegoogelt und es wird darüber geredet, dass die Option --class abgeschrieben wird. Wenn ich die Option --class lösche, funktioniert der Launcher, aber der Indikatorpunkt ist an den generischen Terminal Launcher angehängt.

Hier ist die .desktop-Datei, bevor Sie die Option --class löschen

[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

Antworten

1 RichardQuint Oct 06 2020 at 00:10

Dies ist keine perfekte Lösung, aber im Moment funktioniert es. Beim Googeln fand ich folgendes

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

Hier wird gezeigt, wie eine Anwendung in einem Terminal gestartet wird, obwohl der Launcher Terminal = false verwendet. Im Wesentlichen starten Sie einen Terminalemulator, der dann die Anwendung ausführt. Bei dieser Methode gibt es zwei mögliche Fallstricke. Erstens ruft es speziell einen bestimmten Terminalemulator auf; Zweitens wird die Option --class abgeschrieben und funktioniert möglicherweise in Zukunft nicht mehr.

Daher habe ich vorerst (Ubuntu 20.04.1 und Gnome 3.36.3) die Zeilen ersetzt

Terminal=true
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal

mit

Terminal=false
Exec=gnome-terminal --class=SageTerminal -e /home/rquint/Sage/SageMath/sage

und habe das gewünschte Verhalten.