Як я можу встановити змінну "Шлях" у файлі .desktop такою, яка буде відносно місця, де знаходиться настільний файл?


11

Я хочу встановити змінну "Шлях" у файлі .desktop відносно місця, де розташований файл на робочому столі, і я не можу це зробити.

Коли я не декларую його або не встановлюю його за замовчуванням у своїй домашній папці, незалежно від того, звідки я його запускаю; і він не приймає значення відносно мого поточного місцезнаходження у файловій системі.


У мене була ця проблема. Я знайшов обхідні шляхи, хоча іноді докорінно складні в залежності від того, що ти робиш. Ви зараз використовуєте роботу? Якщо ні, то, можливо, я зможу допомогти у цьому. Я не знайшов xdg документів, які багато пояснюють це.
bambuntu

OP Ви все ще шукаєте відповіді? Якщо це так, вам може знадобитися повторно поставити запитання, оскільки це позначено для закриття. З повагою,
Ringtail

Відповіді:


3

Ви не можете встановити CWD у файлі .desktop. Якщо ви хочете, щоб програма мала певний CWD, вам потрібно буде написати простий скрипт для обгортки для програми, який виглядає приблизно так:

#!/bin/sh

(cd /where/you/want/it/to/be && exec 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.