应用程序启动时缺少图标

应用程序启动时缺少图标

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

/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
终端=false
图标=mswindows
类型=应用程序
类别=网络;
执行=rdesktop win7shared1 -g 1680x1000

名称=win7shared1
通用名称=rdesktop
注释=打开 Windows 桌面

关键字=Windows
StartupNotify=false

答案1

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

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

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

  4. 输出将如下所示(示例gedit):

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

    StartupWMClass=<string>
    

    <string>用 的实际输出(第一部分)替换xprop WM_CLASS,例如StartupWMClass=gedit

现在再试一次(您可能必须注销/登录),很可能该应用程序会出现在启动器中其自己的图标下。

解释

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

答案2

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

它是sun-awt-X11-XFramePeer我需要的 .desktop 文件中的字符串(不带引号) - 谢谢!

答案3

将图标放到正确位置后,您只需重新启动 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

相关内容