Utilizzo di StartupWMClass per le applicazioni in esecuzione in un terminale
In 18.04 avevo un launcher nel Dash per eseguire un'applicazione in un terminale con il Dash che mostrava un punto indicatore per il launcher quando era in esecuzione, piuttosto che un indicatore per il generico launcher del terminale (in questo modo sono stato in grado di trovarlo se altre finestre di terminale sono aperte). Sono stato in grado di utilizzare l'opzione --class nella voce Exec insieme a StartupWMClass per ottenere questo risultato.
Nella 20.04 il launcher non funziona in quanto viene aperto un terminale, l'applicazione tenta di avviarsi e poi il terminale si chiude. Ho cercato su Google e ci sono alcune chiacchiere sull'opzione --class che è stata deprezzata. Se elimino l'opzione --class, il programma di avvio funziona, ma il punto indicatore è attaccato al programma di avvio generico del terminale.
Ecco il file .desktop prima di eliminare l'opzione --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
Risposte
Questa non è una soluzione perfetta, ma per ora funziona. Cercando su Google ho trovato quanto segue
https://itectec.com/ubuntu/ubuntu-how-to-make-a-custom-launcher-for-terminal-applications/
che mostra come avviare un'applicazione in un terminale sebbene il programma di avvio utilizzi Terminal = false. In sostanza stai lanciando un emulatore di terminale che poi esegue l'applicazione. Ci sono due possibili trucchi con questo metodo. In primo luogo, chiama specificamente un particolare emulatore di terminale; secondo, l'opzione --class è ammortizzata e potrebbe non funzionare in futuro.
Quindi, per ora (Ubuntu 20.04.1 e Gnome 3.36.3), ho sostituito le righe
Terminal=true
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal
con
Terminal=false
Exec=gnome-terminal --class=SageTerminal -e /home/rquint/Sage/SageMath/sage
e avere il comportamento che desideravo.