Spec-Zone.ru › GTK 3.22

Использование GTK+ в системе X Window

Использование GTK+ в системе X Window — аспекты использования GTK+, специфичные для X11

GTK+ для системы X Window

В UNIX-подобных системах X-бэкэнд является стандартным для GTK+. Поэтому вам не нужно делать ничего особенного при его компиляции, и всё должно работать «из коробки».

Чтобы интегрировать низкоуровневые функции Xlib в программу GTK, обратитесь к разделу Взаимодействие GDK с системой X Window в руководстве GDK.

GTK+ включает механизм встраивания между процессами в виде виджетов #GtkSocket и #GtkPlug. Они специфичны для X11, и вам необходимо включить заголовок gtk/gtkx.h, чтобы использовать их.

Параметры командной строки, специфичные для X11

X-бэкэнд понимает некоторые дополнительные аргументы командной строки.

--display display. Имя дисплея X для открытия вместо дисплея, указанного в переменной окружения DISPLAY.

Переменные окружения, специфичные для X11

Бэкэнд GDK для X11 можно настроить с помощью дополнительных переменных окружения.

GDK_SYNCHRONIZE. Если установлена, GDK выполняет все запросы X синхронно. Это полезно для отладки, но значительно замедляет производительность.

GDK_CORE_DEVICE_EVENTS. Если установлена, GDK не использует расширение XInput и реагирует только на стандартные события ввода X.

GDK_SCALE. Должна быть установлена как целое число, обычно 2. Если установлена, GDK масштабирует все окна на указанный множитель. Масштабированное отображение предназначено для использования на дисплеях с высокой плотностью пикселей. Обычно GDK определяет подходящий множитель масштаба для каждого монитора из системы отображения. Эта переменная окружения позволяет переопределить это.

GDK_DPI_SCALE. Это может быть полезно при использовании масштабируемых приложений GTK вместе с не масштабируемыми приложениями на дисплеях с высокой плотностью пикселей. В этом случае разрешение шрифтов можно удвоить, чтобы сделать не масштабируемые приложения читаемыми, и GDK_DPI_SCALE=0.5 может быть установлена для компенсации этого в приложениях GTK, которые уже масштабированы, установив GDK_SCALE=2.

Архитектура X11

Пользователи, приходящие из среды Windows или macOS, часто сталкиваются с некоторыми особенностями системы X Window System. Этот раздел кратко знакомит с основными понятиями X. Более подробная информация содержится в книге Руководство по программированию Xlib Адриана Най; это первая книга серии O'Reilly по системе X Window.

Стандарты — ещё один важный ресурс, если вы работаете с низкоуровневыми деталями X11, в частности спецификации ICCCM и Extended Window Manager Hints. На freedesktop.org вы найдете ссылки на многие соответствующие спецификации.

В руководстве GDK описывается использование Xlib в программе GTK.

Сервер, клиент, диспетчер окон

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

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

Диспетчер окон отвечает за отображение рамки или границ вокруг окон; он также имеет окончательное слово в отношении размера каждого окна и состояния окна, например, минимизированное, максимизированное и так далее. В Windows и macOS приложение обрабатывает большинство этих задач. В X11, если вы хотите изменить состояние окна или изменить его рамку, вы должны попросить диспетчер окон сделать это от вашего имени, используя установленную конвенцию.

GTK+ имеет функции для запроса у диспетчера окон выполнения различных действий; например, gtk_window_iconify(), gtk_window_maximize() или gtk_window_set_decorated(). Имейте в виду, что gtk_window_move() и изменение размера окна в конечном итоге контролируется диспетчером окон, и большинство диспетчеров окон будут игнорировать некоторые запросы время от времени в интересах хорошего пользовательского интерфейса.

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.22/gtk-x11.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API