了解* nix图标的path

有人可以请解释,为什么很多程序有这样的path图标:/ usr / share / program / icons / hicolor / 16×16 / …

我不明白为什么hicolor ,为什么16×16,32×32

是否有任何function(例如在GTK中)从这种path自动获取适当的图标?

谢谢!

这些图标路径由图标主题规范标准化。 理由是,所有的应用程序都可以将它们的默认图标安装到hicolor主题中(这是默认的主题,这意味着如果一个图标从其他主题中丢失,将使用hicolor的版本)。

此外,程序可以请求与所提供的图标大小不同的图标,比如说37×37,系统将选择最合适的可用大小(如32x32 ),并将其缩放到所需的大小。

如果有人想要覆盖应用程序的图标,比如为视力不好的用户制作高对比度的黑白版本,那么他们所要做的就是制作一个同名的图标,并将其放在高位hicolor黑白主题,它将覆盖hicolor图标。

你问的功能也存在。 在GTK中,有一些函数需要const gchar *icon_name参数,比如gtk_image_new_from_icon_name() 。 这些将使用您从当前主题提供的名称加载图标,如果它不存在于当前主题中,则从hicolor主题中hicolor

术语“hicolor”是标准图标集的名称,它是所有其他图标集的后备,也就是说,如果在当前图标集中找不到应用程序的图标(例如/usr/share/icons/oxygen )接下来搜索hicolor目录。

16×16,32×32意味着存储在该目录中的图像的大小,因为图标存储为简单的PNG文件,其仅包含一个图像(不同于例如mac上的图标)。

如果这个问题不是“为什么”,“色”? 正如其他人所回答的,但“为什么使用文件系统作为树形数据库?” 答案是大多数unix文件系统(所有的旧文件系统)在步行路径中有一个目录中有超过1000个条目的时候出现故障。

因为这些文件系统中的目录必须线性搜索。

一些更现代的文件系统支持O(log N)搜索,并可以有效地处理更高的计数。