Основы работы в ОС Linux



         

XFree86 и его составные части


Графический интерфейс в Linux строится на основе стандарта X Window System (заметьте, что Window, а не Windows) или просто "X" (в просторечии - "иксы"), первоначальный вариант которого был разработан в 1987 году в Массачусетском технологическом институте. Начиная со второй версии этот стандарт поддерживался консорциумом X, созданным в январе 1988 г. с целью унификации графического интерфейса для ОС UNIX. С 1997 года консорциум X преобразован в X Open Group (http://www.x.org). В настоящее время действует версия 11 выпуск 6 стандарта на графическую подсистему для UNIX-систем, которая кратко обозначается как X11R6.

Свободно распространяемая реализация стандарта X11R6 для UNIX-систем с процессорами 80386/80486/Pentium (в том числе для ОС Linux) была создана группой программистов, которую вначале возглавлял Дэвид Вексельблат (David Wexelblat). Эта реализация известна как XFree86 (http://www.xfree86.org), и может использоваться не только в Linux, но и в System V/386, 386BSD, FreeBSD и других версиях UNIX для систем на базе процессоров Intel x86. В настоящее время выпущена уже 4-ая версия XFree86, однако, и 3-я версия еще широко используется и входит в состав основных дистрибутивов Linux.

Система X Window построена на основе модели "клиент/сервер". Правда, модель эта в данном случае используется как бы в "перевернутом" виде. Дело в том, что X сервер работает на компьютере пользователя (а не на каком-то удаленном "сервере") и обеспечивает вывод изображения на экран монитора. X-сервер работает непосредственно с "железом": видеосистемой, устройствами ввода и динамиком. Может быть, для некоторых читателей назначение этой программы будет понятнее, если назвать ее драйвером видеосистемы. Эта программа захватывает оборудование и предоставляет его возможности другим программам как ресурсы (собственно, именно поэтому она и считается сервером) по особому протоколу, который называется X-протокол, или протокол сетевой связи (X Network Protocol). Кстати, специализированный компьютер, на котором исполняется исключительно X-сервер, называется (аппаратным) X-терминалом.

Но сам X-сервер изображение не формирует, он только "доставляет" графику видео-драйверу. Если запустить только X-сервер, вы увидите просто серый экран с характерным крестиком курсора посредине. С помощью мыши этот крестик можно перемещать по экрану. И все! На нажатие кнопок мыши и клавиш никакой видимой реакции не следует. И невидимой тоже - сервер готов передавать эти сигналы своим клиентам, а клиенты пока не запущены. Хотя на самом деле некоторые комбинации клавиш X перехватывает и обрабатывает. Это <Ctrl>+<Alt>+<Backspace> - завершение работы сервера (если эта возможность не запрещена при конфигурации), <Ctrl>+<Alt>+<+> и <Ctrl>+<Alt>+<-> - "горячее" переключение доступных видеорежимов, и <Control>+<Alt>+<F#> - переключение в другую виртуальную консоль.

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

Между клиентами и сервером стоят еще два очень важных компонента графического интерфейса: библиотека графических функций X-lib и менеджер окон (рис. 7.1)1). X-Lib содержит графические функции, которые обеспечивают выполнение низкоуровневых операций с графическими образами. Менеджер окон вызывает функции из X-Lib для управления дисплеем и выполнения любых преобразований изображений в окнах.

Архитектура графической системы в Linux

Рис. 7.1.  Архитектура графической системы в Linux

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

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

Расширенные графические среды типа Motif, CDE, KDE, GNOME, GNUStep и т. д. не замещают перечисленные выше компоненты системы X Window, а расширяют и дополняют их. KDE, например, добавляет библиотеку графических функций Qt в дополнение к X-Lib. Motif имеет собственный набор графических функций. GNOME использует библиотеку GTk+, которая составляет основу GIMP. Кроме того, в GNOME используется также CORBA (The Common Object Request Broker Architecture - универсальная архитектура посредничества при запросе объектов) и библиотека Imlib для дальнейшего расширения возможностей графической подсистемы.

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

Кстати, в Linux (и вообще в UNIX) нет жесткого деления между графическими и текстовыми программами, как в MS Windows или OS/2. С точки зрения системы нет разницы между программой, работающей в графике, и обычной. Программы для графического режима запускают как обычные программы, т. е. из командной строки, из Midnight Comander и т.п. Единственным необходимым условием для их работы является то, что должен работать X-сервер. При необходимости программа сама обращается к X-серверу (через TCP/IP в общем случае, и через локальный сокет в частном, когда X-сервер и X-клиент работают на одной машине). Делает она путем вызова библиотечных функций из X-lib. Все, что ей надо для работы, это знать, где искать X-сервер (для этого используется либо переменная окружения DISPLAY, либо опция в командной строке). Более того, существуют даже программы, которые умеют работать и с X-сервером и с обычным текстовым терминалом (например, emacs) и сами разбираются при старте, как именно им работать в данном случае.

Конечно, приведенный выше рис. 7.1 очень схематичен. К примеру, как мы уже упоминали, взаимодействие библиотеки X lib с сервером в общем случае осуществляется по протоколам TCP/IP. Так что следовало бы еще отобразить программное обеспечение, реализующее протоколы TCP/IP. Еще одним важным ресурсом графической подсистемы являются шрифты. Оперировать со шрифтами может как непосредственно X-сервер, так и специальная программа, которая называется сервер шрифтов, и которую также следовало включить в рисунок.

Для каждого из типовых компонентов графической системы существует множество конкретных реализаций. В состав пакета XFree86 версии 3 входят несколько различных серверов, причем выбор конкретного сервера зависит от того, какие у вас видеоплата и монитор. Например, сервер XF86_Mono - это сервер для монохромных видео-режимов; XF86_S3 - сервер для карт, основанных на S3; XF86_S3V - сервер для S3 ViRGE и ViRGE/VX; XF86_SVGA - сервер для карт, работающих в режимах Super-VGA. Последнюю версию списка поддерживаемых X-сервером видеокарт вы можете найти на сайте http://www.xfree86.org/.

В четвертой версии XFree86 уже один X-сервер для большинства видеоадаптеров, называется он XFree86 и располагается в каталоге /usr/X11R6/bin/. Обычно на него делается ссылка с именем X, так что запустить X-сервер можно просто введя в командной строке букву X.

Различных менеджеров окон тоже существует очень много, и вы можете использовать любой из них по своему выбору. Вот несколько примеров.

  • fvwm - Free Virtual Window Manager.
  • fvwm2 - улучшенный вариант fvwm, позволяющий, в частности, использовать различные темы рабочего стола и динамические меню. Официальный сайт разработчиков FVWM и FVWM2 - http://www.hpc.uh.edu/fvwm/.
  • fvwm95 - менеджер окон с графическим интерфейсом в стиле Windows 95.
  • IceWM (http://berta.fri.uni-lj.si/~markom/icewm) - это оконный менеджер, который может эмулировать различные стандарты оконных систем (в частности, OS/2 Workplace Shell), имеет, по некоторым отзывам, довольно маленький обьем и быстро работает.
  • Enlightenment (http://www.Enlightenment.org) - один из самых развитых менеджеров окон.




Содержание  Назад  Вперед