2012-03-21 8 views
3

Каков основной механизм, с помощью которого инструменты GUI (такие как Qt, GTK) работают вместе с менеджерами окон?Как инструменты GUI взаимодействуют с менеджерами окон в Linux?

Насколько я понял, графические инструменты GUI могут рисовать собственное окно, не требуя оконного менеджера. Однако точка, которая меня смущает, - это когда и как диспетчер окон обнаруживает «новый запрос окна» на x-сервере и рисует его рамы, заголовки и т. Д. Вокруг этого окна? Конечно, требуется какая-то неявная координация. Однако, с точки зрения кодирования, инициализации оконного менеджера кажутся полностью прозрачными для наборов инструментов GUI.

Можно ли сказать, что как графические инструменты, так и оконные менеджеры - это 2 одноранговых клиента x окна? Является ли ответственностью x-сервера вызывать (уведомлять) оконных менеджеров о вовлечении в процесс создания нового окна? Если это так, кто определяет позицию «окна приложения», когда нет оконного менеджера?

+1

Это еще более странно, когда терминал X открывает «локальное» окно, и оно выглядит украшенным WM. –

ответ

2

Основные mechani связи см - Свойства окон. Отправной точкой для рассмотрения является ICCCM, в частности Chapter 4. Это охватывает такие вещи, как декорации окон и кнопки.

Современные настольные системы значительно расширяют соглашения, описанные в ICCCM, см. standards/freedesktop.org/wm-spec для получения дополнительной информации. Эти расширения охватывают такие вещи, как пейджеры и панели задач.

Кроме того, диспетчер окон имеет особые привилегии, а именно, он может видеть и перехватывать все настройки конфигурации окна, изменения размера и отображения. Это называется перенаправлением, см., Например, here. Наверное, вы в основном заинтересованы в таком виде общения.

Только один клиент одновременно может выполнить перенаправление, этот клиент определил как оконный менеджер. Во всех остальных отношениях клиенты являются сверстниками.

Все запросы к созданию окна/конфигурации включают координаты окна. Оконные менеджеры могут перехватывать и изменять эти координаты. Если диспетчер окон отсутствует, запросы выполняются сервером X так же, как их отправляют приложения.

0

Ну, все в конечном итоге скоординировано с помощью X-сервера. Есть некоторое чтение, и я верю, что вы найдете ответы, которые вы ищете ...

Некоторые общая информация:

http://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture#Inter-client_communication

http://en.wikipedia.org/wiki/X_window_manager#How_X_window_managers_work

Xlib progamming руководство - особенно в главе 9, 10 и 14:

http://tronche.com/gui/x/xlib/