Понимание архитектуры X11
Пользователи, знакомые с Windows или MacOS, часто находят некоторые аспекты системы X Window System удивительными. Этот раздел вводит некоторые базовые концепции X на высоком уровне. Для более подробной информации, книга, которую большинство людей используют, называется “Руководство по программированию Xlib” Адриана Най; эта книга является первой частью серии O’Reilly X Window System.
Стандарты являются еще одним важным ресурсом, если вы углубляетесь в низкоуровневые детали X11, в частности, спецификации ICCCM и Extended Window Manager Hints. freedesktop.org содержит ссылки на многие соответствующие спецификации.
Руководство GDK охватывает
Сервер, клиент, диспетчер окон
В других системах окон, как правило, вся функциональность реализована в самом приложении. В X каждое приложение включает три различных программы: сервер X, приложение (называемое клиентом, потому что оно является клиентом сервера X) и специальный клиент, называемый диспетчером окон.
Сервер X отвечает за управление ресурсами, обработку запросов на отрисовку и отправку событий, таких как события клавиатуры и мыши, заинтересованным приложениям. Так что приложения-клиенты могут попросить сервер X создать окно, нарисовать окружность или переместить окна.
Диспетчер окон отвечает за отрисовку рамки или границ вокруг окон; он также имеет решающее слово в отношении размера каждого окна и состояний окна, таких как сворачивание, разворачивание и так далее. В Windows и MacOS большинство этих задач выполняется приложением. В X11, если вы хотите изменить состояние окна или изменить его рамку, вы должны попросить диспетчер окон сделать это от вашего имени, используя установленный конвенцию.
GTK имеет функции для запроса выполнения различных действий диспетчером окон; см., например, gtk_window_minimize() или gtk_window_maximize(). Имейте в виду, что большинство диспетчеров окон игнорируют некоторые запросы время от времени в интересах удобного пользовательского интерфейса.
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/gtk-X11-arch.html