Как экранировать пробелы в файлах .desktop Exec line

Я хочу создать файл .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

Однако, запустив это из контекстного меню Наутилуса, используя Открыть с , это дает мне

Не удалось найти '/ home / user / opt / sublime / Sublime'

Поэтому я попытался

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

и получил

Текст закончился до того, как была найдена соответствующая цитата для ". (Текст был '" / home / user / opt / sublime / Sublime ')

Как правильно экранировать пробелы в строке Exec файлов .desktop?

15
задан 13 April 2017 в 15:24

9 ответов

Перед каждым пробелом ставится обратная косая черта:

[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
0
ответ дан 13 April 2017 в 15:24

Вы пытались использовать кавычки вместо цитат? У меня есть настроенный файл .desktop с пробелами в строке Exec, а мой работает с кавычками.

0
ответ дан 13 April 2017 в 15:24

У меня такая же проблема, когда я следую инструкциям по установке из ( http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04 ]) site .. Итак, мое решение было:

  1. Удалить / удалить программную ссылку под названием «возвышенная» из /usr/bin

  2. Удалить все пробелы в папке «Sublime Text 2», переименовав ее в «SublimeText2»

  3. Re Создать мягкую ссылку в /usr/bin/:

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. [ 1114] Создайте файл .desktop, включающий:

    Exec=/opt/SublimeText2/sublime_text %U
    Icon=/opt/SublimeText2/Icon/48x48/sublime_text.png
    
0
ответ дан 13 April 2017 в 15:24

У меня была точно такая же проблема! Попробовав различные шаблоны экранирования / цитирования, я решил, что самым простым решением было бы иметь символическую ссылку на sublime_text на моем $ PATH (или вы могли бы использовать псевдоним командной строки).

[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
0
ответ дан 13 April 2017 в 15:24

Я столкнулся с той же проблемой, используя GNOME nautilus 3.4.2 в Ubuntu 12.04. Я нашел этот альтернативный обходной путь в отчете об ошибке для той же проблемы в Moblin UI Framework , который я предпочитаю тому, о котором вам нужно добавить каждую папку в $ PATH.

Обходной путь заключается в следующем:
«Создайте символическую ссылку в пути без пробелов и укажите поле EXEC на эту ссылку».

0
ответ дан 13 April 2017 в 15:24

Согласно спецификации записи рабочего стола пространство ASCII может быть представлено escape-последовательностью \s (для значений string и localestring).

0
ответ дан 13 April 2017 в 15:24

Файлы .desktop не обрабатывают кавычки, пробелы и экранированные символы так, как это делают оболочки. Вероятно, лучшим вариантом было бы вызвать оболочку в вашей строке exec для получения ожидаемого поведения, например:

[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. Это также избавляет от необходимости создавать и поддерживать символические ссылки, как вы это сделаете с другими ответами.

0
ответ дан 13 April 2017 в 15:24

Я последовал ответу moon.musick, который указал на спецификацию freedesktop для использования \s вместо пробела , но у меня были некоторые проблемы с этим, поскольку записи «Путь» и «Выполнение», похоже, интерпретируются по-разному.

Это рабочий пример с использованием как «Exec», так и «Path»:

Exec="/home/janek/.steam/steam/steamapps/common/Torchlight\sII/Torchlight2.bin.x86_64"
Path=/home/janek/.steam/steam/steamapps/common/Torchlight\sII

Обратите внимание, что строка «Exec» заключена в кавычки, иначе она будет интерпретировать часть после пробела как аргумент. Однако «Путь» не заключен в кавычки, потому что кажется, что он указан программой, читающей файл. Я попробовал это из меню «Пуск» и с помощью gtk-launch в командной строке, оба в итоге работали в этом формате, но не работали, когда путь также был указан в кавычках:

❯ gtk-launch "Torchlight II"
gtk-launch: error launching application: Failed to change to directory “"/home/janek/.steam/steam/steampps/common/Torchlight II"” (No such file or directory)
0
ответ дан 29 June 2020 в 09:34

Что сработало для меня, так это замена пробелов одним подчеркиванием (это 1 подчеркивание для нескольких последовательных пробелов) в значке [Desktop Entry] . ] ценность.

Не нужно удалять пробелы из каталога файлов. Также не заключайте значение Icon в кавычки.

Icon value in Desktop Entry

Icon Location

0
ответ дан 11 December 2020 в 13:44

Другие вопросы по тегам:

Похожие вопросы: