Протоколы и архитектура X Window System

Логотип X Window System

В вычислительной технике X Window System (обычно: X11 или X) — это сетевая прозрачная оконная система для растровых дисплеев. В этой статье подробно описываются протоколы и техническая структура X11.

Модель клиент-сервер и прозрачность сети

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

X использует модель клиент-сервер . Программа X-сервера запускается на компьютере с графическим дисплеем и взаимодействует с различными клиентскими программами . X-сервер действует как посредник между пользователем и клиентскими программами, принимая запросы на TCP-порт 6000 плюс номер дисплея [1] для графического вывода (окна) от клиентских программ и отображая их пользователю (дисплею), а также получая пользовательский ввод (клавиатура, мышь) и передавая его клиентским программам.

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

Протокол связи между сервером и клиентом работает прозрачно для сети : клиент и сервер могут работать на одной и той же машине или на разных, возможно, с разными архитектурами и операционными системами . Клиент и сервер могут безопасно общаться через Интернет , туннелируя соединение через зашифрованное соединение. [2]

Принципы проектирования

Боб Шейфлер и Джим Геттис изложили ранние принципы X следующим образом (перечислены в Scheifler/Gettys 1996):

  • Не добавляйте новые функциональные возможности, если только разработчик не сможет завершить реальное приложение без них.
  • Решить, чем система не является, так же важно, как и решить, чем она является. Не обслуживайте все потребности мира; скорее, сделайте систему расширяемой, чтобы дополнительные потребности могли быть удовлетворены в соответствии с принципом совместимости.
  • Единственное, что может быть хуже обобщения на основе одного примера, — это обобщение на основе отсутствия примеров вообще.
  • Если проблема не до конца понятна, то, вероятно, лучше вообще не предлагать никакого решения.
  • Если вы можете получить 90 процентов желаемого эффекта за 10 процентов работы, используйте более простое решение. (См. также Хуже — лучше .)
  • Максимально изолируйте сложность.
  • Предоставьте механизм, а не политику. В частности, передайте политику пользовательского интерфейса в руки клиентов.

Первый принцип был изменен во время проектирования X11 следующим образом: не добавляйте новую функциональность, если вы не знаете, какое-либо реальное приложение, которому она потребуется.

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

Основной протокол

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

После установления соединения клиент и сервер обмениваются по каналу четырьмя различными типами пакетов:

  1. Запрос: клиент запрашивает информацию у сервера или просит его выполнить действие.
  2. Ответ: сервер отвечает на запрос. Не все запросы генерируют ответы.
  3. Событие: сервер отправляет клиенту событие, например, ввод с клавиатуры или мыши, перемещение, изменение размера или отображение окна.
  4. Ошибка: сервер отправляет пакет с ошибкой, если запрос недействителен. Поскольку запросы ставятся в очередь, пакеты с ошибками, сгенерированные запросом, могут не отправляться немедленно.

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

Окна

Возможное размещение некоторых окон: 1 — корневое окно, которое покрывает весь экран; 2 и 3 — окна верхнего уровня; 4 и 5 — дочерние окна 2. Части окна, находящиеся за пределами его родителя, не видны.

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

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

Идентификаторы

X-сервер хранит все данные об окнах, шрифтах и ​​т. д. Клиент знает идентификаторы этих объектов — целые числа, которые он может использовать в качестве имен для них при взаимодействии с сервером. Например, если клиент хочет создать окно, он запрашивает у сервера его создание и (в случае успеха) получает в ответ идентификатор, который сервер связывает с вновь созданным окном. Идентификатор может быть позже использован клиентом для запроса, например, строки, которая должна быть отрисована в окне.

Идентификаторы уникальны для сервера, а не только для клиента; например, нет двух окон с одинаковым идентификатором, даже если они созданы двумя разными клиентами. Клиент может получить доступ к любому объекту, указав его идентификатор, даже если другой клиент создал этот объект.

Атрибуты и свойства

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

Свойство характеризуется именем, типом и значением. Свойства напоминают переменные в императивных языках программирования , в том смысле, что приложение может создать новое свойство с заданным именем и заданным типом и сохранить в нем значение. Свойства связаны с окнами: два свойства с одинаковым именем могут существовать в двух разных окнах, имея разные типы и значения.

Свойства в основном используются для межклиентского взаимодействия. Например, свойство named WM_NAMEхранит имя окна; оконные менеджеры обычно считывают это свойство и отображают имя окна в верхней его части.

