在遵守 FreeDesktop 标准的同时,在哪里为用户特定的应用程序安装图标?

Where to install icon for a user-specific application while adhering to FreeDesktop standards?

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

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

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

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

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

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

重新阅读 XDG 图标规范,我注意到该规范通过包含 $XDG_DATA_DIRS 来引用 XDG Base Directory Specification。此包含意味着基本目录规范也有效,这反过来又要求

Lookups of the data file should search for ./subdir/filename relative to all base directories specified by $XDG_DATA_HOME and $XDG_DATA_DIRS . If an environment variable is either not set or empty, its default value as defined by this specification should be used instead. (src)

因此,假设我的理解是正确的并且 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