Система X-Window была создана совместно Массачусеттским Технологическим Институтом (MIT) и фирмой DEC в 1984 году. Последняя версия называется X11R6 (сокращение от "X11 release 6"), обычно для краткости используется название "X11", или даже просто "X". Полное название системы -- X Window System, сокращенно -- X-Window (именно "Window" -- никакого "s" на конце нет!). | ||
Система X-Window построена по клиент-серверной модели. Она состоит из двух частей: X-сервера и прикладных программ ("клиентов"), которые пользуются услугами X-сервера для взаимодействия с экраном и с пользователем. X-сервер -- это единственная программа, "общающаяся с железом" -- с монитором, клавиатурой и мышью; эти три компонента объединяются термином дисплей. Прикладные же программы взаимодействуют с X-сервером при помощи "программных каналов", и могут быть запущены с другого компьютера -- при этом связь будет идти через сеть (по протоколу TCP/IP).
Практически все программы, которые можно запустить на своей машине (т.е. на той, на которой запущен X-сервер, экран которой стоит перед вами), можно запустить и с другого компьютера (при хорошей связи -- хоть из Антарктиды), и работать с ними точно так же, как и с локальными. Реализации как X-серверов, так и приложений под X-Window существуют практически во всех современных операционных системах -- во всех клонах Unix, в VMS, Dos, Windows, MacOS. И они полностью совместимы друг с другом -- можно запустить программу на Unix-машине, и работать с ней на Windows-компьютере. Существенным отличием от Windows и Mac в Unix является то, что графическая оболочка -- это не жизненно важная часть операционной системы, а всего лишь дополнительная программа, без которой Unix будет продолжать нормально функционировать (а видели ли вы когда нибудь Windows NT, способную работать без графического интерфейса?).
| ||||||||||
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 была создана библиотека под названием Athena Widgets, с использованием которой и изготовлены все стандартные (самые "старые") программы -- xterm, xedit, xcals и многие другие. Хотя сейчас Athena Widgets выглядит довольно архаично, написанные с ее использованием программы работают довольно неплохо, и при некотором навыке вполне удобны. В дальнейшем была создана библиотека Motif, близкая по виду к интерфейсу MS Windows, которая и стала стандартной -- с ее использованием написаны такие программы, как Netscape и Nedit. Полностью вытеснить Athena Widgets Motif так и не смог по причине своей небесплатности. | ||||
В системах 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". | ||
Зайдя с консоли, для запуска X достаточно дать команду Именно "startx", а не "start x" и не "xstart". После этого на экране быстро пройдет диагностика запуска X-сервера, затем компьютер переключится в графический режим -- появится пустой экран, заполненный простеньким штрихованным узором, а через несколько секунд на нем появится "оформление", которое обычно включает окно для ввода команд и, например, часы. | ||
Иногда компьютеры настраивают так, что X запускается автоматически сразу после загрузки операционной системы, и вместо консольного приглашения "login:" сразу появляется окно примерно такого вида:
В этом случае надо просто войти в систему так же, как с консоли -- ввести свое login-имя, нажать <Enter>, ввести пароль, и еще раз нажать <Enter>. После этого (если имя и пароль введены правильно) автоматически запустится X-сессия -- так же, как если зайти с консоли и запустить "startx". | ||||
Для того, чтобы завершить работу с X-Window, лучше всего найти в меню пункт типа "Quit" -- "выход" (иногда он может называться "Exit" или "Logout"). В самом же крайнем случае, например, когда надо выйти мгновенно, или в незнакомом window manager'е, когда неизвестно, где искать "Quit", можно воспользоваться комбинацией клавиш <Alt+Ctrl+Backspace>. Хотя это самый простой способ, лучше все же всегда использовать "Quit". | ||
Хотя раздел и озаглавлен "Использование 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 входит умение поудобнее "раскидать" окна по экранам. При этом даже отпадает потребность сворачивать окна в пиктограммы -- поскольку все окна в своих экранах, то они не закрывают друг дружку, и переключение между ними производится простым переходом между экранами.
| ||||||||||
Как указывалось выше, значительное количество программ сделано на основе библиотеки интерфейсных элементов под названием "Athena Widgets". Библиотека это довольно старая, и программы выглядят несколько необычно. Первое отличие -- это линейки прокрутки (scrollbars). Мало того, что на них нет стрелочек, а только бегунок, они еще и весьма "нестандартно" реагируют на мышь. Для того, чтобы передвинуть бегунок, надо нажать на нем среднюю кнопку мыши. При этом мышь необязательно должна быть на бегунке -- он сам "прыгнет" к курсору. Если не отпуская кнопку мыши передвигать курсор, то бегунок будет ездить за ним. Второе отличие -- то, что после вызова меню кнопкой мыши нельзя отпускать кнопку -- иначе меню исчезнет. Нужно не отпуская кнопку подвести курсор к нужному пункту, и тогда отпустить. Третье -- некоторые программы (например, xedit) используют принцип "Focus Follows Mouse" -- например, если на экране есть несколько полей ввода текста, то активным является то, над которым находится курсор мыши. | ||
Для того, чтобы можно было вводить команды Unix как на консоли, служит программа xterm -- эмулятор терминала. В Linux используется его улучшенная версия -- nxterm. В левой части окна расположена линейка прокрутки, позволяющая "заглянуть назад" и увидеть то, что уже скрылось за пределами экрана. При помощи клавиш <Shift+PgUp> и <Shift+PgDn> можно добиться того же. Нажав одновременно <Ctrl> и одну из кнопок мыши, можно вызвать одно из трех меню xterm. По <Ctrl+ЛеваяКнопка> появляется меню "Main Options", которое используется крайне редко. По <Ctrl+ПраваяКнопка> появляется меню "VT Fonts", которое позволяет сменить шрифт. По умолчанию используется шрифт, уставленный как "Delault", остальные пункты позволяют выбрать шрифт от "Unreadable" (нечитабельный) до "Huge" -- очень большой. И, наконец, <Ctrl+СредняяКнопка> вызывает меню "VT Options", содержащее около двух десятков пунктов. Остановимся лишь на самых полезных из них.
| ||
В любой версии X-Window есть простейший текстовый редактор под названием xedit, по возможностям примерно эквивалентный программе Notepad в Windows.
Хотя xedit довольно примитивен, он имеется всегда, и при этом он не столь "неудобоварим" для обычного пользователя, как vi. В верхней части окна располагаются кнопки [Quit], [Save] и [Load], отвечающие за выход, сохранение файла и загрузку файла соответственно. Если нажать на [Quit], когда в файл были внесены изменения, то xedit откажется выйти -- надо будет нажать [Quit] повторно. Справа от кнопок расположено поле для ввода имени файла. Достаточно просто навести на него мышь и набрать нужное, а затем нажать [Save] или [Load] -- в первом случае файл будет сохранен под указанным именем, во втором случае будет загружен указанный файл. Текст файла располагается в самой нижней части окна -- для ввода и редактирования надо навести туда мышь. Полное описание всех клавиш, используемых при редактировании, можно найти на man-странице по xedit. | ||||
Программа xman служит для интерактивного выбора и просмотра man-страниц. При ее запуске появляется маленькое окошко (иногда даже без обрамления).
Пункт [Search] из меню [Options] позволяет найти страницу по ее имени. Xman позволяет открыть одновременно несколько окон -- для этого надо просто несколько раз нажать на кнопку [Manual Page]. Убрать лишнее окно можно, просто закрыв его. Кнопка [Help] дает довольно подробную справку по использованию xman. Основные недостатки xman -- то, что он не позволяет вести поиск
внутри страницы, а также то, что по умолчанию им совершенно невозможно
пользоваться без мыши.
| ||||
Xcalc -- это простейший калькулятор, который умеет выполнять основные арифметические действия, считать тригонометрические функции и позволяет считать "сложные" выражения со скобками. (Xcalc -- это полная копия калькулятора Texas Instruments TI-30.) Большую часть "кнопок" можно нажимать как мышью, так и с клавиатуры. Для выходя служит клавиша "q". Если щелкнуть на индикаторе, то число "подсветится", и его можно
затем вставить куда-либо при помощи средней кнопки мыши.
| ||||
Программа xmag (ее обычно нет в меню и надо запускать из командной
строки) позволяет рассмотреть некую область экрана "с увеличением". При ее
запуске курсор мыши привращается в "уголок" Г, который надо
навести на интресующий участок экрана.
| ||||
Xpaint -- это графический редактор для растровых изображений, по функциональности значительно превосходящий редактор Paintbrush (он же Windows Paint). При запуске появляется окно инструментов, в верхней части которого расположено меню. Пункт [NewCanvas] меню [File] открывает новое окно с пустым изображением 640*480, [NewWithSize] позволяет указать размер. Загрузить существующий файл можно командой [Open]. Xpaint умеет работать с файлами самых распространенных форматов -- GIF, JPEG, PNG, TIFF и с еще несколькими. Одновременно можно открыть несколько окон. В каждом окне с редактируемым изображением есть свое меню и две палитры цветов -- основная (для операций типы рисования линии) и дополнительная (для заполненных фигур). В xpaint встроена справочная система, в которой есть информация по
большинству вопросов.
| ||||
| ||||||||||||||
Каждый запущенный X-сервер имеет свое имя, по которому на него можно сослаться. Оно называется именем дисплея или просто "дисплей". Имя выглядит следующим образом:
Имя состоит из трех частей: имя компьютера (можно указывать и короткое имя (bobby), и IP-адрес), затем через двоеточие идет так называемый номер дисплея (используется, когда на одном компьютере запущено несколько X-серверов одновременно; обычно просто "0") и затем через точку так называемый номер экрана -- обычно тоже "0". Номер экрана можно не указывать -- он по умолчанию принимается равным 0. Если не указать имя компьютера, то по умолчанию будет считаться тот компьютер, на котором запущена программа (но двоеточие указывать все же обязательно!). Единственное, что обязательно -- это номер дисплея. Несколько примеров сокращенных имен дисплеев:
Чаще всего имя дисплея -- это или просто ":0.0", или "компьютер:0.0". | ||||||||||
При запуске каждая программа проверяет переменную окружения с названием DISPLAY. Посмотреть ее значение можно командой echo $DISPLAY:
При запуске X-Window в $DISPLAY автоматически помещается ссылка на запускаемый X-сервер. Менять же ее значение требуется только при входе по telnet/rlogin/rsh на другой компьютер. Команды изменения значения $DISPLAY разные в разных shell'ах. В используемом на практических занятиях zsh это делается командой export:
Вокруг символа "=" не должно быть пробелов! Аналогичная команда в bash будет выглядеть так: а в csh/tcsh так:
Практически всем программам можно указать имя дисплея при помощи ключа "-display": Менять значение $DISPLAY при этом не требуется -- она может быть даже пустой. | ||||
Если просто зайти (например, по telnet) на какой-то другой компьютер и попытаться запустить оттуда к себе на дисплей программу, то это не удастся:
Дело в том, что по умолчанию доступ к дисплею открыт только для локальных программ. Для того, чтобы разрешить доступ к дисплею с другого компьютера, надо воспользоваться командой xhost. Команда "xhost +компьютер" добавляет указанный компьютер в список тех, кому разрешен доступ. "xhost -компьютер" удаляет компьютер из этого списка. При этом будет запрещен доступ всем программам в будущем -- те, что уже запущены, "отключены" не будут. Просто "xhost" без параметров печатает текущий список доступа.
| |||||||||
| ||||||||