Программа xpropможет отображать свойства окна. В частности, xprop -rootпоказывает свойства корневого окна, включающие в себя X-ресурсы (параметры программ).

События

События — это пакеты, отправляемые сервером клиенту для сообщения о том, что произошло что-то, что может заинтересовать клиента. Клиент может запросить сервер отправить событие другому клиенту; это используется для связи между клиентами. Например, когда клиент запрашивает текст, который в данный момент выбран, событие отправляется клиенту, который в данный момент обрабатывает окно, содержащее выбор.

Содержимое окна может быть «уничтожено» в некоторых условиях (например, если окно закрыто). Всякий раз, когда область уничтоженного содержимого становится видимой, сервер генерирует событие, Exposeчтобы уведомить клиента о том, что часть окна должна быть отрисована.

Другие события могут служить для уведомления клиентов о вводе данных с клавиатуры или мыши, о создании новых окон и т. д.

Некоторые виды событий всегда отправляются клиенту, но большинство видов событий отправляются только в том случае, если клиент ранее заявил о своей заинтересованности в них, поскольку клиенты могут быть заинтересованы только в некоторых видах событий. Например, клиент может быть заинтересован в событиях, связанных с клавиатурой, но не в событиях, связанных с мышью.

Цветовые режимы

То, как X Window System обрабатывает цвета, иногда может сбивать пользователей с толку, и исторически поддерживалось несколько различных режимов. Большинство современных приложений используют полный цвет (24-битный цвет, 8 бит для каждого из красного, зеленого и синего), но старые или специализированные приложения могут требовать другой цветовой режим. Многие коммерческие специализированные приложения используют PseudoColor.

Протокол X11 фактически использует одно 32-битное целое число без знака — называемое пиксельным значением — для представления одного цвета в большинстве графических операций. При передаче интенсивности основных цветов для каждого компонента цвета используется 16-битное целое число. Существуют следующие представления цветов; не все из них могут поддерживаться на определенном устройстве.

  • DirectColor: значение пикселя разлагается на отдельные красные, зеленые и синие подполя. Каждое подполе индексирует отдельную цветовую карту. Записи во всех цветовых картах могут быть изменены.
    • TrueColor: то же, что и DirectColor, за исключением того, что записи цветовой карты предопределены оборудованием и не могут быть изменены. Обычно каждая из красных, зеленых и синих цветовых карт обеспечивает (почти) линейный градиент интенсивности.
  • GrayScale: Значение пикселя индексирует одну цветовую карту, содержащую монохромные интенсивности. Записи цветовой карты можно изменять.
    • StaticGray: то же, что и GrayScale, за исключением того, что записи цветовой карты предопределены оборудованием и не могут быть изменены.
  • PseudoColor ( Chunky ): Значение пикселя индексирует одну цветовую карту, содержащую интенсивности цветов. Записи цветовой карты можно изменять.
    • StaticColor: то же, что и PseudoColor, за исключением того, что записи цветовой карты предопределены оборудованием и не могут быть изменены.

Xlib и другие клиентские библиотеки

Большинство клиентских программ взаимодействуют с сервером через клиентскую библиотеку Xlib . Помимо Xlib, библиотека XCB работает более тесно с протоколом X. В частности, большинство клиентов используют такие библиотеки, как Xaw , Motif , GTK+ или Qt , которые в свою очередь используют Xlib для взаимодействия с сервером. Qt перешел с Xlib на XCB с выпуском 5.0, но клиентские программы были почти полностью не затронуты этим изменением.

Межклиентское общение

Протокол ядра X Window предоставляет механизмы для связи между клиентами: свойства окон и события, в частности события сообщений клиент-клиент. Однако он не определяет какой-либо протокол для такого взаимодействия. Вместо этого, отдельный набор соглашений о межклиентской связи управляет этими протоколами.

Inter -Client Communication Conventions Manual определяет протокол для обмена данными через выборки и взаимодействия приложений с оконным менеджером. Некоторые посчитали эту спецификацию сложной и запутанной; [3] [4] согласованность внешнего вида и поведения приложения и коммуникации обычно решается путем программирования для заданной среды рабочего стола.

