启动应用程序时缺少图标


12

我在/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
终端=假
图标= mswindows
类型=应用
分类=网络;
Exec = rdesktop win7shared1 -g 1680x1000

名称= win7shared1
GenericName = rdesktop
Comment =打开Windows桌面

关键字= Windows
StartupNotify =假

Answers:


15

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

  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文件)正确启动时,但另一个图标仅带有通用图标(问号)出现时,应用程序窗口和启动器很可能由于某种原因未连接,并且启动器没有启动将应用程序的窗口识别为“他的”。当使用脚本或非标准应用程序(-命令)时,通常是这种情况。在这些情况下,StartupWMClass=通常是解决方案。

谢谢雅各。这样就解决了问题。出于记录目的,WM_CLASS字符串为“ rdesktop”,“ rdesktop”。
克莱顿2014年

@clayton完美,很高兴它起作用。
Jacob Vlijm 2014年

1
您的步骤2可以减少,因为xprop允许您传递要返回的原子,运行xprop WM_CLASS就足够了
johndrinkwater

@johndrinkwater绝对感谢您的提示。一年多以前,超过14个月就像另一个人写的那样:)。将会编辑...
Jacob Vlijm '16

@ jacob-vlijm :)在研究尴尬的xprop行为时碰到了它
johndrinkwater

2

xprop|grep WM_CLASS给了WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(我是有pycharm的蟒蛇这个问题)

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


我加入StartupWMClass=sun-awt-X11-XFramePeer了我,什么都没发生!该.desktop文件位于主文件夹中吗?
anon58192932 '17

0

将图标放在正确的位置后,您只需重新启动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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.