Как я могу указать значок с ОТНОСИТЕЛЬНЫМ путем для файла ввода рабочего стола Linux? - PullRequest
13 голосов
/ 10 августа 2010

Для одного из моих приложений Linux у меня есть двоичный файл приложения, скрипт launcher.sh (для LD_LIBRARY_PATH) и файл .desktop, все в одной папке.

Я бы хотел использовать относительный путь, а не абсолютный путь для значка.

Я пробовал:

Icon=app.svg
Icon=./app.svg
Icon=$PWD/app.svg
Icon=$(dirname %k)/app.svg

но ничего из этого не работает (только Icon=/path/to/app.svg). Если невозможно указать относительный путь, и я должен использовать обходной путь, я подумал, что мог бы заново генерировать путь к значку в файле .desktop при каждом запуске сценария launcher.sh.

Каков наилучший способ сделать это? Используя sed или какую-либо другую утилиту замены с псевдо-регулярным выражением, например Icon=([valid path chars]+)\n, возможно?

Ответы [ 2 ]

15 голосов
/ 12 августа 2010

После еще нескольких исследований, насколько я вижу, не представляется возможным указать относительные пути для значка в файле ввода на рабочем столе.

Обходной путь, который я использовал, заключался в добавлении следующего кода в конец моего скрипта launcher.sh:

mv myapp.desktop myapp.desktop-bak
sed -e "s,Icon=.*,Icon=$PWD/app.svg,g" myapp.desktop-bak > myapp.desktop
rm myapp.desktop-bak

Это будет обновлять путь к значку при каждом запуске сценария запуска, а поскольку файл .desktop указывает на сценарий запуска, щелчок по файлу .desktop эффективно обновляет его значок.

Я знаю, что вы можете использовать cat или параметр -i для сокращения приведенного выше кода, но я читал, что решение, которое я использовал, более надежно. Если у кого-то есть дополнительная информация по этому вопросу, пожалуйста, оставьте комментарий.

1 голос
/ 26 мая 2019

Вы можете использовать echo $(echo ~) для использования вывода команды или echo $(echo $var) для переменных

Например:

echo "Icon=$(echo ~)/Pictures/Icons/whatsapp-webapp.svg" > path/to/file.desktop 

Если вас интересует многострочная команда echo, проверьте эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...