Протокол Inter-Client Exchange (ICE) определяет структуру для построения протоколов взаимодействия между клиентами, чтобы программисты могли построить определенный протокол поверх него. В частности, протокол X Session Management (XSMP) — это протокол на основе ICE, который управляет взаимодействием между приложениями с менеджером сеансов , который является программой, которая заботится о сохранении состояния рабочего стола в конце интерактивного сеанса и восстановлении его при повторном запуске другого сеанса с тем же пользователем.

Спецификации freedesktop включают в себя новые соглашения, в том числе соглашение о перетаскивании Xdnd (используется для передачи данных путем их выбора и перетаскивания в другое окно) и соглашение о встроенных приложениях Xembed (в котором подробно описывается, как приложение может работать в подокне другого приложения).

Выделения, буферы вырезания и перетаскивание

Механизмы выделения, буферов вырезания и перетаскивания в системе X Window позволяют пользователю переносить данные из одного окна в другое. Выделения и буфер вырезания используются (обычно), когда пользователь выделяет текст или другие данные в окне и вставляет их в другое окно. Перетаскивание используется, когда пользователь выделяет что-то в окне, затем щелкает по выделенному и перетаскивает его в другое окно.

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

Пользователи могут передавать между клиентами данные различных типов: обычно это текст, но также это может быть пиксельная карта, число, список объектов и т. д.

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

Оконный менеджер

Менеджер окон — это программа, которая управляет общим внешним видом окон и других графических элементов графического пользовательского интерфейса . Различия во внешнем виде X Window System в разных инсталляциях в основном обусловлены использованием разных менеджеров окон или разными конфигурациями менеджера окон.

Менеджер окон отвечает за определение положения окон, размещение декоративной рамки вокруг них, обработку значков, обработку щелчков мыши за пределами окон (на «фоне»), обработку определенных нажатий клавиш и т. д.

С точки зрения X-сервера, оконный менеджер работает как клиент, как и любой другой клиент. Начальное положение и декоративные рамки вокруг окон обрабатываются оконным менеджером с помощью следующих запросов:

  1. приложение может попросить сервер не удовлетворять запросы на отображение (показ) подокон данного окна, а вместо этого отправить событие;
  2. приложение может запросить изменение родителя окна.

Менеджер окон использует первый запрос для перехвата любого запроса на отображение окон верхнего уровня (потомков корневого окна). Всякий раз, когда другое приложение запрашивает отображение окна верхнего уровня, сервер не делает этого, а вместо этого отправляет событие менеджеру окон. Большинство менеджеров окон переподчиняют окно: они создают большее окно верхнего уровня (называемое окном фрейма) и переподчиняют исходное окно как его дочернее. Графически это соответствует размещению исходного окна внутри окна фрейма. Пространство окна фрейма, которое не занято исходным окном, используется для декоративной рамки вокруг окна («границы» и «заголовка»).

Менеджер окон управляет щелчками мыши в окне фрейма. Это позволяет, например, пользователю перемещать или изменять размер окна, щелкая и перетаскивая границу или заголовок.

Менеджер окон также обрабатывает значки и связанные с ними визуальные элементы графического пользовательского интерфейса. Значки не существуют на уровне протокола ядра X Window. Они реализуются менеджером окон. Например, всякий раз, когда окно должно быть «иконифицировано», менеджер окон FVWM отменяет сопоставление окна и создает окно для имени значка и, возможно, другое окно для изображения значка. Поэтому значение и обработка значков полностью определяются менеджером окон: некоторые менеджеры окон, такие как wm2, вообще не реализуют значки.

Менеджер сеанса

Грубо говоря, состояние сеанса это «состояние рабочего стола» в данный момент времени: набор окон с их текущим содержимым. Точнее, это набор приложений, управляющих этими окнами, и информация, которая позволяет этим приложениям восстанавливать состояние своих управляемых окон при необходимости. Программа, известная как менеджер сеансов X, сохраняет и восстанавливает состояние сеансов.

Наиболее узнаваемым является использование менеджера сеансов, позволяющего пользователю выходить из интерактивного сеанса, но при повторном входе обнаруживать точно такие же окна в том же состоянии. Чтобы это работало, программа менеджера сеансов сохраняет имена запущенных приложений при выходе из системы и снова запускает их при входе в систему. Чтобы также восстанавливалось состояние приложений (что необходимо для восстановления содержимого окон), приложения должны иметь возможность сохранять свое состояние выполнения по запросу от менеджера сеансов и загружать его обратно при повторном запуске.

