: Программирование в среде X Window на основе библиотеки Xlib :

С о д е р ж а н и е

Введение

I. Базовые понятия X Window
Характеристики X-окна
Менеджер окон
Свойства и атомы
Первый пример
События
Атрибуты окна
Операции над окнами

II. Текст и графика
Графический контекст
Характеристики графического контекста
Вывод текста, работа с шрифтами
Использование цвета
Битовые и пиксельные карты
Изменяем курсор мыши

III. Работа с внешними устройствами
Клавиатура
Мышь

IV. Ресурсы программ
Формат файла ресурсов
Доступ к ресурсам программ

V. Взаимодействие клиентов
Механизм свойств
Работаем с менеджером окон

VI. Дополнительная информация

VII. Литература

Менеджер окон

X-сервер умеет ловко манипулировать окнами, но сам никогда ничего не делает, ждёт команд от пользовательской программы. Нужна самостоятельная программа, которая будет отслеживать перекрытие окон, фокус, заниматься изменением размера, перемещением и управлять окнами с помощью клавиатуры или мыши. Для решения этой проблемы нужен специальный клиент, который называется менеджер окон (Window manager). В стандартном дистрибутиве X Window есть подобная программа twm. Возможности встроенного менеджера ограничены, но, позволяют осуществлять базовые действия, более развитым оконным менеджером является, программа mwm (Motif Window Manager).

Менеджеру для управления окнами нужно знать их характеристики. Для того, что иметь заголовки окон, отслеживать чтобы окно не меньше или больше определённых размеров, минимизировать окно (менеджер должен знать имя и вид пиктограммы), нужно сообщить свои пожелания менеджеру. Сделать это можно двумя способами: при создании окна могут быть переданы рекомендации (hints) о начальном положении окна, его ширине и высоте, минимальных и максимальных размерах и т.д. Второй способ, можно использовать встроенный в X Window способ общения между программами - механизм свойств.

Свойства и атомы

Разработчики X нуждались в способе позволить клиентам общаться произвольными данными друг с другом, для этого используется механизм свойств(properties). Свойство - это именованный набор данных, связанная с некоторым объектом (например, окном), и которая доступна всем клиентам X. Свойства используются клиентами, чтобы хранить информацию, которая может понадобиться другим клиентам, или если необходимо знать информацию используемую другими клиентами.

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

Каждое свойство имеет название и уникальный компактный идентификатор - атом. Обычно имена свойств записываются большими буквами, например: MY_PROPERTY. Атомы используются для доступа к содержимому свойств с тем, чтобы уменьшить количество информации, пересылаемой по сети между клиентами и X сервером.

В X предусмотрен набор процедур, позволяющих перевести им свойства в уникальный атом, и, наоборот, по атому получить необходимые данные.

Некоторые свойства и соответствующие им атомы являются предопределенными и создаются в момент инициализации сервера. Этим атомам соответствуют символические константы, определенные в файлах-заголовках библиотеки Xlib. Эти константы начинаются с префикса XA_, например XA_WM_HINTS.

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

<<< Содержание >>>