1

Я всегда думал, что взаимодействие клиентских приложений с X-сервером сводится к простому прослушиванию иксами определённого порта и отрисовке окошечек с помощью windows-менеджера, в зависимости от того, что ему туда накидают. То есть никакой разницы было ли приложение запущено из под консоли, или из под X-сервера быть не должно.
С этой точки зрения введенная в консоли

xterm -display 127.0.0.1:0.0

выглядит очень логично: мы указываем ip, номер монитора и номер рабочего стола, из которых легко получить номер порта (6000 + номер монитора). Но почему, тогда, команда

xterm

(! без аргументов) вызванная из под X-сервера всё так же корректно показывает окно терминала, при том, что она же запущенная из под консоли выдает "dilplay is not set"?
И аналогичное противоречие номер два: запуск

xset -display 127.0.0.1:0.0 r rate 200 25

из под X-сервера корректно изменяет авторепит клавиатуры, а при запуске из консоли ничего не меняется.

В чем подвох?

2

можно попробовать разгадать эту тайну при помощи strace. Попробую.

github.com/cocaine

3 (14.11.2011 19:37:44 отредактировано bormant)

В иксах

 Консоль:
$ echo $DISPLAY
:0.0

В консоли:

 Консоль:
$ DISPLAY=:0.0 xterm &

Угадал?

+ foo

4

bormant пишет:

 Консоль:
$ DISPLAY=:0.0 xterm &

Угадал?

Да ab. Спасибо.
А что на счёт второго вопроса?

 Консоль:
$ DISPLAY=:0.0 xset r rate 200 25

всё так же ничего не делает.
И если уж обобщить,  то существует ли способ отслеживать используемые программой переменные окружения?