X Window System включает в себя менеджер сеансов по умолчанию, называемый xsm. Разработчики написали другие менеджеры сеансов для определенных настольных систем. Основные примеры включают ksmserver, xfce4-session, и gnome-sessionдля KDE , Xfce и GNOME соответственно.

X-дисплейный менеджер

Программа, известная как X display manager, показывает графическое приглашение на вход в систему в X Window System. В более общем смысле, display manager запускает один или несколько X-серверов на локальном компьютере или принимает входящие соединения с X-серверов, работающих на удаленных компьютерах. Локальные серверы запускаются display manager, который затем подключается к ним, чтобы предоставить пользователю экран входа в систему. Удаленные серверы запускаются независимо от display manager и подключаются к нему. В этой ситуации display manager работает как графический telnet- сервер: X-сервер может подключиться к display manager, который запускает сеанс; приложения, которые используют этот сеанс, работают на том же компьютере display manager, но имеют вход и выход на компьютере, где работает X-сервер (это может быть компьютер перед пользователем или удаленный компьютер).

X Window System поставляется с XDM в качестве базового поставляемого менеджера дисплеев. Другие менеджеры дисплеев включают GDM ( GNOME ), KDM / SDDM ( KDE ), WDM (использующий набор виджетов WINGs, используемый в Window Maker ) и entry (использующий архитектуру, используемую в Enlightenment v.17).

Элементы пользовательского интерфейса

Ранние наборы инструментов виджетов для X включали Xaw ( Athena Widget Set, 1983), OLIT ( OPEN LOOK Intrinsics Toolkit, 1988), XView (1988), Motif (1980-е) и Tk . OLIT и XView функционируют как базовые наборы инструментов для устаревшей среды рабочего стола OpenWindows компании Sun.

Motif предоставляет базовый набор инструментов для Common Desktop Environment (CDE), среды рабочего стола, используемой в коммерческих системах Unix, таких как Solaris , AIX и HP-UX . (Solaris 10 включает в себя как CDE, так и GNOME , причем последняя является предпочтительной средой рабочего стола по состоянию на 2010 год [обновлять].)

Разработанные в последнее время наборы инструментов включают Qt (1991- , используется KDE ), GTK+ (1997- , используется GNOME), wxWidgets (1992- ), FLTK (1998- ), FOX (1997- ) и fpGUI (2005- по настоящее время).

Расширения

Шейфлер и Геттис разработали X-сервер как простой, но расширяемый. Таким образом, большая часть функциональности теперь находится в расширениях протокола.

На уровне протокола каждому расширению могут быть назначены новые типы пакетов запроса/события/ошибки. Клиентские приложения получают доступ к функциям расширения через библиотеки расширений. Добавление расширений в текущие реализации X-сервера, как сообщается, затруднено из-за отсутствия модульности в конструкции сервера. [5] Долгосрочной целью проекта XCB является автоматизация генерации как клиентской, так и серверной сторон расширений из описаний XML-протокола.

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

РасширениеОписание и примечания
КомпозитныйВнеэкранный рендеринг целых иерархий окон, позволяющий приложениям и менеджерам композиций применять эффекты в любом месте по пути. Требуется для таких вещей, как альфа-прозрачность для окон и падающих теней.
ПовреждатьОтслеживает измененные области окон и минимизирует использование полосы пропускания, необходимой для поддержания отображения в актуальном состоянии.
XИсправленияНесколько изменений протокола.
Расширенная визуальная информация (EVIE)Позволяет клиенту определять информацию о визуальных элементах ядра X, выходящую за рамки того, что предоставляет основной протокол.
Распределенная многоголовочная система (DMX)Взаимодействует с сервером DMX X.
Компенсация движения X-Video (XvMC)Передача компенсации движения видео на графический процессор, который ее поддерживает.
ГЛКСПоддержка рендеринга OpenGL в Windows.
XRenderАппаратное ускорение композитинга изображений с альфа-смешением.
Изменение размера и поворот (RANDR)Динамически изменяйте размер, отражение, поворот и частоту обновления X-экрана.
КсинерамаРазделение рабочего стола на несколько мониторов.
Сигнализация управления питанием дисплея ( DPMS )Позволяет управлять режимами энергосбережения монитора.
Расширение клавиатуры XУлучшенная обработка раскладки клавиатуры.
ДВОЙНОЙ БУФЕРОбеспечивает анимацию без мерцания.
ЗАПИСЫВАТЬИспользуется при тестировании сервера
MIT-SHMИспользование общей памяти для повышения производительности.
СИНХРОНИЗАЦИЯПредоставляет таймеры и синхронизирует клиентов (например, работающих на разных хостах и ​​операционных системах) из X-сервера. Создан из-за ошибок, внесенных сетью.
XТЕСТДля генерации фейкового ввода используйте xteприложение из пакета XAutomation.
XInputExtensionПоддержка устройств ввода, таких как графические планшеты; реализуется как libXi [6]
БОЛЬШИЕ ЗАПРОСЫПозволяет выполнять запросы длиной более 262 140 байт.
XC-РАЗНОЕИсправление переполнения диапазона идентификаторов ресурсов [7]
Расширение X-видеоПоддержка аппаратных видеоналожений и аппаратного масштабирования видео при воспроизведении. Также называется Xv (не путать с программой xv ).
ФормаПоддержка непрямоугольных и частично прозрачных (бинарных, без альфа-прозрачности) окон.
MIT-SCREEN-SAVERЗапускает программу, когда X-сервер включает встроенную заставку
БЕЗОПАСНОСТЬОбеспечивает повышенную безопасность сервера [8]
X-РесурсПозволяет запрашивать X-сервер об использовании его ресурсов.
XFree86-Большой шрифт
XFree86-DGAОбеспечивает прямой линейный доступ к фреймбуферу (прямой доступ к графике). Будет в основном удален в X.Org 7.6 [9]
XFree86-Расширение VidModeДинамически настраивает модельные линии и гамму.

