如何在.desktop文件中删除空格Exec行

我想制作一个像这里描述的.desktop文件。

 [Desktop Entry] Name=Sublime Text 2 GenericName=Sublime Text 2 Comment=Edit text files Exec=/home/user/opt/sublime/Sublime Text 2/sublime_text %U 

但是,使用Open with this从Nautilus的上下文菜单运行它给了我

找不到’/ home / user / opt / sublime / Sublime’

所以我试过了

 Exec="/home/user/opt/sublime/Sublime Text 2/sublime_text" %U 

得到了

文本在找到匹配的引号之前结束“。(文本是’”/ home / user / opt / sublime / Sublime’)

.desktop文件的Exec行中转义空格的正确方法是什么?

用反斜杠在每个空格前面:

 [Desktop Entry] Name=Sublime Text 2 GenericName=Sublime Text 2 Comment=Edit text files Exec=/home/user/opt/sublime/Sublime\ Text\ 2/sublime_text %U 

我有完全相同的问题! 在尝试了各种转义/引用模式之后,我认为最简单的解决方案是在$ PATH上有一个指向sublime_text的符号链接(或者你可以使用命令行别名)。

 [Desktop Entry] Version=1.0 Type=Application Terminal=false Icon[C]=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png Name[C]=Sublime Text 2 Exec=Sublime-Text-2 %U Comment[C]=Text Editor Name=Sublime Text 2 Comment=Text Editor Icon=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png X-Desktop-File-Install-Version=0.21 

您是否尝试使用”引号而不是“”引号? 我有一个定制的.desktop文件,在Exec行中有空格,我的工作用”引号。

根据桌面条目规范, ASCII空间可以用\s转义序列表示(对于stringlocalestring值)。

我在Ubuntu 12.04中使用GNOME nautilus 3.4.2遇到了同样的问题。 我在Moblin UI Framework中针对同一问题的错误报告中找到了这种替代解决方法,我更喜欢提到你需要将每个文件夹添加到$ PATH的那个。

解决方法很简单:
“在没有空格的路径中创建符号链接,并将EXEC字段指向该链接。”

.desktop文件不像shell那样处理引号,空格和转义字符。 可能最好的选择是在你的exec行中调用一个shell来获得预期的行为,如下所示:

 [Desktop Entry] Name=Sublime Text 2 GenericName=Sublime Text 2 Comment=Edit text files Exec=sh -c "/home/user/opt/sublime/Sublime Text 2/sublime_text" %U 

有关更多信息,请参阅man sh 。 这也避免了必须创建和维护符号链接,就像您将使用其他答案一样。