Графический интерфейс X-Window, часть 1


История и общие понятия; многоплатформность, распределенность

История

Система X-Window была создана совместно Массачусеттским Технологическим Институтом (MIT) и фирмой DEC в 1984 году.

Последняя версия называется X11R6 (сокращение от "X11 release 6"), обычно для краткости используется название "X11", или даже просто "X". Полное название системы -- X Window System, сокращенно -- X-Window (именно "Window" -- никакого "s" на конце нет!).

X11 -- сетевая система

Система X-Window построена по клиент-серверной модели. Она состоит из двух частей: X-сервера и прикладных программ ("клиентов"), которые пользуются услугами X-сервера для взаимодействия с экраном и с пользователем.

X-сервер -- это единственная программа, "общающаяся с железом" -- с монитором, клавиатурой и мышью; эти три компонента объединяются термином дисплей. Прикладные же программы взаимодействуют с X-сервером при помощи "программных каналов", и могут быть запущены с другого компьютера -- при этом связь будет идти через сеть (по протоколу TCP/IP).

X11 -- распределенная система

Практически все программы, которые можно запустить на своей машине (т.е. на той, на которой запущен X-сервер, экран которой стоит перед вами), можно запустить и с другого компьютера (при хорошей связи -- хоть из Антарктиды), и работать с ними точно так же, как и с локальными.

Реализации как X-серверов, так и приложений под X-Window существуют практически во всех современных операционных системах -- во всех клонах Unix, в VMS, Dos, Windows, MacOS. И они полностью совместимы друг с другом -- можно запустить программу на Unix-машине, и работать с ней на Windows-компьютере.

Существенным отличием от Windows и Mac в Unix является то, что графическая оболочка -- это не жизненно важная часть операционной системы, а всего лишь дополнительная программа, без которой Unix будет продолжать нормально функционировать (а видели ли вы когда нибудь Windows NT, способную работать без графического интерфейса?).

Замечание

Название "X-сервер" вначале приводит к путанице -- ведь обычно сервер -- это какой-то другой компьютер, услугами которого мы пользуемся (например, файловый сервер Novell, или большой Unix-сервер, на который мы заходим по telnet).

В данном же случае X-сервер -- это программа, которая обслуживает не столько нас, сколько другие программы. Так, Netscape "просит" X-сервер отобразить на экране содержимое web-страницы, и тот это делает (он предоставляет программе Netscape некоторый сервис -- т.е. является для нее сервером).

Window Manager и его функции

X-сервер -- программа в определенном смысле довольно глупая. Все, что он умеет -- это выделять программам прямоугольные области экрана ("окна") и рисовать в них то, что программы попросят; плюс он знает, что одно окошко может располагаться поверх другого, и правильно их отрисовывает.

Но ведь надо еще изобразить рамку вокруг окошка, заголовок над ним, уметь "сворачивать" окно в пиктограмму и еще многое другое. Этим занимается специальная программа, называемая "Window Manager" (дословно "менеджер окон").

В список функций хорошего window manager'а входят: декорирование окон (бордюр, заголовок, кнопочки), манипуляции с окнами (перемещение, изменение размера, свертывание в пиктограмму и т.д.), разнообразные меню и панели инструментов (например, для запуска программ), виртуальный экран.

Одновременно экран может обслуживаться ровно одним window manager'ом. Поскольку window manager -- это не интегральная часть системы X-Window, то их существует огромное количество. Вот лишь самые часто используемые: Fvwm, AfterStep, Mwm, Olwm, KDE. Примеры их внешнего вида есть в следующем разделе, а в разделе "Использование MWM" приведено краткое руководство по работе в X-Window с Mwm.

Библиотеки интерфейсных элементов

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

В X-Window используется многоуровневая реализация интерфейсных элементов. Не вдаваясь в подробности, отметим лишь, что практически никакие программы не взаимодействуют с X-сервером напрямую. Эти функции возложены на компонент Xlib, услугами которого в свою очередь пользуется компонент Xt. В Xt заложена абстракция "интерфейсного элемента" (они в X называются "widgets"), и на основе Xt можно в принципе построить большое количество разнообразных наборов элементов.

