Встановити змінну у .desktop файл


75

Чи є спосіб встановити змінну навколишнього середовища у файлі .desktop? Я намагаюся запустити додаток (eclipse) у користувальницькому стилі gtk, тому в основному я хочу отримати такий результат, запустивши файл .desktop:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

Я намагався вкласти його в скрипт bash і запустити його з файлу .desktop, але тоді він не добре поєднується з запуском Unity.

Відповіді:


111

Ви можете додати змінну середовища до програми, відредагувавши її .desktopфайл. Наприклад, щоб запустити "digiKam" зі змінною оточення APPMENU_DISPLAY_BOTH=1, знайдіть відповідний digikam.desktopфайл і додайте налаштування змінної за допомогою envкоманди до запису "Exec":

Exec=env APPMENU_DISPLAY_BOTH=1 digikam -caption "%c" %i

У вашому випадку:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

1
як я можу встановити змінну env, що містить користувача $HOME?. Ні, Exec=env MYVAR="$HOME/foo"ні Exec=env MYVAR="~/foo"розширюється. Натомість вони передаються буквально.
400 Кіт

здається , що ви можете зробити це , як описано в stackoverflow.com/a/8980518/1446479
peedee

9

Альтернативою для модифікації .desktopфайлу є розміщення сценарію обгортки, наприклад ~/bin.

$ cat ~/bin/eclipse
#!/bin/sh
export GTK2_RC_FILES=gtkrc.custom
exec /usr/bin/eclipse "$@"

Таким чином, налаштування не буде замінено наступного разу, коли пакет оновлень оновиться.

Редагувати:

Підказку про те, чому це працює, ви можете побачити, перевіривши, що PATHмістить змінна. У моєму випадку:

$ echo $PATH
/home/gunnar/bin:/home/gunnar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

~/binє першою папкою у списку, і таким чином розглядається раніше /usr/bin.


Якщо ви просто помістите ваш файл .desktop у ваші локальні налаштування, він все одно не перекриється.
Ауспекс

@Auspex: Правда. У той же час, якщо ви використовуєте локальну копію, ви не отримаєте користі від можливих оновлень .desktopфайлу, який належить пакету .
Гуннар Хяльмарссон

Я не бачу, як введення обгортки ~/binдопоможе в цьому. Файл, що належить пакету .desktop, ніколи не побачить цю обгортку! Вам також потрібно використовуватиupdate-alternatives
Auspex

@Auspex: .desktopФайлу не потрібно "бачити" обгортку. Він просто виконується eclipse, а завдяки PATHобгортці вибирається замість /usr/bin/eclipse. Я відредагував відповідь, щоб уточнити.
Gunnar Hjalmarsson

Так, файл .desktop дійсно повинен бачити обгортку. Я думав, що середній .desktop-файл вказує повний шлях, але, при подальшому огляді, я думаю, що більшість системних просто вказують ім'я команди - і так буде бачити вашу обгортку. Однак єдині у мене файли настільних комп'ютерів Eclipse - у форматі, визначеному у запитанні - даючи повний шлях до бінарного Eclipse.
Auspex
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.