Как я могу установить переменную 'Пути' в .desktop файле, чтобы быть относительно местоположения, где файл на рабочем столе расположен?

Я хочу установить переменную 'Пути' в .desktop файле относительно местоположения, где файл на рабочем столе расположен, и мне не может удаться сделать это.

Когда я не объявляю это или устанавливаю его для очищения его значения по умолчанию к моей домашней папке, неважно, откуда я выполняю его; и это не принимает значения относительно моего текущего местоположения в файловой системе.

11
задан 16 May 2012 в 03:04

5 ответов

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

#!/bin/sh

(cd /where/you/want/it/to/be && exec your_program)

Можно заменить your_program там с $@ и запущенный скрипт с your_program как аргумент, как run-in-dir.sh your_program. Таким образом, можно использовать тот же сценарий для обертывания любой программы, которую Вы хотите запустить в том каталоге.

3
ответ дан 23 November 2019 в 04:00

Вы можете клудж вокруг этого при помощи встроенного мини-сценария удара на Вашем Должностном лице. Это добавит путь .desktop файла для СОЕДИНЕНИЯ КАНАЛОМ до выполнения команды.

Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"

%k заменит путь самого файла на рабочем столе. dirname команда обрубает часть имени файла, оставляя только каталог. После того как ПУТЬ установлен как это, your_command может быть вызван без полного пути.

12
ответ дан 23 November 2019 в 04:00

Я использовал это:

Exec=bash -c 'cd $(dirname %k) && ./SCRIPT_NAME'

%k является полным именем .desktop файла включая его путь. Это затем используется dirname для получения местоположения и каталога изменения к тому местоположению. Наконец, теперь, когда это находится в правильном месте, это находит сценарий и выполняет его.

2
ответ дан 23 November 2019 в 04:00

Для имен каталогов с пробелами на имя это наконец работало на меня:

Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k

Кредит к https://unix.stackexchange.com/a/144428/61349

0
ответ дан 23 November 2019 в 04:00

Это работало на меня Ubuntu 14.04:

Exec=bash -c "cd %k && ./app.run"

Последняя спецификация говорит, что %k указывает на местоположение файла на рабочем столе:

%k - Местоположение файла на рабочем столе как любой URI (если, например, получено от vfolder системы) или локальное имя файла или пустой, если никакое местоположение не известно.

0
ответ дан 23 November 2019 в 04:00

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

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