[ Содержание ]

Введение в систему X-Window

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

Здесь будет иллюстрация

     Таким образом, большая часть наиболее трудоемкой черновой работы с графикой переносится с центрального компьютера на графические терминалы. Фактически, на графический терминал могут выводить данные не только программы, работающие на центральном компьютере. В случае, если X-сервер включен в сеть общего доступа, то на него одновременно и независимо могут выводить данные программы с разных компьютеров. Поэтому в функции X-сервера обычно входят и функции по ограничению доступа к терминалу с различных станций.

     Разделение места на экране между программами происходит по оконному принципу. Т.е. каждой программе отводится участок экрана, называемый окном (window). Программа запрашивает у сервера создание окна, на что сервер возвращает программе идентификатор окна. Все последующие графические операции происходят со ссылкой на идентификатор созданного окна. Одна программа может открыть несколько окон и реализовать многооконный интерфейс. Каких-либо функций по предоставлению пользователю возможности манипулировать окнами X-сервер не содержит. В этом отношении его задача - только графический вывод на экран. Когда запускается X-сервер, он автоматически создает самое первое окно, которое называется корневым (root window). Это окно занимает весь экран и расположено всегда позади всех других окон.

     Управление окнами, запуск приложений и дополнительные сервисные фунции выполняет оконный менеджер (window manager). Он не является непосредственной частью системы X-Window, это просто привелегированная программа, которая запускается после запуска X-сервера и на которую возложена задача по предоставлению пользователю удобного интерфейса работы с программами. Обычно эта программа запускается самой первой и затем она сама запускает остальные необходимые программы. В качестве примеров оконных менеджеров можно привести программы FVWM, Afterstep, IceWM, KDE, GNOME.

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

     Для организации диалога между приложением и терминалом используется библиотека, реализующая протокол обмена командами с X-сервером. Для обеспечения максимальной переносимости программ используется стандартная библиотека Xlib, которая адаптирована на многие платформы. Эта библиотека содержит только поддержку функций по работе с X-сервером и оконным менеджером. Функции по организации диалога высокого уровня берут на себя библиотеки GUI (Graphic User Interface library).

     Для C/C++ до недавнего времени наиболее широко были распространены библиотеки qt и Motiff. В последнее время начали быстро развиваться новые библиотеки GUI - KDElib и GTK. В большей степени, отсутствие каких-либо общих стандартов на GUI является ахиллесовой пятой платформы X-Window, поскольку программы, разработанные на разных библиотеках GUI практически не имеют никаких механизмов взаимодействия.


[ Содержание ]