<< Предыдущий раздел | /\ Содержание | >> Следующий раздел
Каждый запущенный X-сервер имеет свое имя, по которому на него можно сослаться. Оно называется именем дисплея или просто "дисплей". Имя выглядит следующим образом:
Bobby.inp.nsk.su:0.0
Имя состоит из трех частей: имя компьютера (можно указывать и короткое имя (bobby), и IP-адрес), затем через двоеточие идет так называемый номер дисплея (используется, когда на одном компьютере запущено несколько X-серверов одновременно; обычно просто "0") и затем через точку так называемый номер экрана -- обычно тоже "0".
Номер экрана можно не указывать -- он по умолчанию принимается равным 0. Если не указать имя компьютера, то по умолчанию будет считаться тот компьютер, на котором запущена программа (но двоеточие указывать все же обязательно!). Единственное, что обязательно -- это номер дисплея. Несколько примеров сокращенных имен дисплеев:
Имя | Ссылка |
---|---|
Sky:0 | Нулевой дисплей на компьютере Sky |
:0.1 | Первый экран нулевого дисплея данного компьютера |
:3 | Третий дисплей данного компьютера |
Чаще всего имя дисплея -- это или просто ":0.0", или "компьютер:0.0".
При запуске каждая программа проверяет переменную окружения с названием DISPLAY. Посмотреть ее значение можно командой echo $DISPLAY:
bobby:~% echo $DISPLAY :0.0 bobby:~% _ |
При запуске X-Window в $DISPLAY автоматически помещается ссылка на запускаемый X-сервер. Менять же ее значение требуется только при входе по telnet/rlogin/rsh на другой компьютер.
Команды изменения значения $DISPLAY разные в разных shell'ах. В используемом на практических занятиях zsh это делается командой export:
somewhere:~% echo $DISPLAY somewhere:~% export DISPLAY=Bobby.inp.nsk.su:0.0 somewhere:~% echo $DISPLAY Bobby.inp.nsk.su:0.0 somewhere:~% _ |
Вокруг символа "=" не должно быть пробелов!
Аналогичная команда в bash будет выглядеть так:
а в csh/tcsh так:DISPLAY=Bobby.inp.nsk.su:0.0; export DISPLAY
setenv DISPLAY Bobby.inp.nsk.su:0.0
Практически всем программам можно указать имя дисплея при помощи ключа "-display":
Менять значение $DISPLAY при этом не требуется -- она может быть даже пустой.xterm -display bobby:0
Если просто зайти (например, по telnet) на какой-то другой компьютер и попытаться запустить оттуда к себе на дисплей программу, то это не удастся:
sky:~% xterm -display bobby:0 Xlib: connection to "bobby:0.0" refused by server Xlib: Client is not authorized to connect to Server xterm Xt error: Can't open display: bobby:0 sky:~% _ |
Дело в том, что по умолчанию доступ к дисплею открыт только для локальных программ. Для того, чтобы разрешить доступ к дисплею с другого компьютера, надо воспользоваться командой xhost.
Команда "xhost +компьютер" добавляет указанный компьютер в список тех, кому разрешен доступ. "xhost -компьютер" удаляет компьютер из этого списка. При этом будет запрещен доступ всем программам в будущем -- те, что уже запущены, "отключены" не будут. Просто "xhost" без параметров печатает текущий список доступа.
|
Команду xhost можно запускать только с локального компьютера -- например, если компьютер Alpha открыл доступ к своему дисплею для компьютера Beta, то с Beta не удастся открыть компьютеру Gamma доступ к Alpha. |
<< Предыдущий раздел | /\ Содержание | >> Следующий раздел