Я пытаюсь создать средство запуска приложения для программы (unigine небеса), я создал .desktop файл, который похож на это:
[Desktop Entry]
Version=1.0
Name=Unigine Heaven 4.0
Type=Application
Icon=heaven-icon.png
Exec=/home/**redacted**/Unigine_Heaven-4.0/heaven
Terminal=true
Я сделал исполняемый файл файла и попытался выполнить его, и ничего не происходит. Если я вхожу в терминал внутри /home/**redacted**/Unigine_Heaven-4.0/
и выполненный ./heaven
, все работает, как это должно, я просто не могу заставить ту терминальную команду работать в .desktop файле. Какие-либо идеи?
Править: форматирование для ясности
Если мы исследуем исполняемый сценарий heaven
, то мы будем видеть, что пути внутри относительны:
#!/bin/bash
cd ./bin
ARCH=$(uname -m)
if [ "$ARCH" == x86_64 ]; then
export LD_LIBRARY_PATH=./x64:$LD_LIBRARY_PATH
./browser_x64 -config ../data/launcher/launcher.xml
else
export LD_LIBRARY_PATH=./x86:$LD_LIBRARY_PATH
./browser_x86 -config ../data/launcher/launcher.xml
fi
, Таким образом, решение состоит в том, чтобы добавить рабочий каталог (Path
ключ) к средству запуска (.desktop
файл):
[Desktop Entry]
Version=1.0
Name=Unigine Heaven 4.0
Type=Application
Icon=heaven-icon.png
Path=/home/<user>/Unigine_Heaven-4.0
Exec=/home/<user>/Unigine_Heaven-4.0/heaven
Terminal=false
/home/<user>/Unigine_Heaven-4.0
с фактическим используемым путем. обратите внимание также на эти изменения: Terminal=false
.
решение, предоставленное @Sans также, работает:
Exec=sh -c "cd /home/<user>/Unigine_Heaven-4.0/heaven; ./heaven"
Ссылки: