.desktop文件:如何指定图标路径

我查看了12.04 Ubuntu系统上的.desktop文件,其中许多文件没有针对其图标文件的完整路径规范。 它更像是:

Icon=anjuta 

要么

 Icon=vlc 

要么

 Icon=application-x-clementine 

是否存在可以存储图标的通用路径,以便这可以工作? 如果没有,这是如何工作的? 如果我尝试用自己的图标做同样的事情,我必须指定完整的路径。

例如

 Icon=/usr/local/share/my-icon.png 

工作正常,但是

 Icon=my-icon.png 

将失败。

欢迎任何forms的帮助!

是的,查找非常复杂。 以下是目录布局的freedesktop图标规范 :

在一组目录中查找图标和主题。 默认情况下,应用程序应在$ HOME / .icons(为了向后兼容),$ XDG_DATA_DIRS / icons和/ usr / share / pixmaps(按此顺序)中查找 。 应用程序可以进一步将它们自己的图标目录添加到该列表中,并且用户可以扩展或更改列表(以应用程序/桌面特定的方式)。在每个目录中,主题被存储为子目录。 通过具有相同名称的子目录,主题可以分布在几个基本目录中。 这样,用户可以扩展和覆盖系统主题。

为了让第三方应用程序安装他们的图标,应该总是存在一个名为“hicolor” 1的主题。 hicolor主题的数据可从http://www.freedesktop.org/software/icon-theme/下载。 如果在当前主题中找不到图标,则需要实现查看“hicolor”主题。

每个主题都存储为基目录的子目录。 主题的内部名称是子目录的名称,尽管主题指定的用户可见名称可能不同。 因此,主题名称区分大小写,并且仅限于ASCII字符。 主题名称也可能不包含逗号或空格。

在至少一个主题目录中必须有一个名为index.theme的文件来描述主题。 使用在按顺序搜索基目录时找到的第一个index.theme。 该文件描述了主题的一般属性。

在主题目录中也是一组包含图像文件的子目录。 每个目录都包含为特定标称图标大小设计的图标,如index.theme文件所述。 允许子目录有几个级别,例如主题为“hicolor”的子目录“48×48 / apps”最终会以$ basedir / hicolor / 48×48 / apps结尾。

图像文件必须是以下类型之一:PNG,XPM或SVG,扩展名必须为“.png”,“。xpm”或“.svg”(小写)。 对SVG文件的支持是可选的。 不支持SVG的实现应该忽略任何“.svg”文件。 除此之外,可能还有一个附加文件,每个文件都有额外的图标数据。 它应具有与图像文件相同的基本名称,扩展名为“。”。 例如,如果图标文件被称为“mime_source_c.png”,则相应的文件将被命名为“mime_source_c.icon”。

完整的规范比这更加详尽{ve,ng},但其关键在于:有设置目录,你只需填充图标,桌面就会找到它们。 哪种最适合你取决于你的问题和你的耐心:)

如果您将图标放在/usr/share/icons/ (系统范围内)或家中~/.icons ,那么您只能使用.desktop文件中没有扩展名的图标文件名。 例如

 Icon=vlc 

如果没有,那么您必须使用.desktop文件中图标的绝对路径。 例如

 Icon=/usr/local/share/my-icon.png 

我有标志的经验,而不是图标,但这应该工作:

 mkdir -p $HOME/.icons/hicolor/48x48/ 

将图标放在该目录中,假设它是myicon.png

 cp myicons.png $HOME/.icons/hicolor/48x48/ 

添加描述文件:

 gedit $HOME/.icons/hicolor/48x48/myicon.icon 

内容:

 [Icon Data] DisplayName=myicon 

现在你的Icon=myicon线应该可行。 如果你将它们放在“emblems”子目录中,它可以与徽标一起使用:

个性化会徽

感谢@Oli现在我知道它为什么会起作用:-)