Icon mancher Programmen wird in der Fensterleiste nicht angezeigt

lsb-release -id && plasmashell -v && uname -a
Distributor ID: openSUSE project
Description:    openSUSE Leap 42.3
plasmashell 5.8.7
Linux linux64 4.4.87-25-default #1 SMP Wed Sep 13 07:19:13 UTC 2017 (3927ef5) x86_64 x86_64 x86_64 GNU/Linux

Das Icon mancher Programme wird in der Fensterleiste nicht angezeigt:

http://openmafia.org/~osf/Screenshots/Auswahl_224.jpg

Hier zum Beispiel google-earth und Yast-Software.
Aber ebenso JDownloader.
Wobei Yast2 ja wieder angezeigt wird.

Kann jemand sagen, was da falsch läuft?
Liegt es evtl daran, das diese Programme zuerst ein Installationsfenster aufrufen und dann erst das jeweilige Anwendungsfenster?

Die Icons werden auch nicht in der Titelleiste des Anwendungsfensters angezeigt.

Tja, es ist die Aufgabe der Programme, das Fenster-Icon entsprechend zu setzen…
Wenn die Anwendung das nicht tut, wird eben das generische X Icon benutzt (bzw. das Wayland-Icon in Wayland).

Keine Ahnung zu google-earth, aber das YaST2 “Problem” existiert schon eine Weile (auch in KDE4) soweit ich mich erinnern kann.
Es gab da aber vor nicht allzulanger Zeit einige Änderungen in Factory, könnte also sein dass das in zukünftigen Versionen “behoben” ist.

Die Fensterleiste versucht den entsprechenden Anwendungsmenü-Eintrag zu finden, um das dort festgelegte Icon anzuzeigen.
Falls das nicht klappt, wird eben dann auch das Fenster-Icon genommen denke ich.

Übrigens, die Fenstereigenschaften (inklusive dem gesetzten Icon) kannst du mit “xprop” anzeigen lassen.

PS:

Und als “Beweis” dass das kein Plasma-spezifisches Problem ist, hier ein Bildschirmfoto von IceWM (Leap 42.3): :wink:

$ xprop
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x2a00056
_ICEWM_TRAY(CARDINAL) = 0
_WIN_LAYER(CARDINAL) = 4
_NET_WM_DESKTOP(CARDINAL) = 0
_WIN_WORKSPACE(CARDINAL) = 0
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_STATE(ATOM) = 
_WIN_STATE(CARDINAL) = 0, 1023
_NET_FRAME_EXTENTS(CARDINAL) = 2, 2, 19, 2
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _NET_WM_ACTION_STICK, _NET_WM_ACTION_CHANGE_DESKTOP
_NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = 
_NET_WM_VISIBLE_NAME(UTF8_STRING) = "YaST2"
_NET_WM_ICON_NAME(UTF8_STRING) = 
XdndAware(ATOM) = BITMAP
WM_NAME(STRING) = "YaST2"
_NET_WM_NAME(UTF8_STRING) = "YaST2"

Zum Vergleich das “YaST-Kontrollzentrum” Fenster (mit Icon):


$ xprop
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x2800013
_ICEWM_TRAY(CARDINAL) = 0
_WIN_LAYER(CARDINAL) = 4
_NET_WM_DESKTOP(CARDINAL) = 0
_WIN_WORKSPACE(CARDINAL) = 0
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
_NET_WM_STATE(ATOM) = 
_WIN_STATE(CARDINAL) = 0, 1023
_NET_FRAME_EXTENTS(CARDINAL) = 2, 2, 19, 2
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _NET_WM_ACTION_STICK, _NET_WM_ACTION_CHANGE_DESKTOP
_NET_WM_VISIBLE_ICON_NAME(UTF8_STRING) = 
_NET_WM_VISIBLE_NAME(UTF8_STRING) = "YaST-Kontrollzentrum @ amiga"
_NET_WM_ICON(CARDINAL) =     Icon (48 x 48):
                                                    
                                                    
                                                    
                                                    

                ░▒▒▒▒▒░                             
               ░▒     ░░▒░                          
                ░░       ░▒                         
                 ▒░        ▒                        
                  ▒░        ▒                       
                   ▒         ▒                      
                    ▒        ░░                     
                     ▒        ▒                     
        ▒             ▒       ░░                    
       ░░▒           ░░        ▒                    
       ▒░░▒         ░░         ▒                    
       ▒░ ░▒       ░░          ░                    
       ▒░░ ░▒     ░░           ░                    
       ▒░░  ░▒   ░░            ░                    
       ▒░░░  ░░ ░▒             ▒                    
       ▒░░░░  ░▒▒              ▒                    
       ░░░░░░  ░               ▒                    
       ░▒░░░░░                 ▒                    
        ▒░░░░░░░░           ░░ ░▒                   
        ░▒░░░░░░░░░░     ░░░░░░░░░░░                
         ▒▒░░░░░░░░░░░░░░░░░░░░░░   ░               
          ▒░░░░░░░░░░░░░░░░░░░░░  ░  ░              
           ▒▒░░░░░░░░░░   ░░░░░  ░░░ ░░             
            ░▒░░░░      ░  ░░░  ░░░░░ ░░            
              ░▒▒▒░░░░▒▒░▒░░░  ░░░░░░░ ░░           
                ░░░▒░░░  ░▒░  ░░░░░░░░░ ░░          
                          ░  ░░░░░░░░░░░ ░░         
                          ░  ░░░░░░░   ░░ ░░        
                           ░  ░░░░░     ░░ ░░       
                            ░  ░░░          ░░      
                             ░  ░            ░      
                              ░         ░    ░░     
                              ░░    ░  ░     ░░     
                               ░░   ░ ░░     ░░     
                                ░░ ░░░░░░░  ░░░     
                                ░░░ ░░░    ░░░░     
                             ░░░░░░░ ░░░░░░░░░░     
                              ░░░░░░░░░░░░░░░░      
                                    ░░░░░░░░░       
                                      ░░░░░░        

                                                    
                                                    
                                                    
                                                    




