小言_互联网的博客

Ubuntu18.04 同一个程序显示两个图标,收藏夹图标不合并问题解决

443人阅读  评论(0)

一、同一个程序运行时的窗口图标与收藏夹图标不合并的问题:

在网上看到了很多都在复制粘贴别人的内容,都是让添加StartupWMClass,有时候这样并不会生效,另外收藏夹的图标添加有两种情况:
1)从桌面上自己创建的快捷方式.desktop文件右键收藏(在/.local/share/applications下)
2)从“全部应用”那里直接右键收藏(全部应用列表里的.desktop文件在/usr/share/applications下)

二、导致StartupWMClass不生效的原因:

网上说的那么简单,却没有生效,所以只能自己开始摸索到底为啥没有生效,最后发现是因为快捷方式名称与获取到的那个名称并不一致导致的,即.desktop文件中的Name=XXX,与网上那种鼠标检测的运行窗口名称不一致。比如我的Pycharm就是名为Pycharm的图标,然后右键添加至收藏夹,鼠标指到收藏夹的图标上显示的就是名字“Pycharm”,可是运行窗口检测到的名称是“jetbrains-pycharm”,这导致了怎么添加StartupWMClass都是无效的,而网上到处都千篇一律在强调添加时StartupWMClass=XXX后面的名字要与检测到的名字一致…没人说这个更关键的问题。

三、解决方案

1、获取程序窗口名

运行图标不合并的程序,窗口不要最小化,然后打开终端,输入:

xprop WM_CLASS

鼠标将变成一个十字,此时点击正在运行的那个程序窗口,可以看到终端获得一个输出(以pycharm为例)

第二个名称就是我们要用到的,待会要复制下来。

2、修改快捷方式.desktop文件(即应用程序的启动图标)

首先说明一下,显示程序图标的位置,有三个地方,收藏夹、全部应用、桌面,为了确保不管从哪里运行同一个程序,都能成功合并,进行如下操作:
(1)首先确认要改的程序有几处图标,一般“全部应用”这一处必定存在,确保这一处存在后,继续往下操作;
(2)从收藏夹移除要解决的问题图标,从“全部应用”重新右键添加至收藏夹;
(3)修改“全部应用”中图标的.desktop文件,该图标的路径:/usr/share/applications
找到要修改的程序图标(以Pycharm图标为例),使用文本编辑器打开,或在终端开启编辑:

sudo gedit pycharm.desktop


把鼠标检测到的程序窗口名称(第二个名字)复制一下,在最后添加一行:(其他行不用管,每个人快捷方式定义参数不一定都一样,能用就行,我上面这个截图,有些参数就不是必须的)

StartupWMClass=jetbrains-pycharm			# 名字改成之前终端输出的第二个名字

修改完特别要注意,看看你的上面是不是有一行 Name=XXX 的定义,定义的Name是不是和鼠标检测出的名称一致!!!不一致就把Name也改成检测到的名称。
就是这个名字不一致,导致的添加了StartupWMClass却始终不生效,所以不管你鼠标识别的那个名称多不顺眼,也要把这个Name值改的跟他一样,保存文件并关闭。

(4)如果本来桌面上就没有快捷方式图标或者你不想要桌面这个,删除后跳至第(5)步即可。
如果桌面上还有一个该程序的快捷方式图标,并且想要桌面上保留这个程序的快捷方式,那么执行第(3)步中同样的操作,确保桌面上这个图标.desktop文件名称也一致,桌面上图标文件的路径:/.local/share/applications (注意:.local是主目录下的隐藏文件夹)
(当然要是不想这么费劲,也可以直接删除桌面上的快捷方式,把第(3)步修改的那个图标复制到桌面上)

(5)退出运行的程序窗口,把鼠标指到收藏夹中那个程序图标上去,看看名字是不是变为你刚刚修改后的Name(即修改后是否与鼠标检测的名称一致了),如果是,那再次启动程序的时候,就会发现之前一直无效的问题终于解决了,图标合并了。(下图中我开启了两个pycharm窗口,全都合并在了收藏夹最后这个pycharm图标上了)

参考链接:https://www.cnblogs.com/bulala233/p/10267355.html

PS:所以网上很多东西可以参考,但是那些并没有效果的,查来查去都是人云亦云,一篇文章复制的满天飞,不如干脆自己去折腾一下,比继续看这些翻来覆去一个样的资料有用的多。程序员要大胆,小手一动,只要关键数据提前留下来,大不了重装…奇怪的知识就是这么增加的。
希望能帮到那些查遍资料还是始终无法合并图标的人。


转载:https://blog.csdn.net/Alibutter/article/details/112827951
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场