我的桌面上有一个 .desktop 文件。如果我输入:
Icon=/home/ianbell/Pictures/myLogo.png
.desktop 文件的图标发生了变化(预期的结果)。
但是,如果我输入:
Icon=~/Pictures/myLogo.png
它不起作用。
这不是~/
快捷方式吗/home/$USER
?
答案1
.desktop 文件中路径的使用
在.desktop
文件中,您需要使用绝对和满的路径。因此~
不展开。
这是一个常见的错误:)
关于图标的例外情况也进行了描述这里:
在文件管理器、菜单等中显示的图标。如果名称是绝对路径,则将使用给定的文件。如果名称不是绝对路径,则使用图标主题规范将用于定位图标。
和这里:
Icon 字段是启动器应使用的图标,代表应用程序。目录下的所有图标
/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
会很好用
答案2
简而言之,.desktop
文件的Icon=
路径可以理解绝对路径,但不能理解波浪符号扩展,因为规格它定义了.desktop
文件应该如何工作。
波浪符号扩展
- 例如,在 bash 中,你经常会看到环境变量
~
中波浪符号 ( ) 的扩展$HOME
,这是你在命令提示符下与之交互的常用登录 shell - bash 和其他符合 POSIX 标准的 shell 执行与以下操作一致的波浪线到 $HOME 扩展POSIX 规范贝壳
.desktop 文件
- 但是,
.desktop
文件与 shell 并不相同,它是一个纯文本配置文件,因此,即使.desktop
文件和 shell 都可以在 Linux 上找到,它们的工作方式也不一定相同。 .desktop
的文件应该如何工作,在 Freedesktop 的桌面入门规格
关于 的桌面入口规范Icons
指出:
如果名称是绝对路径,则将使用给定的文件。
这就是为什么你可以使用绝对路径,因为它已被规范所涵盖
如果名称不是绝对路径,则图标主题规范将用于定位图标。
当我们检查图标主题规范,没有任何内容表明它必须遵循 POSIX 的波浪号扩展。
概括
因此,由于 Freedesktop 规范中关于.desktop
的Icon=
设置,绝对路径是受支持的,但正如您所发现的,POSIX 波浪线到 $HOME 扩展不受支持。