Как установить переменную среды для всех пользователей системы под Debian только при запуске Wayland?

Экспериментально для bash /proc/{pid}/fd/255— это ссылка на полный путь исполняемого скрипта.

#! /bin/bash

ls -l /proc/$$/fd/255
1
21.09.2021, 12:01
2 ответа

Это должно работать в Debian:

Вы можете создать простой скрипт, который определяет, работает ли машина под управлением X11 или Wayland:

loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value

Может возвращать либо X11, либоWayland(Также может возвращатьtty)

Поэтому:

if [[ $(loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value) = 'wayland' ]]; then
    export QT_QPA_PLATFORM=wayland
fi

Вы также можете просто проверить, использует ли ваш сеанс $DISPLAYили $WAYLAND_DISPLAYв качестве одной из переменных среды.

В bash вы можете поместить сценарии, которые вы хотите, чтобы все пользователи выполняли после входа в систему, в /etc/profile.d. Не забудьте сделать его исполняемым и убедитесь, что у него есть расширение .sh.

1
21.09.2021, 13:37

Я наткнулся на обсуждение systemd , которое привело меня к возможному ответу. (Извините, что отвечаю на собственный вопрос.)

Какие файлы выполняются при каких именно условиях при запуске мне до сих пор неясно, но по крайней мере в моей системе файл /etc/profileпохоже выполняется при запуске Gnome (, в том числе при запуске Wayland ). Он, в свою очередь, выполняет файлы под /etc/profile.d/. Взяв пример с файлом im-config_wayland.sh, я создал файл /etc/profile.d/wayland.sh, который устанавливает переменные среды, которые я хочу, условно, в зависимости от того, запущен ли Wayland. Вот его содержание.

test "$XDG_SESSION_TYPE" = 'wayland' || return
export QT_QPA_PLATFORM=wayland

Подозреваю, что существуют более элегантные решения, например, не устанавливающие эти переменные при работе не -графических оболочек. Но, по крайней мере, этот подход решает мою конкретную проблему на данный момент…

0
21.09.2021, 13:31

Теги

Похожие вопросы