Ubuntu系统下软件打开后与状态栏(dock)的图标不重合问题解决
描述
比如我的Zeal软件和QtCreator(带有ROS plugin),启动时会出现两个图标。
图中序号1和2是软件的快速启动图标,3是软件启动以后的停靠在dock上的图标。
可以看出来他们俩并不像左上角谷歌浏览器一样,启动后的图标可以重叠在原图标上。
原因
/usr/share/applications/ 路径下的启动文件不存在, 或者存在但和 ~/.local/share/applications/ 路径下的启动文件内容不一致。
有些软件在启动后可能会自动在 ~/.local/share/applications/ 路径下创建启动文件XXX.desktop, 可以先修改此文件, 之后再将此文件的写入权限取消, 这样在之后启动软件时就不会自动创建/恢复它的默认启动文件了。
解决方法
1)检查两个路径下是否存在启动文件, 保留一个即可
如果只有 /usr/share/applications/ 路径下存在启动文件, 直接做完第2)步即可.
如果 ~/.local/share/applications/ 路径下存在启动文件, 这很大可能是软件启动时会自动生成并覆盖的, 保留此文件即可, 做第2)步和第3)步.
2)修改启动文件 XXX.desktop
在启动项文件里添加 StartupWMClass 属性。
我们把鼠标移动到新停靠的图标上,查看它的名称是什么,并把这个名称填入 StartupWMClass 属性内。
这里可以看出一个是QtCreator,一个是Zeal.
指令:
cd /usr/share/applications/
# 或
cd ~/.local/share/applications/
sudo vim Zeal.desktop
sudo vim QtCreator-ROS.desktop
修改后的启动文件为:
# Zeal.desktop
[Desktop Entry]
Type=Application
Name=Zeal
Exec=/usr/bin/zeal
Icon=/usr/share/icons/hicolor/64x64/apps/zeal.png
Terminal=false
Categories=Applition
StartupWMClass=Zeal # 注意这一行
# QtCreator-ROS.desktop
[Desktop Entry]
Type=Application
Exec=/home/vance/softwares/QtCreator-4.8.0-ROS/latest/bin/qtcreator-ros %f
Path=/home/vance/softwares/QtCreator-4.8.0-ROS/latest
Name=QtCreator-ROS(4.8.0)
GenericName=The IDE of choice for Qt development.
GenericName[de]=Die IDE der Wahl zur Qt Entwicklung
Icon=QtProject-qtcreator
Terminal=false
Categories=Development;IDE;Qt;
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs;
StartupWMClass=QtCreator # 注意这一行
3)取消写入权限
sudo chmod -w XXX.desktop
结果: