Когда 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 для дальнейшего расширения возможностей графической подсистемы.
Рис. 7.1. Архитектура графической системы в Linux [17] Рисунок заимствован из статьи J.Barr-а в LinuxWorld (http://www.linuxworld.com/lw-1999-04/lw-04-vcontrol.html).
Поскольку клиент и сервер являются отдельными процессами, они могут работать на разных компьютерах, а взаимодействовать по сети. Приложения можно запустить, например, на мейнфрейме, а картинка будет выводиться на экран персонального компьютера. Эта очень мощная особенность системы 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/.
Читать дальше