_NET_WM_ICON_NAME(UTF8_STRING) = 
XdndAware(ATOM) = BITMAP
WM_NAME(STRING) = "YaST-Kontrollzentrum @ amiga"
_NET_WM_NAME(UTF8_STRING) = "YaST-Kontrollzentrum @ amiga"
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x3e, 0x7e, 0x0, 0x0
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_XEMBED_INFO(_XEMBED_INFO) = 0x0, 0x1
WM_CLIENT_LEADER(WINDOW): window id # 0x2800007
WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
_NET_WM_PID(CARDINAL) = 2876
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 41943046
WM_CLASS(STRING) = "y2controlcenter", "y2controlcenter"
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        user specified location: 138, 530
        user specified size: 680 by 420
        program specified minimum size: 182 by 157
        window gravity: NorthWest

Der Unterschied dürfte klar sein…

Ich hab jetzt auch mal google-earth (6) gestartet, auch da ist kein Icon (oder Icon Name) in den X Properties gesetzt:

$ xprop

_ICEWM_TRAY(CARDINAL) = 0
_WIN_LAYER(CARDINAL) = 4
_NET_WM_DESKTOP(CARDINAL) = 0
_WIN_WORKSPACE(CARDINAL) = 0
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_STATE(ATOM) = 
_WIN_STATE(CARDINAL) = 0, 1023
_NET_FRAME_EXTENTS(CARDINAL) = 2, 2, 19, 2
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _NET_WM_ACTION_STICK, _NET_WM_ACTION_CHANGE_DESKTOP
_NET_WM_VISIBLE_NAME(UTF8_STRING) = "Google Earth"
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 46137813
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0xf7, 0x10, 0x0, 0x0, 0x0
_NET_WM_NAME(UTF8_STRING) = "Google Earth"
WM_CLIENT_LEADER(WINDOW): window id # 0x2c00007
_NET_WM_PID(CARDINAL) = 26585
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x3e, 0x7e, 0x0, 0x0
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_NAME(STRING) = "Google Earth"
WM_LOCALE_NAME(STRING) = "de_AT.UTF-8"
WM_CLASS(STRING) = "googleearth-bin", "Googleearth-bin"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                window id # of group leader: 0x2c00007
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                user specified location: 15, 30
                program specified location: 15, 30
                user specified size: 960 by 640
                program specified size: 960 by 640
                program specified minimum size: 766 by 391
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "amiga"
WM_COMMAND(STRING) = { "./googleearth-bin" }

http://susepaste.org/images/15516025.png

Ich hab jetzt auch mal google-earth (6) gestartet, auch da ist kein Icon (oder Icon Name) in den X Properties gesetzt:

Kann man das evtl. ändern?

JDownloader geht jetzt, da hab ich ein anderes Icon angewählt.

Man müsste den Programmcode ändern. Wie gesagt, das Programm setzt das Icon wenn es das Fenster erzeugt (bzw. auch nachher).

Plasma5’s Fensterleiste nimmt das Icon aber wie erwähnt vorzugsweise vom Anwendungsmenü.
For “problematische” Programme gibts ein “Regel”-File (/etc/xdg/taskmanagerrulesrc), evtl. könnte man da was machen.
Ich weiß aber auch nicht genau wie das funktioniert…

Für Google Earth könnte ein Mapping Eintrag wie dieser helfen, das ist aber ungetestet und nur an Hand der anderen Einträge geraten:

google-earth=Google Earth

Ich bin mir nicht sicher, ob die Lösung wirklich so einfach ist.

Ich schreibe selbst Applikationen unter Linux / Qt. Dabei habe ich (unter Leap 42.3) eines, bei dem das Icon in der Fensterleiste angezeigt wird und eines, bei dem es eben nicht angezeigt wird.
Der betreffende Code ist identisch.

Ich habe bis jetzt nicht herausgefinden können, woran es liegt.

Korrektur:

… die Lösung ist wirklich so einfach.

Ich habe mir nach meinem Post von gestern nochmals die Ausgabe von xprop für meine selbst geschriebenen Applikationen angeschaut.

Das Ergebnis war tatsächlich, daß nur eine von beiden Applikationen ein gültiges Icon besaß und bei der anderen hatte ich dem Icon einen falschen Namen gegeben. Nach Korrektur kommen beide Applikationen mit ihrem Icon in der Fesnterleiste hoch.