Ключевое понятие в X-системе

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

Примерная неполная структура Х-программы.

Она начинается с нескольких необходимых заголовков, за которыми следует ряд определений переменных. Затем осуществляется подключение к Х-серверу, указанному в виде параметра процедуры XOpenDisplay. После этого происходит выделение окну ресурсов, и его дескриптор сохраняется в переменной win. На практике здесь должна происходить инициализация. Затем программа сообщает менеджеру окон о существовании нового окна, чтобы он мог взять окно под свое управление.

Путем вызова процедуры XCreateGC создается графический контекст, в котором сохраняются свойства окна. В более сложных программах в месте может проводиться инициализация. В следующем операторе содержится вызов процедуры XSelectlnput, сообщающей Х-серверу, какие события программа готова обрабатывать. В данном случае программу интересуют щелчки мышью, нажатия клавиш и выводимые на первый план окна. В действительности настоящая программа будет интересоваться и другими событиями. И наконец, процедура XMapRaised осуществляет отображение нового окна на экране, выводя его на первый план. С этого момента окно становится видимым на экране.

Основной цикл состоит из двух операторов и логически выглядит намного проще соответствующего цикла в Windows. Первый оператор получает событие, а второй осуществляет его диспетчеризацию по типу этого события для его дальнейшей обработки. Когда какое-нибудь событие свидетельствует об окончании программы, переменной running присваивается значение 0, и цикл завершается. Перед выходом программа избавляется от графического контекста, окна и подключения.

Следует заметить, что графический интерфейс пользователя нравится далеко не всем. Многие программисты предпочитают традиционный интерфейс, основанный на использовании командной строки, который рассматривался ранее в этом разделе. Х-система управляет им с помощью клиентской программы под названием xterm. Эта программа имитирует работу почтенного интеллектуального терминала VT102, укомплектованного всеми эскейп-последовательностями. Такие редакторы, как vi и emacs, а также другие программы, использующие базу данных termcap, работают в подобных окнах без каких-либо изменений.