Устаревшие расширения

РасширениеОписание и примечания
Низкая пропускная способность X (LBX)Заменен на VNC, туннелируемый через защищенное соединение оболочки, оказался быстрее, чем LBX.
ПЕКС«Расширение PHIGS для X»; поддержка API графа сцены PHIGS 3D. Вместо него часто используется GLX с OpenGL.
Расширение XImageВместо этого используется MIT-SHM.
XEvIEРасширение перехвата событий X. Разработано для пользователей, которым необходимо перехватывать все события клавиатуры и мыши. Удалено в X.Org 7.5. [10]
XFree86-РазноеЗаменено входными свойствами . Удалено в X.Org 7.5. [10]
DEC-XTRAPXTrap позволяет управляющему X-клиенту эмулировать взаимодействие реального пользователя с рабочей станцией X. Регистрируя себя для мониторинга визуального вывода, фактического ввода с клавиатуры и мыши и для имитации ввода с устройства. Типичным вариантом использования будет точное измерение производительности воспринимаемого пользователем интерактивного времени отклика в миллисекундах. Скрипт эмуляции пользователя может быть записан и затем многократно воспроизведен. XTrap был выпущен с открытым исходным кодом инженерами Digital Equipment Corporation около 1988 года. Удален в X.Org 7.5. [10]
TOG-CUPПредоставляет политику использования цветовой карты. Удалено в X.Org 7.5. [10]
MIT-РАЗНОЕ-НЕСТАНДАРТНОЕПоддержка различных функций обратной совместимости для клиентов, которые использовали ранние реализации X11. Для совместимости с клиентами Pre-X11R4. Отключено с 2006 года. Удалено в X.Org 7.5. [10]
XC-APPGROUPУдалено в X.Org 7.5. [10]
XPRINTУстарело. Позволяет приложению выводить вывод на принтер так же, как и на любое другое устройство отображения. Удалено в мае 2008 г. [11]

Смотрите также

