启动应用程序时图标丢失
我在/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
最有可能解决您问题的方法是执行以下操作:
- 打开应用程序
-
运行时,打开终端并键入:
xprop WM_CLASS
-
然后单击打开的应用程序窗口。
-
输出看起来像(示例
gedit
):WM_CLASS(STRING) = "gedit", "Gedit"
-
使用第一部分(在本例中为
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