Как я могу указать значок с ОТНОСИТЕЛЬНЫМ ПУТЕМ для настольного файла записи Linux?

Для одного из моих приложений 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 или некоторая другая заменяющая утилита с pseudo-regex как Icon=([valid path chars]+)\n возможно?

14
задан Jake Petroules 10 August 2010 в 19:37
поделиться

1 ответ

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

Обходной путь, который я использовал, заключался в том, чтобы добавить следующий код в конец моего скрипта 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, чтобы сократить приведенный выше код, но я читал, что решение, которое я использовал, более надежное. Если у кого-то есть дополнительная информация по этому поводу, оставьте комментарий.

15
ответ дан 1 December 2019 в 14:10
поделиться
Другие вопросы по тегам:

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