2.5.1. Механизм "свойств".

    Как мы уже упоминали ранее, "свойство" есть набор данных, ассоциированных с окном. Они хранятся в специальных "таблицах" в памяти компьютера, на котором работает сервер. Каждое "свойство" имеет имя. Разные окна могут иметь "свойства" с одинаковыми именами.

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

    Данные "свойства" рассматриваются сервером как массив единиц длиной 8, 16 или 32 бита. Их конкретная интерпретация осуществляется программами-клиентами.

    Каждое "свойство" имеет тип, который, в свою очередь, также задается тем или иным "свойством". Например "свойство", соответствующее атому XA_STRING, задает тип - строка.

    Для работы со "свойствами" кроме XInternAtom() используются следующие процедуры: XChangeProperty() - меняет данные "свойства": XGetWindowProperty() - позволяет получить данные "свойства".

    Особую роль играют "свойства", данные которых содержат строки текста. Они так и называются "текстовыми" и имеют тип "TEXT". Таковыми являются, например, имена (заголовки) окно, имена пиктограмм и т. д. Данные текстового "свойства" описываются структурой XTextProperty. Процедура XStringListToTextProperty() переводит список строк в набор данных типа XTextProperty. XTextPropertyToString() выполняет обратное преобразование.