Использование StartupWMClass для приложений, работающих в терминале
В 18.04 у меня была панель запуска в Dash для запуска приложения в терминале, при этом на панели Dash отображалась точка индикатора для средства запуска, когда она работала, а не индикатор для общей панели запуска терминала (таким образом я смог найти его, если остальные окна терминала открыты). Для этого мне удалось использовать параметр --class в записи Exec вместе с StartupWMClass.
В 20.04 программа запуска не работает, так как терминал открывается, приложение пытается запустить, а затем терминал закрывается. Я погуглил, и есть некоторые разговоры об обесценивании опции --class. Если я удалю параметр --class, программа запуска будет работать, но точка индикатора будет прикреплена к общей панели запуска терминала.
Вот файл .desktop перед удалением опции --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
Ответы
Это не идеальное решение, но пока оно работает. Погуглил, я нашел следующее
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
и вести себя так, как я хотел.