Запуск приложений GTK+
Запуск приложений GTK+ — Как запустить и отладить приложение GTK+
Запуск и отладка приложений GTK+
Общие параметры командной строки
Все приложения GTK+ поддерживают ряд стандартных параметров командной строки. Эти параметры удаляются из argv функцией gtk_init(). Модули могут анализировать и удалять дополнительные параметры. Подсистемы GDK X11 и Windows анализируют некоторые дополнительные параметры командной строки.
--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 создаёт поверхности для буферизации (double buffering). Можно использовать следующие значения:
similar | Создавать подобные поверхности для используемого окна. Это поведение по умолчанию, если переменная не установлена. |
image | Всегда создавать поверхностные изображения. Это фактически отключает всю аппаратную ускорение внутри GTK. |
recording | Всегда создавать поверхности записи. Это вызывает непосредственное отображение в бэкенд без создания промежуточных поверхностей (Pixmaps в X) и, скорее всего, вызовет мерцание. |
Все остальные значения будут игнорироваться и вернуться к поведению по умолчанию. В будущем могут быть добавлены другие значения.
GDK_BACKEND. Если установлено, выбирает GDK бэкенд для использования. Выбор бэкенда требует, чтобы GTK+ был скомпилирован с поддержкой этого бэкенда. Следующие бэкенды могут быть выбраны, при условии, что они включены в GDK библиотеки, которые вы используете:
quartz | Выбирает родной Quartz бэкенд |
win32 | Выбирает родной бэкенд для Microsoft Windows |
x11 | Выбирает родной бэкенд для подключения к серверам X11. |
broadway | Выбирает бэкенд Broadway для отображения в веб-браузерах |
wayland | Выбирает бэкенд Wayland для подключения к серверам отображения Wayland |
Начиная с версии 3.10, эта переменная окружения может содержать список имен бэкэндов, разделенных запятыми, которые будут пробоваться в указанном порядке. Список также может содержать *, что означает: попробовать все оставшиеся бэкэнды. Специальное значение "help" может быть использовано для вывода GDK списка всех доступных бэкэндов. Для получения дополнительной информации о выборе бэкэндов, см. функцию gdk_display_manager_get().
GTK_CSD. Значение этой переменной окружения по умолчанию равно 1. Если изменить на 0, это отключит использование декорекций с клиентской стороны по умолчанию в окнах GTK+, тем самым возложив на менеджер окон ответственность за отрисовку декорекций окон, у которых нет пользовательского виджета панели заголовков. CSD всегда используется для окон с настроенным пользовательским виджетом панели заголовков, так как WM не должен рисовать другую панель заголовков или другие декоровки вокруг пользовательской.
GTK_OVERLAY_SCROLLING. Значение этой переменной окружения по умолчанию равно 1, что означает, что каждый экземпляр GtkScrolledWindow будет выбирать, использовать ли полосы прокрутки наложения или полноразмерные, через свой собственный свойство GtkScrolledWindow:overlay-scrolling, которое по умолчанию равно TRUE. Если эта переменная установлена в 0, все экземпляры GtkScrolledWindow будут использовать полноразмерные/не наложенные полосы прокрутки.
XDG_DATA_HOME, XDG_DATA_DIRS. GTK+ использует эти переменные окружения для поиска тем значков и информации MIME. Для получения дополнительной информации см. Спецификацию темы значков, Базу данных общего MIME-информации и Спецификацию базового каталога.
DESKTOP_STARTUP_ID. GTK+ использует эту переменную окружения для предоставления уведомлений о запуске в соответствии с Спецификацией уведомлений о запуске. В соответствии со спецификацией, GTK+ сбрасывает значение этой переменной после её чтения (чтобы предотвратить утечку в дочерние процессы). Поэтому, если вам нужно её значение для ваших собственных целей, вам необходимо прочитать его до вызова gtk_init().
Интерактивное отладка
GTK+ включает интерактивный отладчик, называемый GTK+ Inspector, который позволяет исследовать древовидную структуру виджетов любого приложения GTK+ во время выполнения, а также настраивать тему и запускать средства визуальной отладки. Вы можете легко опробовать изменения во время выполнения, прежде чем внести их в код.
Обратите внимание, что GTK+ инспектор может отображать только внутренние компоненты GTK+. Он не может понять специфическую для приложения логику приложения GTK+. Также тот факт, что GTK+ инспектор работает в процессе приложения, ограничивает его возможности. Он предназначен как дополнение к полноценным отладчикам и средствам трассировки системы, таким как DTrace, а не как замена.
Чтобы включить GTK+ инспектор, вы можете использовать сочетание клавиш Control-Shift-I или Control-Shift-D, или установить переменную окружения GTK_DEBUG=interactive.
В некоторых ситуациях может быть неуместно предоставлять пользователям доступ к GTK+ инспектору. Сочетания клавиш могут быть отключены с помощью ключа `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.24/gtk-running.html