.desktop文件中的图标路径


11

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

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

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

但是,如果我输入:

Icon=~/Pictures/myLogo.png

它不起作用。

这不是~/捷径/home/$USER吗?


1
〜是您的主目录的缩写,仅在shell中。
user253751 '16

@JacobVlijm:对不起,我睡着了,我日夜编程:-)

1
@IanBell哈哈,我知道这种感觉:)
Jacob Vlijm '16

/ home / $ USER将无法使用。看来您在寻找-/ home / $(whoami)。请在下面查看我的评论。
Ajay Kumar

Answers:


10

.desktop文件中路径的使用

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

这是一个常见的错误:)

这里还介绍有关图标的例外情况:

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

这里

图标字段是启动程序应使用的图标,代表应用程序。目录下的所有图标 /usr/share/pixmaps都不需要指定完整路径,但文件名不带扩展名。例如,如果图标文件为 /usr/share/pixmaps/wallch.png,则“图标”字段应仅为“ 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

会很好的工作


那么,如何引用相对于“用户主目录”的路径?
亚伦·弗兰克

亚伦·弗兰克(Aaron Franke),您可以使用$(whoami)获取当前用户名。我还没有尝试过,但是应该可以-对于当前用户的home目录-/ home / $(whoami)。
Ajay Kumar

我试过了,它能奏效。
Ajay Kumar

4

简而言之,由于定义了文件应该如何工作的规范,因此.desktop文件的Icon=路径可以理解绝对路径,而不能理解波浪号扩展。.desktop

波浪号扩展

  • 例如,在bash中通常会看到tilde(~)扩展为$HOME环境变量的地方,这是您在命令提示符下与之交互的常用登录shell。
  • bash和其他与POSIX兼容的外壳程序,按照与POSIX 外壳程序规范相一致的方式,进行从波浪线到$ HOME的扩展

.desktop文件

  • 但是,.desktop文件与Shell并非同一事物,它是纯文本配置文件,因此即使.desktop文件和Shell都可以在Linux上找到,它也不一定能以相同的方式工作。
  • 一个怎样.desktop的文件应该是工作,是在Freedesktop的的定义桌面项规范

关于的桌面条目规范Icons说:

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

这就是为什么您能够使用绝对路径的原因,因为它已包含在规范中

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

当我们检查Icon Theme Specification时,没有什么说它必须遵循POSIX的波浪符号扩展。

摘要

因此,由于关于Freedesktop的规范.desktopIcon=设定,绝对路径都支持,但你发现,POSIX波浪-TO-$ HOME扩展都没有。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.