Есть ли другой способ получить вашу DISPLAY env без использования shell?

У меня есть скрипт, который будет выполняться incrond, когда он увидит изменения в директории часов. В сценарии доступно только несколько переменных env, остальные очищаются с помощью incrond. Таким образом, это становится проблемой, когда вы хотите выполнить что-то, что зависит от X-переменных, таких как $ DISPLAY. Поэтому мне интересно, возможно ли получить var $ DISPLAY изнутри скрипта, не запрашивая пользовательскую оболочку

0
задан 17 June 2014 в 09:25

2 ответа

Для получения переменной среды рабочего процесса необходимо посмотреть environ файл в proc файловая система. В Вашем случае это:

user@host:~$ strings /proc/$(pidof -s Xorg)/environ
XORGCONFIG=/etc/X11/xorg.conf
UPSTART_INSTANCE=
LANG=de_CH.UTF-8
DISPLAY==:0
TERM=linux
PWD=/
UPSTART_JOB=gdm
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
2
ответ дан 17 June 2014 в 09:25

используя systemd login manager (немного медленно):


#!/bin/bash

user=bac0n

# Cannot find how multiple session is presented.
session=($(loginctl show-user --value -p Sessions $user))

# Get display from the first array element.
display=$(loginctl show-session --value -p Display $session)

echo $display
0
ответ дан 1 August 2020 в 21:57

Другие вопросы по тегам:

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