Запуск приложений GTK+
Запуск приложений GTK+ — Как запустить и отладить приложение GTK+
Запуск и отладка приложений GTK+
Общие параметры командной строки
Все приложения GTK+ поддерживают ряд стандартных параметров командной строки. Они удаляются из argv функцией gtk_init(). Модули могут анализировать и удалять дополнительные параметры. X11 и Windows GDK-бэкенды анализируют некоторые дополнительные параметры командной строки.
--gtk-module . Список модулей для загрузки дополнительно к тем, которые указаны в переменной окружения moduleGTK3_MODULES и настройке gtk-modules.
--g-fatal-warnings. Заставить GTK+ аварийно завершаться при всех предупреждениях. Это полезно для остановки на первом предупреждении в отладчике, если ваше приложение выводит несколько предупреждений. Практически всегда лучше начать отладку с первого возникшего предупреждения.
--gtk-debug . Список параметров отладки для включения дополнительно к тем, которые указаны в переменной окружения optionsGTK_DEBUG. Этот параметр недоступен, если GTK+ был сконфигурирован с --enable-debug=no.
--gtk-no-debug . Список параметров отладки для выключения. Этот параметр доступен только, если GTK+ был сконфигурирован с options--enable-debug=yes.
Следующие параметры фактически используются GDK, а не GTK+, но мы всё же включаем их для полноты.
--class . Устанавливает класс программы; см. gdk_set_program_class(). class
--name . Устанавливает имя программы. name
--gdk-debug . Список параметров отладки для включения дополнительно к тем, которые указаны в переменной окружения optionsGDK_DEBUG. Этот параметр доступен только, если GTK+ был сконфигурирован с --enable-debug=yes.
--gdk-no-debug . Список параметров отладки для выключения. Этот параметр доступен только, если GTK+ был сконфигурирован с options--enable-debug=yes.
Переменные среды
GTK+ проверяет ряд переменных среды помимо стандартных переменных, таких как LANG, PATH, HOME или DISPLAY; в основном для определения путей поиска определенных файлов. X11, Windows и Broadway GDK-бекенды используют некоторые дополнительные переменные среды.
GTK_DEBUG. Если GTK+ не был сконфигурирован с --enable-debug=no, эта переменная может быть установлена в список параметров отладки, которые заставят GTK+ выводить различные типы отладочной информации.
actions | Действия и модели меню |
baselines | Отобразить базисные линии |
builder | Поддержка GtkBuilder |
geometry | Распределение размеров |
icontheme | Стили иконки |
interactive | Открыть интерактивный отладчик |
keybindings | Сочетания клавиш |
misc | Разное |
modules | Загрузка модулей |
no-css-cache | Пропустить кэширование свойств CSS-стилей |
no-pixel-cache | Отключить кэш пикселей |
plugsocket | Внепроцессная вставка |
pixel-cache | Кэш пикселей |
printing | Поддержка печати |
size-request | Запросы размера |
text | Внутренности виджета текста |
touchscreen | Имитировать сенсорный экран |
tree | Внутренности виджета дерева |
updates | Визуальная обратная связь о обновлениях окна |
resize | Выделить изменяемые размеры виджетов |
layout | Показать границы макета |
Специальное значение all может быть использовано для включения всех параметров отладки. Специальное значение help может быть использовано для получения списка всех поддерживаемых параметров отладки.
GTK3_MODULES. Список модулей для загрузки. Обратите внимание, что GTK+ также позволяет указывать модули для загрузки через опцию командной строки (--gtk-module) и с настройкой gtk-modules.
GTK_MODULES. Список модулей для загрузки дополнительно к модулям в переменной GTK3_MODULES.
GTK3_MODULES для модулей, которые совместимы только с GTK+ 3. GTK_PATH. Указывает список каталогов для поиска, когда GTK+ ищет динамически загружаемые объекты, такие как модули, указанные в GTK_MODULES, движки тем, модули методов ввода, бэкэнды файловой системы и бэкэнды печати. Если путь к динамически загружаемому объекту указан как абсолютный путь, GTK+ загружает его напрямую. В противном случае GTK+ поочередно проходит через каталоги в GTK_PATH, затем каталог .gtk-3.0 в домашнем каталоге пользователя, затем в системном каталоге по умолчанию, который является . (Если libdir/gtk-3.0/modulesGTK_EXE_PREFIX определено, libdir является $GTK_EXE_PREFIX/lib. В противном случае это libdir, указанный при конфигурации GTK+, обычно /usr/lib, или /usr/local/lib. ) Для каждого каталога в этом списке GTK+ фактически ищет подкаталог Где directory/version/host/typeversion выводится из версии GTK+ (используйте pkg-config
--variable=gtk_binary_version gtk+-3.0 для определения этого из скрипта), host — архитектура, на которой был построен GTK+ (используйте pkg-config
--variable=gtk_host gtk+-3.0 для определения этого из скрипта), и type — каталог, специфичный для типа модулей; в настоящее время это может быть modules, engines, immodules, filesystems или printbackends, соответствующие типам модулей, упомянутым выше. Любое из version, host, или оба, может быть опущено. GTK+ сначала ищет в наиболее специфичном каталоге, затем в каталогах с меньшим количеством компонентов. Компоненты GTK_PATH разделены символом ':' на Linux и Unix, и ';' на Windows.
GTK_IM_MODULE. Указывает модуль IM для использования по умолчанию вместо модуля, определяемого локалью. Если это не установлено, и вы работаете на системе, которая позволяет XSETTINGS и имеет значение в Gtk/IMModule, то это будет использоваться в качестве модуля IM по умолчанию. Также это может быть список методов ввода, разделённых двоеточием, которые GTK+ будет пытаться использовать поочередно, пока не найдёт доступный на системе.
GTK_IM_MODULE_FILE. Указывает файл, содержащий список модулей IM для загрузки. Эта переменная среды имеет значение по умолчанию (libdir/gtk-3.0/3.0.0/immodules.cachelibdir имеет то же значение, что и объясняется для GTK_PATH). Файл immodules.cache генерируется утилитой gtk-query-immodules-3.0.
GTK_EXE_PREFIX. Если установлено, GTK+ использует $GTK_EXE_PREFIX/lib вместо libdir, сконфигурированного при компиляции GTK+.
GTK_DATA_PREFIX. Если установлено, заставляет GTK+ использовать $GTK_DATA_PREFIX вместо префикса, сконфигурированного при компиляции GTK+.
GTK_THEME. Если установлено, заставляет GTK+ использовать указанную тему вместо темы, заданной настройкой gtk-theme-name. Это предназначено в основном для удобной отладки проблем с темой. Также можно указать вариант темы для загрузки, добавив имя варианта с двоеточием, например: `GTK_THEME=Adwaita:dark`.
Следующие переменные среды используются GdkPixbuf, GDK или Pango, а не самим GTK+, но мы всё же включаем их для полноты.
GDK_PIXBUF_MODULE_FILE. Указывает файл, содержащий список модулей загрузчика GdkPixbuf для загрузки. Эта переменная среды переопределяет значение по умолчанию (libdir/gtk-3.0/3.0.0/loaders.cachelibdir - sysconfdir, указанный при конфигурации GTK+, обычно /usr/local/lib). Файл loaders.cache генерируется утилитой gdk-pixbuf-query-loaders.
GDK_DEBUG. Если GTK+ был сконфигурирован с --enable-debug=yes, эта переменная может быть установлена в список параметров отладки, которые заставят GDK выводить различные типы отладочной информации.
cursor | Информация об объектах курсора (только win32) |
dnd | Информация о перетаскивании |
draw | Информация о графических операциях (только win32) |
eventloop | Информация о работе цикла событий (в основном Quartz) |
misc | Разное |
nogl | Отключить OpenGL. GDK будет вести себя так, как будто поддержка OpenGL недоступна. |
nograbs | Отключить все захват мыши и клавиатуры |
xinerama | Имитировать многомониторную настройку |
xim | Информация о поддержке XIM |
Специальное значение all может быть использовано для включения всех параметров отладки.
GDK_RENDERING. Если установлено, выбирает способ создания GDK похожих поверхностей. Это влияет как на функциональность функции gdk_window_create_similar_surface(), так и на способ создания GDK вспомогательных поверхностей для буферизации изображения. Могут быть использованы следующие значения:
similar | Создать похожие поверхности для используемого окна. Это поведение по умолчанию, если переменная не установлена. |
image | Всегда создавать поверхности изображения. Это фактически отключает всю аппаратную ускорение внутри GTK. |
recording | Всегда создавать поверхности записи. Это вызывает прямое отображение в бэкенд без создания промежуточных поверхностей (Pixmaps в X) и, скорее всего, вызовет мерцание. |
Все остальные значения будут игнорироваться и вернутся к поведению по умолчанию. В будущем могут быть добавлены другие значения.
GDK_BACKEND. Если установлено, выбирает используемый GDK-бэкенд. Выбор бэкенда требует, чтобы GTK+ был скомпилирован с поддержкой этого бэкенда. Доступные бэкенды, при условии их включения в GDK-библиотеках, которые вы используете:
quartz | Выбирает родной бэкенд Quartz |
win32 | Выбирает родной бэкенд для Microsoft Windows |
x11 | Выбирает родной бэкенд для подключения к серверам X11. |
broadway | Выбирает бэкенд Broadway для отображения в веб-браузерах |
wayland | Выбирает бэкенд Wayland для подключения к серверам отображения Wayland |
mir | Выбирает бэкенд Mir для подключения к серверам отображения Mir |
Начиная с версии 3.10, эта переменная среды может содержать список имен бэкэндов, разделенных запятыми, которые будут пробоваться в указанном порядке. Список также может содержать символ *, что означает: попробовать все оставшиеся бэкэнды. Специальное значение "help" может быть использовано для вывода в GDK списка всех доступных бэкэндов. Дополнительную информацию о выборе бэкэндов см. в функции gdk_display_manager_get().
XDG_DATA_HOME, XDG_DATA_DIRS. GTK+ использует эти переменные среды для поиска тем иконок и информации MIME. Дополнительную информацию см. в Спецификации темы иконок, базе данных общих данных MIME и Спецификации базового каталога.
DESKTOP_STARTUP_ID. GTK+ использует эту переменную среды для предоставления уведомлений об запуске в соответствии со спецификацией уведомлений о запуске. В соответствии со спецификацией, GTK+ сбрасывает значение этой переменной после её чтения (чтобы предотвратить её утечку в дочерние процессы). Поэтому, если вам нужно её значение для собственных целей, вы должны прочитать её перед вызовом gtk_init().
Интерактивная отладка
GTK+ включает интерактивный отладчик, называемый GTK+ Inspector, который позволяет исследовать дерево виджетов любого приложения GTK+ во время выполнения, а также настраивать тему и запускать средства визуальной отладки. Вы легко можете опробовать изменения во время выполнения, прежде чем внести их в код.
Обратите внимание, что GTK+ inspector может отображать только внутренние компоненты GTK+. Он не может понять специфическую логику приложения GTK+. Кроме того, тот факт, что GTK+ inspector работает в процессе приложения, ограничивает его возможности. Он предназначен как дополнение к полноценным отладчикам и средствам трассировки системы, таким как DTrace, а не как их замена.
Чтобы включить GTK+ inspector, вы можете использовать сочетания клавиш Control-Shift-I или Control-Shift-D, или установить переменную среды GTK_DEBUG=interactive.
В некоторых ситуациях может быть неуместно предоставлять пользователям доступ к GTK+ inspector. Сочетания клавиш могут быть отключены с помощью ключа `enable-inspector-keybinding` в схеме GSettings `org.gtk.Settings.Debug`.
© 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-running.html