.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的代字号扩展。
摘要
因此,由于关于.desktop
的Icon=
设置的Freedesktop规范,支持绝对路径,但正如您所发现的那样,POSIX tilde-to-$ HOME扩展不支持。