Взаимоотношения между X-сервером,библиотеками и программами

Первоначально вместе с X была создана библиотека под названием Athena Widgets, с использованием которой и изготовлены все стандартные (самые "старые") программы -- xterm, xedit, xcals и многие другие. Хотя сейчас Athena Widgets выглядит довольно архаично, написанные с ее использованием программы работают довольно неплохо, и при некотором навыке вполне удобны.

В дальнейшем была создана библиотека Motif, близкая по виду к интерфейсу MS Windows, которая и стала стандартной -- с ее использованием написаны такие программы, как Netscape и Nedit. Полностью вытеснить Athena Widgets Motif так и не смог по причине своей небесплатности.


Как это выглядит

Window manager'ы бывают разные

В системах Windows и MacOS внешний вид экрана и доступные функции практически одинаковы на всех компьютерах -- могут отличаться разве что цвета, шрифты и набор программ, "напиханных" на рабочий стол и в меню.

В Unix же существует большое количество window manager'ов, которые и играют роль графического интерфейса пользователя, и их внешний вид и функции могут сильно отличаться. Более того, почти все window manager'ы допускают огромное количество разных настроек, так что один и тот же может выглядеть совершенно по разному (пример -- картинки Fvwm95 и Mwm, приведенные ниже -- это в обоих случаях Fvwm, "загримированный" по разному).

В RedHat Linux по умолчанию используется Fvwm, имитирующий интерфейс Windows95. На практических занятиях он перенастроен под "более Unix'ный" вид -- Mwm.

