[Dock] 任务栏上文件管理器使用了微信图标
Tofloor
poster avatar
翻过山峰看见云
deepin
2021-07-13 18:49
Author

如下图,在任务栏上文件管理器打开后使用了微信的图标,前天更新后就这样了

Reply Favorite View the author
All Replies
lanxing0821
deepin
2021-07-13 20:41
#1

我猜应该是StartupWMClass的问题,排查一下原因:
        1、找到文件管理器的.desktop文件,看看里面的Icon字段(=号后面)的路径是否指向了微信的图标,有则改之,没有则看下一步。
        2、找到微信的.desktop文件,看看里面的StartupWMClass字段(=号后面)的WMClass(窗口类)是否指向了文件管理器的WMClass,有则改成微信自己的WMClass,或者删除StartupWMClass字段。
    
PS:
        1、如何获得应用程序的WMClass(窗口类)
            首先运行一个应用实例(这里以Firefox为例),然后在终端运行:

xprop WM_CLASS

当鼠标指针变形后(可能是十字形)点击刚才的Firefox浏览器窗口。终端输出:

WM_CLASS(STRING) = "Navigator", "Firefox"

            这里的Navigator和Firefox都是Firefox浏览器的WMClass,我们只取其中一个就行。

        2、如何找到应用程序的.desktop文件(桌面配置文件)
            桌面配置文件一般存放在系统目录下的$XDG_DATA_DIRS/applications目录,或者用户目录下的~/.local/share/applications目录。
            系统目录下的$XDG_DATA_DIRS/applications可以通过以下命令把它们列出来:

for var in ${XDG_DATA_DIRS//:/ };do [ -d "$var/applications" ] && echo $var/applications ;done

            在我的电脑上输出是这个样子:

/var/lib/flatpak/exports/share/applications
/usr/local/share/applications
/usr/share/applications

/var/lib/flatpak/exports/share/applications目录存放我们使用flatpak命令安装应用程序时所产生的桌面配置文件。
/usr/local/share/applications目录一般存放我们通过编译安装应用程序时所产生的桌面配置文件。
/usr/share/applications目录存放我们通过apt之类命令安装应用程序时所产生的桌面配置文件。

Reply View the author
翻过山峰看见云
deepin
2021-07-13 22:11
#2
lanxing0821

我猜应该是StartupWMClass的问题,排查一下原因:
        1、找到文件管理器的.desktop文件,看看里面的Icon字段(=号后面)的路径是否指向了微信的图标,有则改之,没有则看下一步。
        2、找到微信的.desktop文件,看看里面的StartupWMClass字段(=号后面)的WMClass(窗口类)是否指向了文件管理器的WMClass,有则改成微信自己的WMClass,或者删除StartupWMClass字段。
    
PS:
        1、如何获得应用程序的WMClass(窗口类)
            首先运行一个应用实例(这里以Firefox为例),然后在终端运行:

xprop WM_CLASS

当鼠标指针变形后(可能是十字形)点击刚才的Firefox浏览器窗口。终端输出:

WM_CLASS(STRING) = "Navigator", "Firefox"

            这里的Navigator和Firefox都是Firefox浏览器的WMClass,我们只取其中一个就行。

        2、如何找到应用程序的.desktop文件(桌面配置文件)
            桌面配置文件一般存放在系统目录下的$XDG_DATA_DIRS/applications目录,或者用户目录下的~/.local/share/applications目录。
            系统目录下的$XDG_DATA_DIRS/applications可以通过以下命令把它们列出来:

for var in ${XDG_DATA_DIRS//:/ };do [ -d "$var/applications" ] && echo $var/applications ;done

            在我的电脑上输出是这个样子:

/var/lib/flatpak/exports/share/applications
/usr/local/share/applications
/usr/share/applications

/var/lib/flatpak/exports/share/applications目录存放我们使用flatpak命令安装应用程序时所产生的桌面配置文件。
/usr/local/share/applications目录一般存放我们通过编译安装应用程序时所产生的桌面配置文件。
/usr/share/applications目录存放我们通过apt之类命令安装应用程序时所产生的桌面配置文件。

按照你说的,看了下两个desktop文件,都没有问题

Reply View the author
lanxing0821
deepin
2021-07-14 07:42
#3

绝对是StartupWMClass的问题。再找找,看看有没有其它desktop文件也使用了微信图标,同时StartupWMClass字段指向了文件管理器的WMClass。深度开发的桌面也是要符合Desktop Entry Specification (桌面输入规范)的,不可能自己另搞一套。一般来说,任务栏中的应用图标会优先显示窗口类图标。如果没有,就从desktop文件的Icon字段读取。造成这种情况,只能说你的applications目录 真的太乱了。

Reply View the author
翻过山峰看见云
deepin
2021-07-14 19:15
#4
lanxing0821

绝对是StartupWMClass的问题。再找找,看看有没有其它desktop文件也使用了微信图标,同时StartupWMClass字段指向了文件管理器的WMClass。深度开发的桌面也是要符合Desktop Entry Specification (桌面输入规范)的,不可能自己另搞一套。一般来说,任务栏中的应用图标会优先显示窗口类图标。如果没有,就从desktop文件的Icon字段读取。造成这种情况,只能说你的applications目录 真的太乱了。

给文件管理器添加了StartupWMClass后重启就好了,感谢帮助。

Reply View the author
翻过山峰看见云
deepin
2021-07-14 19:15
#5
lanxing0821

绝对是StartupWMClass的问题。再找找,看看有没有其它desktop文件也使用了微信图标,同时StartupWMClass字段指向了文件管理器的WMClass。深度开发的桌面也是要符合Desktop Entry Specification (桌面输入规范)的,不可能自己另搞一套。一般来说,任务栏中的应用图标会优先显示窗口类图标。如果没有,就从desktop文件的Icon字段读取。造成这种情况,只能说你的applications目录 真的太乱了。

给文件管理器添加了StartupWMClass后重启就好了,感谢帮助。

Reply View the author