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


11

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

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


У меня была эта проблема. Я нашел обходные пути, хотя иногда радикально сложные в зависимости от того, что вы делаете. Вы используете обходной путь в это время? Если нет, я могу помочь с этим. Я не нашел документов XDG, которые многое объясняют по этому вопросу.
— Bambuntu

ОП ты все еще ищешь ответ? Если это так, возможно, вам придется опубликовать свой вопрос, так как он помечен для закрытия. С уважением,
— Ringtail

Ответы:


3

Вы не можете установить 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. Таким образом, вы можете использовать тот же скрипт, чтобы обернуть любую программу, которую вы хотите запустить в этом каталоге.


14

Вы можете обойти это, используя встроенный мини-скрипт bash на вашем Exec. Это добавит путь к файлу .desktop в PATH до запуска вашей команды.

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

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


1
Я нажал, чтобы быстро и проголосовал не тот, но ваше решение идеально.
— CrandellWS

1
это могло бы прекрасно работать с другим вопросом / ответом stackoverflow.com/a/3464561/1815624
— CrandellWS

2

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

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

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


0

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

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

Кредит /unix//a/144428/61349


0

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.