Falta el icono cuando se inicia la aplicación


12

He creado un /usr/share/applicationsiniciador de aplicaciones que inicia rdesktop. El archivo especifica un nombre de icono y he agregado los iconos 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

Luego coloco el iniciador en la barra de tareas y el iniciador con el logotipo correcto es visible en la barra de tareas. Sin embargo, cuando comienzo la tarea, se crea un nuevo icono en la barra de tareas, un cuadrado con un signo de interrogación en el centro.

¿Qué iconos necesito y dónde, para que la barra de tareas muestre el icono correcto para la aplicación cuando se inicie?

El contenido del archivo .desktop:

[Entrada de escritorio]
Versión = 1.0
Terminal = falso
Icono = mswindows
Tipo = Aplicación
Categorías = Red;
Exec = rdesktop win7shared1 -g 1680x1000

Nombre = win7shared1
GenericName = rdesktop
Comentario = Abrir el escritorio de Windows

Palabras clave = Windows
StartupNotify = false

Respuestas:


15

Lo que probablemente resolverá su problema es hacer lo siguiente:

  1. Abrir la aplicación
  2. Cuando se esté ejecutando, abra una terminal y escriba:

    xprop WM_CLASS
    
  3. Luego haga clic en la ventana abierta de la aplicación.

  4. La salida se verá así (ejemplo gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Use la primera parte (en este caso sería gedit) para componer una línea en su .desktoparchivo:

    StartupWMClass=<string>
    

    (reemplace <string>con la salida real (primera parte de) de xprop WM_CLASS, por ejemplo StartupWMClass=gedit)

Ahora intente nuevamente (puede que tenga que cerrar sesión / iniciar sesión), lo más probable es que la aplicación aparezca en el iniciador con su propio icono.

Explicación

  • Cuando una aplicación se inicia correctamente desde un iniciador ( .desktoparchivo), pero aparece otro ícono con solo un ícono genérico (signo de interrogación), lo más probable es que la ventana de la aplicación y el iniciador no se conecten por alguna razón, y el iniciador no reconocer la ventana de la aplicación como "su". Este suele ser el caso cuando se utiliza un script o una aplicación no estándar (-command). En esos casos, la StartupWMClass=línea suele ser la solución.

Gracias Jacob Esto resolvió el problema. Para el registro, la cadena WM_CLASS era "rdesktop", "rdesktop".
clayton

@clayton perfecto, me alegro de que funcionó.
Jacob Vlijm

1
Su paso 2 se puede reducir, ya que xprop le permite pasar el átomo que desea devolver, la ejecución xprop WM_CLASSes suficiente
johndrinkwater

@johndrinkwater Absolutamente, gracias por la pista. Hace más de un año, más de 14 meses es como lo escribió otra persona :). Se editará ...
Jacob Vlijm

@ jacob-vlijm :) lo descubrí mientras investigaba un comportamiento incómodo de xprop
johndrinkwater

2

para mí xprop|grep WM_CLASSdio WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(estaba teniendo este problema con pycharm para python)

Era lo sun-awt-X11-XFramePeerque necesitaba como cadena en mi archivo .desktop (sin comillas) - ¡Gracias!


¡Agregué StartupWMClass=sun-awt-X11-XFramePeeral mío y no pasó nada! ¿El .desktoparchivo se encuentra en la carpeta de inicio?
anon58192932

0

Después de colocar los iconos en el lugar correcto, simplemente debe reiniciar xserver (cerrar sesión y volver a iniciar sesión).
También intente actualizar el caché de iconos (simplemente pegue el código a continuación en el terminal):

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.