Prev

Up

Home

GTK+ Reference Manual

Next

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

Использование GTK+ в X Window System X11 аспект использования GTK+

GTK+ для X Window System

В UNIX, внутренний интерфейс X используется по умолчанию для GTK+. Таким образом вам не придётся делать что-то особенное чтобы скомпилировать её, всё должно "просто работать".

Чтобы использовать библиотеки нижнего уровня (low-level) Xlib в обычных GTK программах, смотрите документацию по взаимодействию GDK X Window System и GDK.

X11-спицифика опций командной строки

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

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

--screen screen_number Номер экрана в пределах отображенных по умолчанию. Это отменяет любой номер экрана определенный опцией командной строки --display или переменной окруженияя DISPLAY. Если этот экран не может быть открыт, GTK+ вернётся к экрану определённому в названии экрана. Эта опция бесполезна в интерактивном режиме; когда программа регистрирует командную строку в session manager для последующего перезапуска, это может сохранить экран включенным, не заботясь о перезапуске на различных дисплеях.

--sync Делает все запросы X одновременно. Это полезная опция при отладке, но значительно замедляет выполнение.

--gxid-host host Узел для контакта с демоном gxid; отменяет GXID_HOST переменную окруженияя.

--gxid-port port Порт подключения gxid; отменяет переменную окруженияя GXID_PORT. Эта опция доступна, только если GTK+ сконфигурирован с параметром --gdk-target=x11.


X11-специфика переменных окруженияя

На внутренний интерфейс X могут влиять некоторые дополнительные переменные окруженияя.

GXID_HOST, GXID_PORT Узел и порт для контакта с демоном gxid. gxid необходим только на X servers которые не поддерживают использование указателя и расширенных устройств непосредственно, он доступен только если GTK+ сконфигурирована с параметром --with-xinput=gxi. XFree86 и Xorg X servers не имеют этого ограничения.

GDK_USE_XFT Если эта переменная установлена в 1, то GTK+ будет использовать внутренний интерфейс Pango Xft вместо внутреннего интерфейса X когда это возможно (т.е., когда X server поддерживает XRender расширение и Pango собрана с поддержкой Xft).

Понимание архитектуры X11

Люди переходящие с Windows или MacOS находят некоторые аспекты X Window System удивительными. Этот раздел вводит некоторые основные понятия X концепции высшего уровня. Многие детали могут быть изучены в книге «Xlib Programming Manual» автора Adrian Nye; эта книга одинакова по объему с O'Reilly X Window System.

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

GDK заменяет использование Xlib в GTK программах.

Сервер, клиент, менеджер окон

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

X server отвечает за управление ресурсами, обработку процессов отрисовки, а также обрабатывает события, такие как события клавиатуры и мыши интересующие приложения. Таким образом приложения клиенты, могут просить X server создать окно, нарисовать круг, или переместить окна по кругу.

Менеджер окон отвечает за визуализацию рамки или границ окон; он также имеет возможность регулировать размер каждого окна, а также состояние окна, такое как минимизация или максимизация и т.д.. В Windows и MacOS большинство из этого выполняет само приложение. В X11, если вы хотите модифицировать состояние окна или изменить рамку, вы должны попросить window manager сделать это от вашего имени, используя установленное соглашение (convention).

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