Icona mancante all'avvio dell'applicazione


12

Ho creato un launcher dell'applicazione /usr/share/applicationsche avvia rdesktop. Il file specifica un nome icona e ho aggiunto le icone a:

/usr/share/icons/HighContrast/48x48/apps
/usr/share/icons/HighContrast/22x22/apps
/usr/share/icons/HighContrast/256x256/apps
/usr/share/icons/HighContrast/32x32/apps
/usr/share/icons/HighContrast/scalable/apps-extra
/usr/share/icons/HighContrast/24x24/apps
/usr/share/icons/HighContrast/16x16/apps
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/16x16/apps

Dopodiché spingo il launcher sulla barra delle applicazioni e il launcher con il logo corretto è visibile nella barra delle applicazioni. Tuttavia, quando inizio l'attività, viene creata una nuova icona nella barra delle applicazioni, un quadrato con un punto interrogativo al centro.

Di quali icone ho bisogno e dove, in modo che la barra delle applicazioni visualizzi l'icona corretta per l'applicazione quando viene avviata?

Il contenuto del file .desktop:

[Voce desktop]
Version = 1.0
Terminal = false
Icona = MSWindows
Type = Application
Categorie = Rete;
Exec = rdesktop win7shared1 -g 1680x1000

Name = win7shared1
GenericName = rdesktop
Commento = Apri desktop di Windows

Parole = di Windows
StartupNotify = false

Risposte:


15

Ciò che molto probabilmente risolverà il tuo problema è fare quanto segue:

  1. Apri l'applicazione
  2. Quando è in esecuzione, aprire un terminale e digitare:

    xprop WM_CLASS
    
  3. Quindi fare clic sulla finestra aperta dell'applicazione.

  4. L'output sarà simile (esempio gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Usa la prima parte (in questo caso sarebbe gedit), per comporre una riga nel tuo .desktopfile:

    StartupWMClass=<string>
    

    (sostituire <string>con l'output effettivo (prima parte) di xprop WM_CLASS, ad es. StartupWMClass=gedit)

Ora riprovare (potrebbe essere necessario disconnettersi / disconnettersi), molto probabilmente l'applicazione verrà visualizzata nel programma di avvio sotto la propria icona.

Spiegazione

  • Quando un'applicazione si avvia correttamente da un programma di avvio ( .desktopfile), ma viene visualizzata un'altra icona con solo un'icona generica (punto interrogativo), è molto probabile che la finestra dell'applicazione e il programma di avvio non si connettano per qualche motivo e il programma di avvio non lo fa riconoscere la finestra dell'applicazione come "sua". Questo è spesso il caso in cui viene utilizzato uno script o un'applicazione non standard (-comando). In questi casi la StartupWMClass=linea è spesso la soluzione.

Grazie Jacob. Questo ha risolto il problema. Per la cronaca, la stringa WM_CLASS era "rdesktop", "rdesktop".
Clayton,

@clayton perfetto, felice che abbia funzionato.
Jacob Vlijm,

1
Il tuo passaggio 2 può essere ridotto, poiché xprop ti consente di passare nell'atomo che desideri restituire, la corsa xprop WM_CLASSè sufficiente
johndrinkwater

@johndrinkwater Assolutamente, grazie per il suggerimento. È passato più di un anno fa, oltre 14 mesi è come se fosse stato scritto da un'altra persona :). Modifica ...
Jacob Vlijm,

@ jacob-vlijm :) l'ho appena scoperto mentre cercavo un comportamento imbarazzante con xprop
johndrinkwater

2

per me ha xprop|grep WM_CLASSdato WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(stavo avendo questo problema con Pycharm per Python)

Era quello sun-awt-X11-XFramePeerche mi serviva come stringa nel mio file .desktop (senza virgolette) - Grazie!


Ho aggiunto StartupWMClass=sun-awt-X11-XFramePeeral mio e non è successo niente! Il .desktopfile si trova nella cartella principale?
anon58192932

0

Dopo aver messo le icone nel posto giusto, è sufficiente riavviare xserver (disconnettersi e riconnettersi).
Prova anche ad aggiornare la cache delle icone (semplicemente incolla il codice qui sotto nel terminale):

for d in ~/.icons/*; do gtk-update-icon-cache -f $d; done
for d in /usr/share/icons/*; do sudo gtk-update-icon-cache -f $d; done
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.