В дистрибутивах с системой инициализации systemd
вывод
systemctl --user show-environment
показывает DISPLAY
и XAUTHORITY
. По крайней мере, это верно для моей системы Debian 9 с systemd и gdm3
в качестве диспетчера отображения.
Ошибка :После запуска startx xterm -- :2 vt2
на tty2 systemctl выдал мне DISPLAY
и XAUTHORITY
из нового дисплея; мой основной дисплей :0
больше не был таким видимым.
Другие подходы:
По крайней мере, для XAUTHORITY
надежнее проанализировать вывод ps aux | grep Xorg
и найти опцию -auth
. В моем случае он находится в /run/user/1000/gdm/Xauthority
, а не в ~/.Xauthority
.
Подводные камни:
Xwayland
. Xvfb
или что-то другое. Обычно команды Xorg
также содержат номер дисплея. К сожалению, мой не:
/usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
-displayfd 3
каким-то образом указывает на DISPLAY
. Если смотреть как root в /proc/$(pidof Xorg)/fd/3
, я нахожу
lrwx------ 1 root root 64 Mär 8 22:45 3 -> socket:[21437]
Хотя я не знаю, как искать сокет 21437
. Я уверен, что это указывает на /tmp/.X11-unix/X0
. Одним из подходов является lsof +E -aUc Xorg
, который показывает интересные выходные данные :много соединений, содержащих @/tmp/.X11-unix/X0
и одно соединение dbus
.
Немного грязно :Папка fd
тоже показывает мне
l-wx------ 1 root root 64 Mär 8 22:45 5 -> /var/log/Xorg.0.log
Xorg.0.log
является четким указанием для дисплея :0
.
Другой подход :notify-send
, кажется, собирает DISPLAY
и XAUTHORITY
с некоторой dbus
магией. Но я понятия не имею, как. Это может быть самый чистый и переносимый способ, если хотя бы запущен демон dbus.
Использование опции --home-dir=.
с aspell
позволило мне сохранить следующие строки в моем репозитории какjargon.txt
:
personal_ws-1.1 en 30 utf-8
odometry
Спасибо Джеффу Шаллеру за предоставление ссылок, которые привели меня к этому ответу.