На иллюстрациях ниже приведено несколько примеров того, как может выглядеть экран X с разными window manager'ами. Это лишь небольшое подмножество из существующего разнообразия. Список общедоступных window manager'ов можно посмотреть на странице Window Managers службы Yahoo! Другим полезным ресурсом на эту тему является страница "Window Managers for X" (http://www.plig.org/xwinman/).

В последнее время стало очень модно использовать способность X-Window работать с непрямоугольными окнами -- декорации на окнах приобретают фигурный вид, а также делать "полупрозрачные" окна, когда, к примеру, из-под xterm "просвечивает" фоновая картинка. Особенно грешит этим KDE. Примеры этих "видеоэффектов" можно найти по указанным выше ссылкам -- надо обращать внимание на пункты "screenshots".

Картинки с экрана

Снимок экрана X11 с Fvwm95

Снимок экрана X11 с MWM

Снимок экрана X11 с AfterStep

Снимок экрана X11 с KDE

Снимок экрана X11 с OpenLook (SunOS, Solaris, Linux)

Снимок экрана X11 с 4Dwm (Silicon Graphics)


Как запускать X

Запуск из консоли

Зайдя с консоли, для запуска X достаточно дать команду

startx
Именно "startx", а не "start x" и не "xstart".

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

Если X запускается автоматически

Иногда компьютеры настраивают так, что X запускается автоматически сразу после загрузки операционной системы, и вместо консольного приглашения "login:" сразу появляется окно примерно такого вида:

Графическое приглашение к входу в систему

В этом случае надо просто войти в систему так же, как с консоли -- ввести свое login-имя, нажать <Enter>, ввести пароль, и еще раз нажать <Enter>. После этого (если имя и пароль введены правильно) автоматически запустится X-сессия -- так же, как если зайти с консоли и запустить "startx".

Выход из X

Для того, чтобы завершить работу с X-Window, лучше всего найти в меню пункт типа "Quit" -- "выход" (иногда он может называться "Exit" или "Logout").

В самом же крайнем случае, например, когда надо выйти мгновенно, или в незнакомом window manager'е, когда неизвестно, где искать "Quit", можно воспользоваться комбинацией клавиш <Alt+Ctrl+Backspace>. Хотя это самый простой способ, лучше все же всегда использовать "Quit".


Как работать в X -- использование MWM

Основные отличия от Win95

Хотя раздел и озаглавлен "Использование MWM", реально в Linux применяется не настоящий MWM (Motif Window Manager), который является платным, а свободно распространяемый Fvwm2, "загримированный" под MWM. Хотя в других window manager'ах могут использоваться иное оформление, клавиши и меню, по функциям они достаточно похожи.

В данном разделе предполагается, что читатель знаком с графическим интерфейсом системы Windows95 или WindowsNT 4.

Первым отличием является то, что для того, чтобы активизировать окно, не нужно щелкать на нем мышью -- достаточно просто навести на него курсор. При этом окно "подсвечивается" -- цвет рамки из серого превращается в бирюзовый. При этом, даже если окно почти полностью закрыто другим окном, оно все равно является активным. К примеру, окно xterm будет принимать команды с клавиатуры, даже если курсор мыши стоит на самом его уголке, а остальная часть скрыта.

Про активное окно говорят, что ему принадлежит "фокус ввода". Операция активизации окна называется "фокусированием".

Второе отличие -- то, что даже щелчок мышью на окне не "вытаскивает" его поверх остальных окон. Для этого надо щелкнуть на его заголовке.

Третье отличие -- в большинстве window manager'ов нет стандартной комбинации клавиш для закрытия окна (наподобие Alt+F4), поскольку большая часть подобных действий выполняется в X при помощи мыши.

И, наконец, в Mwm отсутствует как "Панель задач" с кнопкой "Пуск" -- их функции выполняют меню, вызываемые мышью, так и большое количество пиктограмм на рабочем столе (которые в Win95/NT все равно совершенно бесполезны, поскольку большую часть закрыты каким-нибудь окном).

Меню, вызываемые мышью

Нажатием кнопки мыши на свободном пространстве экрана вызывается одно из трех меню.

Основное меню
Меню программ

ЛЕВАЯ кнопка -- основное меню (аналог кнопки "Start" в Win95/NT).

ПРАВАЯ -- меню программ (оно есть и в основном меню).

СРЕДНЯЯ -- список открытых на экране окон (это аналог панели задач в Win95/NT).

Запуск программ


Чаще всего требуется открыть дополнительное окно xterm. Для этого достаточно выбрать из главного меню пункт .

Большинство остальных программ присутствуют в меню "Programs". Если же какую-то программу там найти не удается, но ее имя известно, то можно запустить ее прямо из окна xterm -- к примеру, для Netscape это будет... догадайтесь что -- правильно, "netscape".

Операции с окнами


Большую часть операций с окнами можно сделать мышью при помощи элементов оформления.

Элементы декорации окна

Передвинуть окно можно за заголовок; чтобы изменить размер, достаточно "потянуть" за край окна. Чтобы "вытащить" окно поверх всех других, надо щелкнуть на его заголовке. Если заголовок скрыт другими окнами, то можно щелкнуть правой кнопкой мыши на любой части рамки (кроме кнопочек). Повторный щелчок правой кнопкой "погружает" окно так, что оно оказывается снизу всех остальных. Двойной щелчок на кнопке закрывает окно.

Меню операций с окнами
При нажатии на кнопку появляется меню дополнительных операций с окнами.

Пункт сворачивает окно в пиктограмму.

Пункты и максимально растягивают окно по вертикали и по горизонтали, соответственно.

Пункт закрывает окно.

Пункт используется, когда программа "зависла" и не реагирует на команду закрытия окна. При этом она будет просто насильно отсоединена от X-сервера (именно вся программа, а не только это окно!).

У некоторых окон нет оформления, и, казалось бы, их нельзя ни передвинуть, ни закрыть -- ведь нет способа вызвать меню. Но в главном меню есть пункт , за которым скрывается точно такое же меню операций с окнами. Выбрав из него, к примеру, пункт , надо щелкнуть мышью (курсор которой превратится при этом в "череп с костями") на окне, которое хочется закрыть.

Пункт создает на экране линейку инструментов, позволяющую выполнить любую команду из меню "Window Operations".

Линейка инструментов для
манипуляций с окнами

Блокировка экрана


В отличие от Windows, X-Window после некоторого времени бездействия пользователя просто отключает монитор, но сама не вызывает программу-"хранитель экрана" (screen saver). Если пользователь хочет насладиться красивыми заставками, то он должен сам вызвать из главного меню программу-заставку, которая по совместительству позволяет заблокировать доступ к компьютеру. Для этого служит пункт .

При нажатии на нем появляется окно, которое позволяет выбрать тип заставки (их число далеко за полсотни и увеличивается с каждой новой версией программы) и действие -- запустить заставку (Screen Saver) или заблокировать экран (Lock Screen).

По умолчанию выбран тип заставки "Random", который случайным образом меняет вид заставки примерно раз в минуту.

Курсор мыши автоматически ставится на кнопку "Lock Screen", так что если надо срочно куда-то уйти, заблокировав компьютер, надо после нажатия на "Lock Screen/Screen Saver" просто еще раз щелкнуть мышью.

Выход и переход в другой window manager


Для выхода из X-Window надо в основном меню выбрать пункт , а в нем нажать для подтверждения .

Если же в меню "Exit Fvwm" зайти в подменю , то можно переключиться на другой window manager. В зависимости от того, какое программное обеспечение установлено, там будут пункты "Fvwm95" -- Fvwm в режиме имитации Windows95, "Lesstif WM" -- собственно Fvwm в режиме MWM, "AfterStep" и "WindowMaker".

Виртуальный десктоп

Одним из самых больших удобств интерфейса X-Window является так называемый виртуальный десктоп, или виртуальный экран (хотя его аналоги есть в Win95/NT, вследствие слабой интеграции с системой работают они не слишком хорошо).

Дословно "desktop" -- это рабочая поверхность стола (или сокращенно просто "рабочий стол"), но из-за громоздкости перевода используется англоязычный термин.

Виртуальный десктоп -- это возможность работать не с одним экраном, на который надо "упихать" все окна (а их зачастую открывают по несколько десятков), а с несколькими одновременно, быстро переключаясь между ними при помощи мыши или клавиатуры.

Технически виртуальный десктоп делается за счет того, что реальный размер рабочего стола не один экран, а, например, 3x3, и на мониторе отображается лишь какая-то его часть -- аналогично тому, как в окне текстового редактора отображается лишь часть текста, а остальное скрыто за границами, но тоже может быть просмотрено. Так, если окно "увезти за заголовок" так, что часть его будет скрыта за низом экрана, то эта скрытая часть будет "свисать сверху" в том экране, что расположен ниже.

В правом нижнем углу экрана расположено маленькое неприметное окошко.

Левая его часть занята индикатором занятости компьютера, а вот правая -- это "карта" виртуального десктопа, на которой каждый экран отделен пунктирными линиями, а открытые окна отображаются маленькими прямоугольничками (пропорционально реальному размеру). Текущий экран (в данном случае левый средний) подсвечен розовым.

Переключиться в другой экран можно, щелкнув мышью на его изображении на "карте". Другой вариант -- можно "переходить" между экранами при помощи Shift+Ctrl+Alt+клавиши со стрелками.

Переместить окно в другой экран можно, "перетащив" его изображение на "карте" средней кнопкой мыши.

Вообще говоря, в искусство работы в X-Window входит умение поудобнее "раскидать" окна по экранам. При этом даже отпадает потребность сворачивать окна в пиктограммы -- поскольку все окна в своих экранах, то они не закрывают друг дружку, и переключение между ними производится простым переходом между экранами.

Замечание

На приведенной выше иллюстрации на "карте" даже не один виртуальный десктоп, а целых два независимых -- один под названием "Desk", а другой -- "Apps". Это стандартная настройка Fvwm, хотя второй используется довольно редко.

Кроме того, по умолчанию размер десктопа -- 2x2, поскольку предполагается использование и "Desk", и "Apps", но удобнее оказывается обходиться одним экземпляром десктопа, сделав его размером 3x3.


Несколько стандартных прикладных программ

Особенности программ на основе Athena Widgets

Как указывалось выше, значительное количество программ сделано на основе библиотеки интерфейсных элементов под названием "Athena Widgets". Библиотека это довольно старая, и программы выглядят несколько необычно.

Первое отличие -- это линейки прокрутки (scrollbars). Мало того, что на них нет стрелочек, а только бегунок, они еще и весьма "нестандартно" реагируют на мышь.

Для того, чтобы передвинуть бегунок, надо нажать на нем среднюю кнопку мыши. При этом мышь необязательно должна быть на бегунке -- он сам "прыгнет" к курсору. Если не отпуская кнопку мыши передвигать курсор, то бегунок будет ездить за ним.

Второе отличие -- то, что после вызова меню кнопкой мыши нельзя отпускать кнопку -- иначе меню исчезнет. Нужно не отпуская кнопку подвести курсор к нужному пункту, и тогда отпустить.

Третье -- некоторые программы (например, xedit) используют принцип "Focus Follows Mouse" -- например, если на экране есть несколько полей ввода текста, то активным является то, над которым находится курсор мыши.

Эмулятор консоли: xterm

Для того, чтобы можно было вводить команды Unix как на консоли, служит программа xterm -- эмулятор терминала. В Linux используется его улучшенная версия -- nxterm.

В левой части окна расположена линейка прокрутки, позволяющая "заглянуть назад" и увидеть то, что уже скрылось за пределами экрана. При помощи клавиш <Shift+PgUp> и <Shift+PgDn> можно добиться того же.

Нажав одновременно <Ctrl> и одну из кнопок мыши, можно вызвать одно из трех меню xterm.

По <Ctrl+ЛеваяКнопка> появляется меню "Main Options", которое используется крайне редко.

По <Ctrl+ПраваяКнопка> появляется меню "VT Fonts", которое позволяет сменить шрифт. По умолчанию используется шрифт, уставленный как "Delault", остальные пункты позволяют выбрать шрифт от "Unreadable" (нечитабельный) до "Huge" -- очень большой.

И, наконец, <Ctrl+СредняяКнопка> вызывает меню "VT Options", содержащее около двух десятков пунктов. Остановимся лишь на самых полезных из них.

Enable Scrollbar
включает/выключает линейку прокрутки (редко кому надо ее убирать, но иногда она по умолчанию бывает выключена -- тогда надо знать, как ее включить).
Enable Reverse Video
меняет цвета букв и фона -- если выбрать эту опцию при белых буквах на черном фоне, то буквы станут черными, а фон -- белым.
Scroll to Bottom on Tty Output
позволяет отключить автоматическое "перепрыгивание" окна вниз (в текущую область) при выводе на экран.
Do Soft Reset и Do Full Reset
сбрасывают внутренние настройки терминала в начальное состояние -- это требуется, например, когда какая-то программа привела терминал в такое состояние, что вместо букв отображаются всякие странные символы.
Reset and Clear Saved Lines
делает то же, что и Full Reset, но при этом еще и "забывает" строки, "уехавшие" за верх экрана.

Текстовый редактор: xedit

В любой версии X-Window есть простейший текстовый редактор под названием xedit, по возможностям примерно эквивалентный программе Notepad в Windows.

Текстовый редактор xedit

Хотя xedit довольно примитивен, он имеется всегда, и при этом он не столь "неудобоварим" для обычного пользователя, как vi.

В верхней части окна располагаются кнопки [Quit], [Save] и [Load], отвечающие за выход, сохранение файла и загрузку файла соответственно. Если нажать на [Quit], когда в файл были внесены изменения, то xedit откажется выйти -- надо будет нажать [Quit] повторно.

Справа от кнопок расположено поле для ввода имени файла. Достаточно просто навести на него мышь и набрать нужное, а затем нажать [Save] или [Load] -- в первом случае файл будет сохранен под указанным именем, во втором случае будет загружен указанный файл.

Текст файла располагается в самой нижней части окна -- для ввода и редактирования надо навести туда мышь. Полное описание всех клавиш, используемых при редактировании, можно найти на man-странице по xedit.

Графический просмотр man-страниц: xman

Программа xman служит для интерактивного выбора и просмотра man-страниц. При ее запуске появляется маленькое окошко (иногда даже без обрамления).

Основное окно программы xman
При нажатии на кнопку [Manual Page] появляется окно с кнопками-меню [Options] и [Sections] сверху. Выбрав раздел из меню [Sections], можно затем выбрать в нем интересующую страницу и щелкнуть на ее названии мышью. Посмотреть другую страницу можно, заново нажав [Sections] и т.д. Чтобы для каждой страницы не приходилось заново идти в [Sections], можно выбрать в меню [Options] пункт [ShowBoth Screens] -- при этом на экране одновременно будут отображаться и список страниц, и текущая страница.

Пункт [Search] из меню [Options] позволяет найти страницу по ее имени.

Xman позволяет открыть одновременно несколько окон -- для этого надо просто несколько раз нажать на кнопку [Manual Page]. Убрать лишнее окно можно, просто закрыв его. Кнопка [Help] дает довольно подробную справку по использованию xman.

Основные недостатки xman -- то, что он не позволяет вести поиск внутри страницы, а также то, что по умолчанию им совершенно невозможно пользоваться без мыши.

Калькулятор: xcalc
Калькулятор xcalc

Xcalc -- это простейший калькулятор, который умеет выполнять основные арифметические действия, считать тригонометрические функции и позволяет считать "сложные" выражения со скобками. (Xcalc -- это полная копия калькулятора Texas Instruments TI-30.)

Большую часть "кнопок" можно нажимать как мышью, так и с клавиатуры. Для выходя служит клавиша "q".

Если щелкнуть на индикаторе, то число "подсветится", и его можно затем вставить куда-либо при помощи средней кнопки мыши.

Увеличительное стекло: xmag
Участок экрана, увеличенный при помощи xmag

Программа xmag (ее обычно нет в меню и надо запускать из командной строки) позволяет рассмотреть некую область экрана "с увеличением". При ее запуске курсор мыши привращается в "уголок" Г, который надо навести на интресующий участок экрана.

Графический редактор: xpaint
Панель инструментов редактора xpaint

Xpaint -- это графический редактор для растровых изображений, по функциональности значительно превосходящий редактор Paintbrush (он же Windows Paint).

При запуске появляется окно инструментов, в верхней части которого расположено меню. Пункт [NewCanvas] меню [File] открывает новое окно с пустым изображением 640*480, [NewWithSize] позволяет указать размер. Загрузить существующий файл можно командой [Open].

Xpaint умеет работать с файлами самых распространенных форматов -- GIF, JPEG, PNG, TIFF и с еще несколькими. Одновременно можно открыть несколько окон.

В каждом окне с редактируемым изображением есть свое меню и две палитры цветов -- основная (для операций типы рисования линии) и дополнительная (для заполненных фигур).

В xpaint встроена справочная система, в которой есть информация по большинству вопросов.

Программы для развлечений и "красоты": xearth, xsnow, xeyes, xclock, xroach
xearth
Эта программа показывает на заднем плане (в качестве "обоев") Землю, как ее видно в данный момент со стороны Солнца, и отмечает на ней основные города. xearth есть одна неприятная особенность: если ее убить (kill), то изображение земли все равно остается, но не обновляется.)
xsnow
"Зимний пейзаж" -- на заднем плане растут елочки и иногда проезжает Санта-Клаус на санях, а "с неба" падает снег и оседает внизу экрана и на окнах.

