Подтвердить что ты не робот

Как я могу указать значок с пути RELATIVE для файла записи рабочего стола Linux?

Для одного из моих приложений Linux у меня есть приложение binary, launcher.sh script (для 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 script.

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Например:

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