Как получить доступ к переменной среды внутри расширения Gnome-Shell

Я хочу получить доступ к переменной среды из расширения Gnome-Shell.

Некоторый контекст: я хочу создать расширение, добавляющее Xorg или Wayland к панели на основе переменной среды $XDG_SESSION_TYPE. Мне приходится это делать, потому что я часто переключаюсь (у Wine проблемы с Wayland), и я не всегда помню, какой тип сеанса запущен.


person cronvel    schedule 10.10.2020    source источник


Ответы (2)


Мне удалось найти, как получить переменные среды в исходном коде расширения Argos:

const GLib = imports.gi.GLib ;
const rawEnv = GLib.get_environ() ;

Кроме того, переменная среды хранится в виде массива строк и должна быть проанализирована, т. Е. Разделена на первое вхождение «=», чтобы разделить ключ и значение.

EDIT: GLib.getenv('ENV_VAR_NAME') более удобен, поскольку позволяет избежать синтаксического анализа переменной среды (спасибо @andyholmes).

person cronvel    schedule 10.10.2020
comment
Вы также можете просто использовать GLib.getenv('XDG_SESSION_TYPE'). - person andy.holmes; 10.10.2020
comment
@andy.holmes Хорошо! Добавил в ответ! - person cronvel; 11.10.2020

Еще один способ обнаружить Wayland — спросить у оконного менеджера:

Meta.is_wayland_compositor()

Проверено в GS 3.36, 3.38 и 40.

https://gjs-docs.gnome.org/meta3%7E3.30.2/meta.is_wayland_compositor

Изменить: только из расширения, недоступно из настроек.

person GdH    schedule 09.04.2021