Примечания

  1. ^ "Xorg, Сетевые подключения". Страницы руководства X11R7.7. X.Org foundation . Получено 23 декабря 2023 г.
  2. ^ Клиент-серверная модель
    • IBM 1994, стр.2-11
    • Магуоло 2005
    • Манрике 2001
    • Стивенс 1994, стр.430-433
    • Кверсия и О'Рейли, 1993, стр. 13–17.
  3. Хопкинс, Дон (не указан) (май 1994). Гарфинкель, Симсон ; Вайзе, Дэниел; Штрассманн, Стивен (ред.). Справочник ненавистников UNIX (PDF) . Сан-Матео, Калифорния, США: IDG Books . стр. 126 Катастрофа X-Windows. ISBN 978-1-56884-203-5. OCLC  30681401 . Получено 11 июля 2011 г. . ICCCM невероятно плотный, его нужно соблюдать до последней буквы, и он все равно не работает. Соответствие ICCCM — одно из самых сложных испытаний при внедрении X-инструментариев, оконных менеджеров и даже простых приложений. Это настолько сложно, что многие преимущества просто не стоят хлопот по соответствию.
  4. ^ Рэймонд, Эрик С. (30 сентября 2008 г.). «The Unix Hater's Handbook, Reconsidered» (Переосмысление справочника ненавистника Unix). Вооружен и опасен . Получено 11 июля 2011 г. ICCCM примерно так же ужасен, как описывают его авторы [Unix Hater's Handbook], но в наши дни это трудно заметить, поскольку современные инструментальные средства и оконные менеджеры довольно хорошо справляются с сокрытием уродства от приложений.
  5. ^ Gettys, James ; Karlton, Philip L.; McGregor, Scott (10 декабря 1990 г.). "The X Window System, Version 11" (PDF) . Digital Equipment Corporation и Silicon Graphics Computer Systems . стр. 36 . Получено 11 июля 2011 г. . X11 не позволяет считывать всю информацию, которая могла храниться на сервере (например, протокол X11 не позволяет запрашивать состояние GC). Это несколько затрудняет достижение модульности.
  6. ^ "X.org libXi Client library for XInput" . Получено 2010-03-02 . libXi - библиотека для расширения X Input
  7. ^ "XC-MISC Extension" (PDF) . Архивировано из оригинала (PDF) 27 сентября 2011 г. . Получено 2010-08-02 .
  8. ^ "Security Extension Specification" (PDF) . Архивировано из оригинала (PDF) 27 сентября 2011 г. Получено 2010-08-02 .
  9. ^ Отключить запросы XFree86-DGA, за исключением относительного движения мыши, пока Xinput 2 не позволит убить все это. X.Org Wiki - Releases/7.6
  10. ^ Объявление о выпуске abcdef 7.5
  11. ^ Зафиксировать удаление XPrint

Ссылки

  1. Манрике, Даниэль (23 мая 2001 г.). "Архитектура системы X Window: обзор". Обзор архитектуры системы X Window HOWTO . Проект документации Linux . Получено 13 июля 2011 г. .
  2. Магуоло, Филиппо (16 декабря 2005 г.). «Архитектура X-Window». Уроки Linux . Маунт-Киско, штат Нью-Йорк, США: Джон Ф. Мур . Проверено 13 июля 2011 г.
  3. Стивенс, В. Ричард (1994). "30.5 X Window System" (PDF) . TCP/IP Illustrated (PDF) . Серия Addison-Wesley professional computing. Том 1, TheProtocols (1-е изд.). Бостон, Массачусетс, США: Addison-Wesley . 30.5 X Window System. ISBN 978-0-201-63346-7. OCLC  246049781 . Получено 13 июля 2011 г. .
  4. IBM Corporation, Международный центр технической поддержки (июль 1994 г.). "1.2 X Concepts" (PDF) . TCP/IP для MVS, VM, OS/2 и DOS: X Window System Guide (PDF) . IBM Redbooks (второе изд.). Research Triangle Park, NC, USA: IBM . X Concepts . Получено 13 июля 2011 г. .
  5. Quercia, Valerie; O'Reilly, Tim (1993) [1988]. Руководство пользователя X Window System: для X11 версии 5. Полные руководства по X Window System. Том 3. Севастополь, Калифорния, США: O'Reilly & Assoc. ISBN 978-1-56592-014-9. OCLC  682229836. LCC  QA76.76.W56 Q47 . Получено 14 июля 2011 г. . На archive.org имеется издание 1990 года.

Дальнейшее чтение

  • Роберт В. Шейфлер и Джеймс Геттис: X Window System: основные и расширенные протоколы, X версия 11, выпуски 6 и 6.1 , Digital Press 1996, ISBN 978-1-55558-148-0 
  • "Введение в пользовательские интерфейсы X11". Архивировано из оригинала 3 января 2007 г.
  • Введение в X Windows[sic]
  • Gettys, Jim (9 декабря 2003 г.). "Open Source Desktop Technology Road Map". Архивировано из оригинала 2 января 2006 г.
  • Фонд X.Org (официальная домашняя страница)
  • Вики Фонда X.Org
  • Внутреннее устройство системы X Window
  • Страницы Кентона Ли о X Window и Motif
  • Учебное пособие по расширению X11
Взято с "https://en.wikipedia.org/w/index.php?title=Протоколы_и_архитектура_системы_X_Window&oldid=1229152185"