Указав "-snowflakes 1000", можно в десять раз увеличить количество снега, а указав "-windtimer 1", можно заставить ветер дуть всегда (это средний интервал между порывами ветра в секундах).

Глаза, следящие
за мышью
Часы
xeyes
Глаза, которые следят за мышью. Эта программа имеет ту особенность, что глаза занимают непрямоугольное окно, и если их поместить поверх чего-нибудь, то они закроют ровно ту часть, которую и должны.
xclock
Это простейшие стрелочные часы.

Замечание
На практических занятиях "глаза" и часы при запуске X-Window автоматически помещаются в правый верхний угол экрана.

Таракан
xroach
Эта программа выпускает на задний план стаю тараканов, которые бегают, пока не спрячутся под каким-нибудь окном.

По умолчанию тараканы бегают очень быстро, поэтому при запуске лучше указывать ключ "-speed 1". Изменить количество насекомых можно ключом "-roaches" (по умолчанию -- 10).

Хотя тараканы -- это не то, что захочется видеть у себя на экране, эта программа бесценна для подшучивания над соседом, который забыл "закрыть" свой дисплей (подробнее об этом -- в следующем разделе).



Сетевые возможности X и управление доступом

Имя X-сервера

Каждый запущенный 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 будет выглядеть так:

DISPLAY=Bobby.inp.nsk.su:0.0; export DISPLAY
а в csh/tcsh так:

