启动应用程序时图标丢失

我在/usr/share/applications中创建了一个启动rdesktop的/usr/share/applications启动器。 该文件指定了一个图标名称,我已将图标添加到:

 /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 

然后我将启动器吸入任务栏,并在任务栏中显示具有正确徽标的启动器。 但是,当我启动任务时,会在任务栏中创建一个新图标,该图标位于中心,并带有问号。

我需要哪些图标以及在哪里,以便任务栏在启动时显示应用程序的正确图标?

.desktop文件内容:

 [桌面入口]
版本= 1.0
终端=假
图标= MsWindows中
类型=应用
分类=网络;
 Exec = rdesktop win7shared1 -g 1680x1000

 NAME = win7shared1
 GenericName =的rdesktop
评论=打开Windows桌面

关键词=视窗
 StartupNotify您= FALSE

最有可能解决您问题的方法是执行以下操作:

  1. 打开应用程序
  2. 运行时,打开终端并键入:

     xprop WM_CLASS 
  3. 然后单击打开的应用程序窗口。

  4. 输出看起来像(示例gedit ):

     WM_CLASS(STRING) = "gedit", "Gedit" 
  5. 使用第一部分(在本例中为gedit ),在.desktop文件中组成一行:

     StartupWMClass= 

    (将替换为xprop WM_CLASS的实际(第一部分)输出,例如StartupWMClass=gedit

现在再试一次(您可能需要注销/进入),很可能应用程序将在其自己的图标下显示在启动器中。

说明

  • 当应用程序从启动器( .desktop文件)正确启动时,但另一个图标显示通用图标 (问号)时,应用程序窗口和启动器很可能由于某种原因未连接,并且启动器不认为应用程序的窗口是“他的”。 当使用脚本或非标准应用程序(-command)时,通常会出现这种情况。 在这些情况下, StartupWMClass=行通常是解决方案。

对我来说xprop|grep WM_CLASS给了WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce" (我在pycharm for python中遇到了这个问题)

我需要将sun-awt-X11-XFramePeer作为我的.desktop文件中的字符串(没有引号) – 谢谢!

将图标放到正确的位置后,您应该只需重新启动xserver(注销并重新登录)。
还尝试更新图标缓存(只需将下面的代码粘贴到终端):

 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