ubuntu部分图标缺失。这里说的缺失不是指图标不会显示,而是说图标虽然会显示,但是显示不正确。比如显示为一个空白方块或者红色的"禁止"图标。
简要列出部分缺失的图标:
- 文件夹图标
- wifi图标,performance图标,setting的小齿轮图标等等
- 几乎所有ubuntu默认安装的软件都缺失图标
- 一些后来安装的第三方应用
- …
问题定位
以安装的百度网盘为例,其图标缺失,无法正确显示。查看其dekstop文件:
cd /etc/share/applications
vim baidunetdisk.desktop
其文件内容如下:
注意Icon字段,该字段指示了图标文件的文件名。这说明百度网盘显示的图标,其文件名为baidunetdisk
。
在该desktop文件中,Icon字段没有指定绝对路径名(有的desktop文件中直接指定绝对路径名),那么该图标文件到底在哪里呢?
关于这一点,可以参考freedesktop网站关于Desktop Entry的标准。该网站包含一系列有关图形化用户界面的标准,其中也包含对于图标文件路径搜索算法的说明。
在找到该文件之后,发现该文件是一个svc文件。参阅freedesktop网站关于图标的标准,检查这些图标可能存在的文件夹,发现这些图标文件都是存在的,不过都是svc格式。
以/usr/share/icons/hicolor/scalable
文件夹为例(关于为什么是这个文件夹请参考freedesktop网站的相关标准),该文件夹下存在一些列svc格式的图标,包括我们的baidunetdisk
。
这些图标正是未正确显示的图标当中的一部分,而其他正确显示的图标,发现其格式是png的。
因此猜测,桌面环境用于解析svc格式图片的某些功能出现问题。
解决问题
查找与svc有关的软件包:
sudo aptitude search '~nsvc'
关于aptitude的使用请参考debian官网的用户手册,其中详细阐述了apt、apt-get、aptitude的区别和使用场景,这里不再赘述。如果不了解aptitude,直接将这行命令丢到chatgpt里面,让他帮你分析。😃
发现了librsvc和librsvc-common这两个包,尝试将其重新安装:
sudo apt install --reinstall librsvg2-2 ibrsvg2-common
log out,再log in。问题解决。
其他
起先,由于我的ubuntu gnome桌面进行了个性化配置,因此自然而然地认为是个性化配置导致的后果。如果各位因为个性化配置导致桌面环境混乱,而自己想要恢复之前的ubuntu默认桌面环境又遇到困难。此时,可以考虑使用以下命令恢复ubuntu默认桌面环境:
dconf reset -f /org/gnome/
这会清除所有的个性化设置,并将桌面环境置为默认风格。