Работа в графическом режиме под Linux возможна, благодаря системе, именуемой XWindow, разработанной в 80-х годах в Массачусетском Технологическом Институте.
Что такое XWindow? Как ни странно, внятный ответ на этот вопрос найти в книгах по Linux (и Unix вообще) довольно сложно, по крайней мере, в русскоязычных и переведенных. Вероятно, профессиональные разработчики, которые точно знают, что это такое, полагают, что остальным это должно быть интуитивно понятно или знать просто не положено.
В большинстве книг по Linux XWindow определяется как графический интерфейс пользователя (GUI). Однако, по мнению разработчиков, XWindow – это, скорее, ядро, над которым может надстраиваться любой графический интерфейс.
В основе XWindow лежит модель клиент-сервер, хотя эти термины используются несколько необычным образом. Так, серверная часть XWindow – это аппаратно-зависимая система ввода/вывода, взаимодействующая с видеосистемой, клавиатурой и мышью, тогда как клиентская часть обеспечивает вывод данных в видеосистему и прием их с устройств ввода.
Один из X-клиентов – так называемый оконный менеджер (или диспетчер окон). Он управляет размещение окон на экране, определяет их вид и характер управляющих элементов, то есть именно он и представляет собой GUI в собственном смысле слова.
Что из этого следует с точки зрения пользователя? То, что в ОС Linux (и любой другой Unix- или Linux-подобной системе) пользователь не привязан к какому-либо одному графическому интерфейсу: таковых, определяемых оконным менеджером, теоретически может быть невообразимое множество.
Впрочем, как будет показано в следующих разделах, практика недалеко отстает от теории.
Все сказанное выше относилось к системе XWindow вообще. Сама же система существует во многих вариантах. Один из них, именуемый XFree86, представляет свободную (и открытую) реализацию XWindow для компьютеров на базе процессоров Intel x86 и их клонов. Именно она и входит в состав большинства дистрибутивов Linux.
В качестве текущих ныне могут рассматриваться версии XFree86 3.х.х и 4.x.x, различающиеся моделью своей серверной части: в версии 3.х.х реализовано множество серверов для различных типов аппаратуры, в первую очередь – видеочипов, которые и выступаю в качестве их эпонимов. В версии 4.0 существует лишь один X-сервер (т.н. SVGA-сервер), отвечающий за поддержку всех типов видеоаппаратуры, обслуживаемых соответствующими загружаемыми модулями. Кроме того, программная реализация XFree86 версий 4.x.x позволяет делать прямые обращения к аппаратуре, что значительно ускоряет обработку и вывод видеографической информации.
Этим и обусловлено сосуществование двух версий, которое продлится, вероятно, еще довольно долгое время. Из SVGA-сервера 4-й версии исключена поддержка многих видеокарт, рассматривающихся, вероятно, как устаревшие, но еще широко распространенных.
Чтобы не возвращаться более к этому вопросу, следует сказать еще об одном существенном элементе X Window – наборах графических библиотек, определяющих и внешний вид, и функциональность всех X-клиентов, в понимании пользователя, которое профессиональному программисту может показаться не вполне строгим (или нестрогим вообще).
Графические библиотеки – это некий аналог (или, скорее, гомолог) пресловутого Miscrosoft Foundation Classes (MFC), на которых, теоретически, должны бы основываться все Windows-приложения.
За исключением приложений фирмы Microsoft, разумеется – в их основе лежат некие недоступные простому смертному библиотеки. Основных таких библиотек несколько:
· коммерческий пакет Motif и совместимые с ним открытые и бесплатные OpenMotif и Lesstif,
· Qt, распространявшаяся до недавнего времени на условиях собственной лицензии,
· открытая (по лицензии GPL) библиотека Gtk+.
Наличие в системе таких библиотек – непременное условие функционирования основанных на них приложений.