setenv DISPLAY Bobby.inp.nsk.su:0.0

Практически всем программам можно указать имя дисплея при помощи ключа "-display":

xterm -display bobby:0
Менять значение $DISPLAY при этом не требуется -- она может быть даже пустой.

Управление доступом: xhost

Если просто зайти (например, по 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.


Практические задания

    Замечание
    Все компьютеры в классе имеют адреса вида 192.168.1.N, где число "N" написано на корпусе.

  1. Открыть новое окно nxterm. Увеличить в нем шрифт до "огромного" размера. Выполнить команду "ls -lR /etc", которая выведет на экран большое количество информации. Затем при помощи линейки прокрутки посмотреть, какой файл в этом листинге идет первым. Потом заставить nxterm "забыть" весь этот листинг.
  2. Скопировав к себе в home-директорию файл

    /net/class/home/teachers/bolkhov/moroz
    (он набран латинскими буквами) при помощи xedit исправить имеющиеся в нем ошибки.
  3. Запустив xcalc, посчитать выражение sin2390+cos2-330.
  4. Запустив xmag, "увеличить" карту экрана из правого нижнего угла. Затем запустить xpaint, открыть в нем новое окно, "скопировать" при помощи кнопки [Select] в xmag изображение в "карман" и вставить его в xpaint (фрагмент вставится неувеличенным). Переместить этот фрагмент в центр изображения и нарисовать вокруг него эллипс красного цвета. Затем сохранить картинку в свою home-директорию в формате JPEG.
  5. Переместить часы из правого верхнего угла в правый нижний -- над "картой" десктопа, а "глаза" -- в то место, где были часы.
  6. Закрыть имеющиеся часы и "глаза", а затем "вручную" запустить часы так, чтобы при закрытии окна nxterm, из которого они запущены, часы остались. Переместить эти часы в левый верхний угол экрана и уменьшить их до размера 50*50 точек (размер отображается на индикаторе в центре экрана).
  7. Перейти в правый нижний экран и открыть в нем новое окно nxterm. Затем перейти в левый нижний экран, запустить там xpaint и "перетащить" его в правый нижний экран.
  8. Зайдя (при помощи rlogin или telnet) на компьютер к соседу, запустить ему на экран "снежную зиму" и "тараканов" (доступ с соседнего на него самого открыт).
  9. Сделать то же самое со своего компьютера на соседский (предварительно сосед должен открыть доступ к своему дисплею).
  10. Переключить window manager с режима MWM (Lesstif WM) на Fvwm95, затем перейти в AfterStep, и вернуться обратно в Lesstif WM.
  11. Корректно выйти из X-Window и затем правильным образом выключить компьютер.

----------------------------------------

© 1999 Дмитрий Болховитянов