Używanie StartupWMClass do aplikacji działających w terminalu

Oct 04 2020

W 18.04 miałem program uruchamiający w Dash, aby uruchomić aplikację w terminalu, a Dash wyświetlał kropkę wskaźnika dla programu uruchamiającego, kiedy był uruchomiony, zamiast wskaźnika dla ogólnego programu uruchamiającego terminal (w ten sposób mogłem go znaleźć, jeśli inne okna terminala są otwarte). Udało mi się to osiągnąć za pomocą opcji --class we wpisie Exec wraz ze StartupWMClass.

W 20.04 program uruchamiający nie działa, ponieważ terminal jest otwarty, aplikacja próbuje się uruchomić, a następnie terminal się zamyka. Wyszukałem w Google i jest trochę dyskusji na temat deprecjacji opcji --class. Jeśli usunę opcję --class, program uruchamiający działa, ale kropka wskaźnika jest dołączona do ogólnego programu uruchamiającego terminal.

Oto plik .desktop przed usunięciem opcji --class

[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

Odpowiedzi

1 RichardQuint Oct 06 2020 at 00:10

Nie jest to idealne rozwiązanie, ale na razie działa. Szukając w Google, znalazłem następujące

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

który pokazuje, jak uruchomić aplikację w terminalu, chociaż program uruchamiający używa Terminal = false. W istocie uruchamiasz emulator terminala, który następnie uruchamia aplikację. W przypadku tej metody istnieją dwie możliwe pułapki. Po pierwsze, wywołuje konkretny emulator terminala; po drugie, opcja --class jest amortyzowana i może nie działać w przyszłości.

Tak więc na razie (Ubuntu 20.04.1 i Gnome 3.36.3) wymieniłem linie

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

z

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

i zachowuję się tak, jak sobie życzyłem.