Как инструменты GUI взаимодействуют с оконными менеджерами в Linux? - PullRequest
3 голосов
/ 21 марта 2012

Каков основной механизм, который заставляет GUI-инструментарии (такие как Qt, GTK) работать вместе с оконными менеджерами?

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

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

Ответы [ 2 ]

2 голосов
/ 09 марта 2014

Основной механизм обмена данными через свойства windows . Отправной точкой для рассмотрения является ICCCM , в частности Глава 4 . Это касается таких вещей, как оформление окон и пуговицы.

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

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

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

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

0 голосов
/ 02 апреля 2012

Ну, все в конечном итоге координируется через 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 - особенно главы 9, 10 и 14:

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

...