1

我有一个 GUI 应用程序,我想以符合 FreeDesktop 的方式为每个用户安装它。阅读相关规范,似乎应该放置一个“.desktop”文件~/.local/share/applications,并且它应该包含一个Icon设置为没有扩展名的图标名称的键。

我面临的问题是我找不到每个用户应该存储图标的位置。Icon Theme 规范声明应用程序图标至少应该存储在 中,$prefix/share/icons/hicolor/48x48/apps但它从未定义$prefix取什么值。它提到$HOME/.icons但将其贬低为遗产。我发现的所有其他路径都是系统范围的。

Gnome 的集成指南指定应该存储图标,/usr/share/icons/hicolor/48x48/apps/但没有提及按用户安装,尽管在指南的其他地方提到了按用户安装。

鉴于我设法找到的内容没有为我提供我想要的信息,我问这个:

我的应用程序图标应该放在哪里,以便 xdg 桌面可以找到它们?

请注意,我知道kde4-config --path icon和朋友。如果可能,我想避免处理我想要支持的每个桌面的图标。

4

1 回答 1

1

重读 XDG 图标规范,我注意到规范引用了XDG 基本目录规范,包括 $XDG_DATA_DIRS. 这种包含意味着基本目录规范也有效,这反过来又要求

数据文件的查找应搜索 ./subdir/filename 相对于 $XDG_DATA_HOME 和 $XDG_DATA_DIRS 指定的所有基本目录。如果环境变量未设置或为空,则应使用本规范定义的默认值。(源)

因此,假设我的理解是正确的并且 XDG 桌面符合规范,那么您的应用程序的用户特定图标位置是$XDG_DATA_HOME/icons/hicolor/48x48/apps/$YOURAPP.(png|xpm)$XDG_DATA_HOME/icons/hicolor/scalable/apps/$YOURAPP.svg. 文件扩展名区分大小写,只允许使用这三个扩展名。另请注意,SVG 支持是可选的。

如果$XDG_DATA_HOME未设置,则应默认$HOME/.local/share为根据基本目录规范。

于 2019-09-24T06:14:03.520 回答