.desktop文件中的图标路径

在我的桌面上,我有一个.desktop文件。 如果我输入:

Icon=/home/ianbell/Pictures/myLogo.png 

.desktop文件的图标会更改(预期结果)。

但是,如果我输入:

 Icon=~/Pictures/myLogo.png 

它不起作用。

不是~/ /home/$USER的快捷方式?

在.desktop文件中使用路径

.desktop文件中,您需要使用绝对路径和完整路径。 因此~不扩展。

这是一个常犯的错误:)

有关图标的例外情况如下所述:

要在文件管理器,菜单等中显示的图标。如果名称是绝对路径,则将使用给定文件。 如果名称不是绝对路径,则将使用图标主题规范中描述的算法来定位图标。

在这里 :

图标字段是启动程序应使用的图标,代表应用程序。 目录/usr/share/pixmaps下的所有图标不需要指定其完整路径,但是没有扩展名的文件名。 例如,如果图标文件是/usr/share/pixmaps/wallch.png ,那么Icon字段应该只是’wallch’。 所有其他图标应指定其完整路径。

更多信息

.desktop文件中:

Icon=行中,您可以使用空格:

 Icon=/home/jacob/Thema/icon/some folder/some icon.png 

很好。

然而

Exec=行中,除非有参数 ,否则不允许使用空格。 在所有其他情况下,您需要使用空格引用路径步骤:

 Exec=/home/jacob/Bureaublad/some folder/application 

会失败,而

 Exec="/home/jacob/Bureaublad/some folder/application" 

要么

 Exec=/home/jacob/Bureaublad/"some folder"/application 

会很好的

简而言之, .desktop文件的Icon= path理解绝对路径,但不能理解代码扩展,因为规范定义了.desktop文件应该如何工作。

Tilde扩张

  • 你会看到到$HOME环境变量的波浪号( ~ )扩展通常是例如在bash中,这是你在命令提示符下与之交互的常用登录shell
  • bash和其他符合POSIX标准的shell一起执行波形到$ HOME扩展,与shell的 POSIX规范一致

.desktop文件

  • 但是, .desktop文件与shell不同,它是一个纯文本配置文件,因此它不一定以相同的方式工作,即使在Linux上都可以找到.desktop文件和shell
  • .desktop的文件应该如何工作,在Freedesktop的桌面条目规范中定义

关于Icons桌面条目规范说:

如果名称是绝对路径,则将使用给定文件。

这就是您能够使用绝对路径的原因,因为它已被规范所涵盖

如果名称不是绝对路径,则将使用图标主题规范中描述的算法来定位图标。

当我们检查图标主题规范时 ,没有任何东西说它必须遵循POSIX的代字号扩展。

摘要

因此,由于关于.desktopIcon=设置的Freedesktop规范,支持绝对路径,但正如您所发现的那样,POSIX tilde-to-$ HOME扩展不支持。