Das Symbol fehlt, wenn die Anwendung gestartet wird

12

Ich habe einen Anwendungsstarter erstellt /usr/share/applications, mit dem rdesktop gestartet wird . Die Datei gibt einen Symbolnamen an und ich habe die Symbole hinzugefügt zu:

/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

Ich drücke dann den Launcher in die Taskleiste und der Launcher mit dem richtigen Logo wird in der Taskleiste angezeigt. Wenn ich die Aufgabe starte, wird jedoch ein neues Symbol in der Taskleiste erstellt, ein Quadrat mit einem Fragezeichen in der Mitte.

Welche Symbole benötige ich und wo, damit die Taskleiste beim Start das richtige Symbol für die Anwendung anzeigt?

Der Inhalt der .desktop-Datei:

[Desktop Eintrag]
Version = 1.0
Terminal = false
Icon = mswindows
Typ = Anwendung
Kategorien = Netzwerk;
Exec = rdesktop win7shared1 -g 1680x1000

Name = win7shared1
GenericName = rdesktop
Comment = Windows-Desktop öffnen

Schlüsselwörter = Windows
StartupNotify = false
Clayton
quelle

Antworten:

15

Was Ihr Problem höchstwahrscheinlich lösen wird, ist Folgendes:

  1. Öffnen Sie die Anwendung
  2. Wenn es ausgeführt wird, öffnen Sie ein Terminal und geben Sie Folgendes ein:

    xprop WM_CLASS
    
  3. Klicken Sie dann auf das geöffnete Anwendungsfenster.

  4. Die Ausgabe sieht wie folgt aus (Beispiel gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Verwenden Sie in diesem Fall den ersten Teil gedit, um eine Zeile in Ihrer .desktopDatei zu erstellen:

    StartupWMClass=<string>
    

    (Ersetzen <string>durch den tatsächlichen (ersten Teil der) Ausgabe von xprop WM_CLASSzB StartupWMClass=gedit)

Versuchen Sie es jetzt noch einmal (möglicherweise müssen Sie sich abmelden / anmelden). Wahrscheinlich wird die Anwendung im Launcher unter einem eigenen Symbol angezeigt.

Erläuterung

  • Wenn eine Anwendung über einen Starter (eine .desktopDatei) ordnungsgemäß gestartet wird, ein anderes Symbol jedoch nur mit einem allgemeinen Symbol (einem Fragezeichen) angezeigt wird, können das Anwendungsfenster und der Starter wahrscheinlich aus irgendeinem Grund keine Verbindung herstellen, der Starter jedoch nicht Erkennen Sie das Fenster der Anwendung als "sein". Dies ist häufig der Fall, wenn ein Skript oder eine nicht standardmäßige Anwendung (-Befehl) verwendet wird. In diesen Fällen StartupWMClass=ist oft die Leitung die Lösung.
Jacob Vlijm
quelle
Danke Jacob. Dies löste das Problem. Für den Datensatz lautete die WM_CLASS-Zeichenfolge "rdesktop", "rdesktop".
Clayton
@clayton perfekt, froh, dass es funktioniert hat.
Jacob Vlijm
1
Ihr Schritt 2 reduziert werden, wie xprop können Sie passieren im Atom zurückgegeben werden soll, laufen xprop WM_CLASSist genug
johndrinkwater
@johndrinkwater Absolut, danke für den Hinweis. Es ist mehr als ein Jahr her, über 14 Monate ist wie eine andere Person es geschrieben hat :). Wird bearbeitet ...
Jacob Vlijm
@ jacob-vlijm :) bin gerade darauf gestoßen, als
ich
2

für mich xprop|grep WM_CLASSgab WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(ich hatte dieses Problem mit pycharm für Python)

Es war das sun-awt-X11-XFramePeer, was ich als String in meiner .desktop-Datei brauchte (ohne Anführungszeichen) - Danke!

user245936
quelle
Ich fügte StartupWMClass=sun-awt-X11-XFramePeermeinen hinzu und nichts passierte! Befindet sich die .desktopDatei im Home-Ordner?
anon58192932
0

Nachdem Sie die Symbole an der richtigen Stelle platziert haben, müssen Sie xserver einfach neu starten (abmelden und wieder anmelden).
Versuchen Sie auch, den Icon-Cache zu aktualisieren (fügen Sie einfach den folgenden Code in das Terminal ein):

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
Frostherz
quelle