Информационные технологии

История и перспективы развития графической подсистемы XWindows

История развития графических подсистем под ОС Linux неразрывно связана с развитием Xwindow. Гpaфичecкий интерфейс в Linux строится на основе стандарта X Window System или просто «X», разработка которого была начата в 1984 году.

Первые десять версий Xwindow создавались фактически всего тремя людьми – Робертом Шейфлером, Джимом ЛеТраком и Роном Ньюменом. Двое из них были сотрудниками Массачусетского технологического института, а третий сотрудником корпорации DEC.

Первый разработчик Xwindow использовал весьма привлекательный и совершенный по сегодняшним меркам объектно-ориентированный язык программирования CLU. И только затем совсем молодой проект был перепрограммирован на языке Си.

Начиная с 11-й версии системы, той, с которой сегодня имеют дело многочисленные пользователи рабочих станций под управлением ОС Unix или ее клонов, проект XWindow утратил характер «малой рабочей группы» и превратился фактически в транснациональную смешанную академическо-корпоративную организацию. Она включает в себя все требуемые выполняемые коды, конфигурационные файлы, библиотеки и инструментарий.

Система XWindow представляет совокупность программ и библиотек. X система изначально разрабатывалась ориентированной на работу в сети с использованием модели «клиент-сервер». В модели работы X-системы «X-сервер» работает на компьютере с клавиатурой, монитором и мышью. Каждое X-приложение (например, XTerm или Netscape) является «клиентом». Если сервер и клиент работают на разных машинах, то данные посылаются по сети, если же компьютер один, то для передачи данных используется внутренний канал (рис. 1).

Общая схема общения программ-клиентов и X-сервера

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

Чтобы получить на экране какие-то более содержательные изображения, одного Х-сервера недостаточно, надо запустить менеджер окон и хотя бы одну программу-клиент, которая будет формировать изображение, и обрабатывать сообщения о действиях пользователя (например, щелчок кнопкой мыши). В роли «клиентов» Х-сервера выступают приложения, работающие с X Window, например, графический редактор GIMP, текстовый редактор OpenOffice, эмулятор терминала xterm и другие. Специфический клиент, называемый оконным менеджером, ответственен за внешний вид X сессии. Работа оконного менеджера – обеспечивать внешний вид и функциональность элементов графического интерфейса, а так же обрабатывать ввод с мыши и клавиатуры.

Задачи, выполняющиеся в X Window, активно используют для ввода информации клавиатуру. Когда пользователь нажимает или отпускает клавишу, сервер получает соответствующий сигнал, который преобразуется в событие и отправляется в очередь программы, имеющей фокус ввода (input focus).

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

Х-сервер при запуске инициализирует режим видеокарты с определенным режимом с установленным разрешением и частотами развёртки. Посредством некоторых библиотек можно добиться, чтобы видеокарта обрабатывала встроенные команды, такие как псевдо-3D-изображения, например библиотека MESA.

Когда Х-сервер запускается, он инициализирует один или несколько «дисплеев». Каждый «дисплей» включает в себя не только видео-компонент, но и клавиатуру, мышь и другие устройства ввода.

Базовым понятием в X является окно. Оно представляет прямоугольную область на экране (рис. 2).

Общий вид окна X Window

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

На данный момент самыми популярными оконными менеджерами являются KDE (The K Desktop Environment) и GNOME (GNU Network Object Model Environment). Каждый, из этих проектов имеет широкий спектр приложений. Различия между KDE и GNOME не очень велики. Они выглядят по-разному, так как написаны с различными GUI toolkit (библиотека виджетов, виджет – функция высокого уровня). KDE основан на Qt библиотеке от Troll Tech AS, в то время как, GNOME основан на GTK, наборе инструментов, изначально разработанном для GIMP (GNU Image Manipulation Program). Так как проекты независимы, то и разрабатываются они разными дизайнерами и программистами, с разными стилями разработки и с различной философией. Тем не менее, результат в обоих случаях, фундаментально идентичен: полная, тесно интегрированная рабочая среда и набор приложений. По функциональности и внешнему виду, обе среды предоставляют все те же функции, что и другие операционные системы.

В Х есть ряд отличительных возможностей, это полная совместимость всех программ с любым оконным менеджером, т.е. независимо от того, на основе какой из них разработано приложение, оно будет запускаться из любой оболочки рабочего стола. Правда, последние версии программ обычно требуют самых свежих версий библиотек. Помимо библиотек, обеспечивающих обращение прикладной программы к функциям Х-сервера, в Linux имеются и средства для работы с графикой на низком уровне – прежде всего для взаимодействия с 3D-ускорителями. Наиболее признанным официальным стандартом трехмерной графики в Linux считается OpenGL.

Ниже представлены некоторые изменения, которые будут внесены в версию 7.1:

  • добавлена поддержка дополнительным платформ;
  • добавлена возможность настройки в процессе выполнения XWindow;
  • будет удалён встроенный драйвер клавиатуры.

О.В. Сокольникова