Как изменить среду оболочки, замеченную приложениями, запущенными на рабочем столе?

Предположим, что некоторая случайная программа Foo

  1. изменяет его поведение в соответствии со значениями переменных среды; а также
  2. можно запустить, щелкнув значок Foo, доступный через графический рабочий стол.

Предположим, что для остальной части этого сообщения каждый пример обсуждения Foo был или будет запущен, как описано в (2) выше. IOW, для этого сообщения исключаем возможность запуска Foo через некоторую командную строку.

Для конкретности давайте предположим, что текущий сеанс X11 был запущен «вручную» пользователем; т.е. путем ввода startx в командной строке (текстовый интерфейс) в некоторый момент после входа (текстовый интерфейс) login 1 .


Теперь, AFAICT, по умолчанию, среда, унаследованная каждым экземпляром Foo, является той, которая установлена ​​на момент startx пользователем startx 2 . (Пожалуйста, исправьте меня, если я ошибаюсь.)

Мой вопрос: существует ли какой-то общий способ (т. Е. Независимый от Foo) изменить среду, унаследованную последующими экземплярами Foo (или, по крайней мере, следующим экземпляром Foo, который запускается)?


Предполагая, что ответ на (общий) вопрос выше «Нет» ниже, я предоставляю некоторые конкретные детали, в надежде, что более конкретный вариант вопроса будет иметь ответ «Да»:

  1. на данный момент меня особенно интересует случай, когда Foo оказывается Terminator (эмулятор терминала);
  2. моя оболочка zsh ;
  3. мой рабочий стол – xfce4 + xfwm4.

1 Если ответ на этот вопрос будет другим, если сеанс X11 был запущен автоматически после входа пользователя в систему через графический логин, пожалуйста, дайте мне знать.

2 Или, возможно, точнее сказать, что унаследованная среда состоит из экспортированных переменных оболочки и их значений, как это было, когда пользователь вызывал startx . Я ожидаю, что даже это более тщательно сформулированное описание, в лучшем случае, упрощает, но я надеюсь, что не такой экстремальный, чтобы сделать остальную часть сообщения спорным.

Если вы запускаете свою программу из ссылки на рабочем столе, вы можете изменить файл ссылки, указав желаемую переменную и значение. У меня нет опыта с zsh (пока), но я думаю, что вы все равно можете изменить ссылку, просто добавив env VAR=VAL в начале значения Exec в ссылке. Для дальнейшего чтения я нашел статью ArchLinux, объясняющую много записей в файле рабочего стола. Это статья Arch, но формат этих файлов является стандартным для дистрибутивов.

Вы также можете изменить эту переменную для всего сеанса, используя оконный менеджер.