forked from AuroraMiddleware/gtk
3e81653bd3
Introduce GTK3_MODULES environment variable for modules that don't work in gtk3. The list of modules is now $GTK3_MODULES:$GTK_MODULES. https://bugzilla.gnome.org/show_bug.cgi?id=743917
579 lines
20 KiB
XML
579 lines
20 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
|
]>
|
|
<refentry id="gtk-running">
|
|
<refmeta>
|
|
<refentrytitle>Running GTK+ Applications</refentrytitle>
|
|
<manvolnum>3</manvolnum>
|
|
<refmiscinfo>GTK Library</refmiscinfo>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>Running GTK+ Applications</refname>
|
|
<refpurpose>
|
|
How to run and debug your GTK+ application
|
|
</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1>
|
|
<title>Running and debugging GTK+ Applications</title>
|
|
|
|
<refsect2>
|
|
<title>Common commandline options</title>
|
|
|
|
<para>
|
|
All GTK+ applications support a number of standard commandline
|
|
options. These are removed from <literal>argv</literal> by gtk_init().
|
|
Modules may parse and remove further options. The
|
|
<link linkend="x11-cmdline">X11</link> and
|
|
<link linkend="win32-cmdline">Windows</link> GDK backends parse
|
|
some additional commandline options.
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--gtk-module <replaceable>module</replaceable></systemitem></title>
|
|
|
|
<para>
|
|
A list of modules to load in addition to those specified in the
|
|
<envar>GTK3_MODULES</envar> environment variable and the
|
|
<literal>gtk-modules</literal> setting.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--g-fatal-warnings</systemitem></title>
|
|
|
|
<para>
|
|
Make GTK+ abort on all warnings. This is useful to stop on the first
|
|
warning in a debugger, if your application is printing multiple
|
|
warnings. It's almost always best to start debugging with the first
|
|
warning that occurs.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--gtk-debug <replaceable>options</replaceable></systemitem></title>
|
|
|
|
<para>
|
|
A list of <link linkend="GTK-Debug-Options">debug options</link>
|
|
to turn on in addition to those specified in the <envar>GTK_DEBUG</envar>
|
|
environment variable. This option is not available if GTK+ has been
|
|
configured with <option>--enable-debug=no</option>.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--gtk-no-debug <replaceable>options</replaceable></systemitem></title>
|
|
|
|
<para>
|
|
A list of <link linkend="GTK-Debug-Options">debug options</link>
|
|
to turn off. This option is only available if GTK+ has been configured with
|
|
<option>--enable-debug=yes</option>.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
The following options are really used by GDK, not by GTK+, but we
|
|
list them here for completeness nevertheless.
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--class <replaceable>class</replaceable></systemitem></title>
|
|
|
|
<para>
|
|
Sets the program class; see gdk_set_program_class().
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--name <replaceable>name</replaceable></systemitem></title>
|
|
|
|
<para>
|
|
Sets the program name.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--gdk-debug <replaceable>options</replaceable></systemitem></title>
|
|
|
|
<para>
|
|
A list of <link linkend="GDK-Debug-Options">debug options</link>
|
|
to turn on in addition to those specified in the <envar>GDK_DEBUG</envar>
|
|
environment variable. This option is only available if GTK+ has been
|
|
configured with <option>--enable-debug=yes</option>.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><systemitem>--gdk-no-debug <replaceable>options</replaceable></systemitem></title>
|
|
|
|
<para>
|
|
A list of <link linkend="GDK-Debug-Options">debug options</link>
|
|
to turn off. This option is only available if GTK+ has been configured with
|
|
<option>--enable-debug=yes</option>.
|
|
</para>
|
|
</formalpara>
|
|
|
|
</refsect2>
|
|
|
|
<refsect2>
|
|
<title>Environment variables</title>
|
|
|
|
<para>
|
|
GTK+ inspects a number of environment variables in addition to standard
|
|
variables like <envar>LANG</envar>, <envar>PATH</envar>, <envar>HOME</envar>
|
|
or <envar>DISPLAY</envar>; mostly to determine paths to look for certain
|
|
files. The <link linkend="x11-envar">X11</link>,
|
|
<link linkend="win32-envar">Windows</link> and
|
|
<link linkend="broadway-envar">Broadway</link> GDK backends use some
|
|
additional environment variables.
|
|
</para>
|
|
|
|
<formalpara id="GTK-Debug-Options">
|
|
<title><envar>GTK_DEBUG</envar></title>
|
|
|
|
<para>
|
|
Unless GTK+ has been configured with <option>--enable-debug=no</option>,
|
|
this variable can be set to a list of debug options, which cause GTK+
|
|
to print out different types of debugging information.
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>actions</term>
|
|
<listitem><para>Actions and menu models.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>baselines</term>
|
|
<listitem><para>Baselines.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>builder</term>
|
|
<listitem><para>GtkBuilder support</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>geometry</term>
|
|
<listitem><para>Size allocation</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>icontheme</term>
|
|
<listitem><para>Icon themes</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>interactive</term>
|
|
<listitem><para>Open the <link linkend="interactive-debugging">interactive debugger</link>.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>keybindings</term>
|
|
<listitem><para>Keybindings</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>misc</term>
|
|
<listitem><para>Miscellaneous information</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>modules</term>
|
|
<listitem><para>Loading of modules</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>no-css-cache</term>
|
|
<listitem><para>Bypass caching for CSS style properties.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>no-pixel-cache</term>
|
|
<listitem><para>Disable the pixel cache.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>plugsocket</term>
|
|
<listitem><para>Cross-process embedding</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>pixel-cache</term>
|
|
<listitem><para>Pixel cache.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>printing</term>
|
|
<listitem><para>Printing support</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>size-request</term>
|
|
<listitem><para>Size requests</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>text</term>
|
|
<listitem><para>Text widget internals</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>touchscreen</term>
|
|
<listitem><para>Pretend the pointer is a touchscreen device</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>tree</term>
|
|
<listitem><para>Tree widget internals</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>updates</term>
|
|
<listitem><para>Visual feedback about window updates</para></listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
The special value <literal>all</literal> can be used to turn on all
|
|
debug options. The special value <literal>help</literal> can be used
|
|
to obtain a list of all supported debug options.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GTK3_MODULES</envar></title>
|
|
|
|
<para>
|
|
A list of modules to load. Note that GTK+ also allows to specify modules to load via a commandline option (<option>--gtk-module</option>) and with the <literal>gtk-modules</literal> setting.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GTK_MODULES</envar></title>
|
|
|
|
<para>
|
|
A list of modules to load in addition to the ones in the <envar>GTK3_MODULES</envar> variable.
|
|
</para>
|
|
<warning>
|
|
Note that this environment variable is read by GTK+ 2.x too,
|
|
which may not have the same set of modules available for loading.
|
|
Use <envar>GTK3_MODULES</envar> for modules that are only compatible
|
|
with GTK+ 3.
|
|
</warning>
|
|
</formalpara>
|
|
|
|
<formalpara id="gtk-path">
|
|
<title><envar>GTK_PATH</envar></title>
|
|
|
|
<para>
|
|
Specifies a list of directories to search when GTK+ is looking for
|
|
dynamically loaded objects such as the modules specified by
|
|
<envar>GTK_MODULES</envar>, theme engines, input method
|
|
modules, file system backends and print backends. If the path to
|
|
the dynamically loaded object is given as an absolute path name,
|
|
then GTK+ loads it directly.
|
|
Otherwise, GTK+ goes in turn through the directories in <envar>GTK_PATH</envar>,
|
|
followed by the directory <filename>.gtk-3.0</filename> in the user's
|
|
home directory, followed by the system default directory,
|
|
which is <filename><replaceable>libdir</replaceable>/gtk-3.0/modules</filename>.
|
|
(If <envar>GTK_EXE_PREFIX</envar> is defined, <replaceable>libdir</replaceable> is
|
|
<filename>$GTK_EXE_PREFIX/lib</filename>. Otherwise it is the libdir
|
|
specified when GTK+ was configured, usually
|
|
<filename>/usr/lib</filename>, or
|
|
<filename>/usr/local/lib</filename>.)
|
|
For each directory in this list, GTK+ actually looks in a
|
|
subdirectory
|
|
<filename><replaceable>directory</replaceable>/<replaceable>version</replaceable>/<replaceable>host</replaceable>/<replaceable>type</replaceable></filename>
|
|
Where <replaceable>version</replaceable> is derived from the
|
|
version of GTK+ (use <literal>pkg-config
|
|
--variable=gtk_binary_version gtk+-3.0</literal> to determine this from a
|
|
script), <replaceable>host</replaceable> is the architecture on
|
|
which GTK+ was built. (use <literal>pkg-config
|
|
--variable=gtk_host gtk+-3.0</literal> to determine this from a
|
|
script), and <replaceable>type</replaceable> is a directory
|
|
specific to the type of modules; currently it can be
|
|
<literal>modules</literal>, <literal>engines</literal>,
|
|
<literal>immodules</literal>, <literal>filesystems</literal> or
|
|
<literal>printbackends</literal>, corresponding to the types of
|
|
modules mentioned above. Either <replaceable>version</replaceable>,
|
|
<replaceable>host</replaceable>, or both may be omitted. GTK+ looks
|
|
first in the most specific directory, then in directories with
|
|
fewer components.
|
|
The components of GTK_PATH are separated by the ':' character on
|
|
Linux and Unix, and the ';' character on Windows.
|
|
</para>
|
|
<warning>
|
|
Note that this environment variable is read by GTK+ 2.x too, which
|
|
makes it unsuitable for setting it system-wide (or session-wide),
|
|
since doing so will cause either GTK+ 2.x applications or GTK+ 3
|
|
applications to see incompatible modules.
|
|
</warning>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GTK_IM_MODULE</envar></title>
|
|
|
|
<para>
|
|
Specifies an IM module to use in preference to the one determined
|
|
from the locale. If this isn't set and you are running on the system
|
|
that enables <literal>XSETTINGS</literal> and has a value in
|
|
<literal>Gtk/IMModule</literal>, that will be used for the default
|
|
IM module.
|
|
This also can be a colon-separated list of input-methods, which
|
|
GTK+ will try in turn until it finds one available on the system.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara id="gtk-im-module-file">
|
|
<title><envar>GTK_IM_MODULE_FILE</envar></title>
|
|
|
|
<para>
|
|
Specifies the file listing the IM modules to load. This environment
|
|
variable the default value
|
|
<filename><replaceable>libdir</replaceable>/gtk-3.0/3.0.0/immodules.cache</filename>
|
|
(<replaceable>libdir</replaceable> has the same meaning here as explained for <envar>GTK_PATH</envar>).
|
|
</para>
|
|
<para>
|
|
The <filename>immodules.cache</filename> file is generated by the
|
|
<command>gtk-query-immodules-3.0</command> utility.
|
|
</para>
|
|
<warning>
|
|
Note that this environment variable is read by GTK+ 2.x too, which
|
|
makes it unsuitable for setting it system-wide (or session-wide),
|
|
since doing so will cause either GTK+ 2.x applications or GTK+ 3
|
|
applications to see the wrong list of IM modules.
|
|
</warning>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GTK_EXE_PREFIX</envar></title>
|
|
|
|
<para>
|
|
If set, GTK+ uses <filename>$GTK_EXE_PREFIX/lib</filename> instead of
|
|
the libdir configured when GTK+ was compiled.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GTK_DATA_PREFIX</envar></title>
|
|
|
|
<para>
|
|
If set, makes GTK+ use <filename>$GTK_DATA_PREFIX</filename>
|
|
instead of the prefix configured when GTK+ was compiled.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GTK_THEME</envar></title>
|
|
|
|
<para>
|
|
If set, makes GTK+ use the named theme instead of the theme
|
|
that is specified by the gtk-theme-name setting. This is intended
|
|
mainly for easy debugging of theme issues.
|
|
</para>
|
|
<para>
|
|
It is also possible to specify a theme variant to load, by appending
|
|
the variant name with a colon, like this: `GTK_THEME=Adwaita:dark`.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
The following environment variables are used by GdkPixbuf, GDK or
|
|
Pango, not by GTK+ itself, but we list them here for completeness
|
|
nevertheless.
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title><envar>GDK_PIXBUF_MODULE_FILE</envar></title>
|
|
|
|
<para>
|
|
Specifies the file listing the GdkPixbuf loader modules to load.
|
|
This environment variable overrides the default value
|
|
<filename><replaceable>libdir</replaceable>/gtk-3.0/3.0.0/loaders.cache</filename>
|
|
(<replaceable>libdir</replaceable> is the sysconfdir specified when
|
|
GTK+ was configured, usually <filename>/usr/local/lib</filename>.)
|
|
</para>
|
|
<para>
|
|
The <filename>loaders.cache</filename> file is generated by the
|
|
<command>gdk-pixbuf-query-loaders</command> utility.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara id="GDK-Debug-Options">
|
|
<title><envar>GDK_DEBUG</envar></title>
|
|
|
|
<para>
|
|
If GTK+ has been configured with <option>--enable-debug=yes</option>,
|
|
this variable can be set to a list of debug options, which cause GDK
|
|
to print out different types of debugging information.
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>cursor</term>
|
|
<listitem><para>Information about cursor objects (only win32)</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>dnd</term>
|
|
<listitem><para>Information about drag-and-drop</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>draw</term>
|
|
<listitem><para>Information about drawing operations (only win32)</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>eventloop</term>
|
|
<listitem><para>Information about event loop operation (mostly Quartz)</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>misc</term>
|
|
<listitem><para>Miscellaneous information</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>nogl</term>
|
|
<listitem><para>Turn off OpenGL. GDK will behave as if OpenGL support was not available.</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>nograbs</term>
|
|
<listitem><para>Turn off all pointer and keyboard grabs</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>xinerama</term>
|
|
<listitem><para>Simulate a multi-monitor setup</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>xim</term>
|
|
<listitem><para>Information about XIM support</para></listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
The special value <literal>all</literal> can be used to turn on all
|
|
debug options.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GDK_RENDERING</envar></title>
|
|
|
|
<para>
|
|
If set, selects the way how GDK creates similar surfaces. This affects both the
|
|
functionality of the function gdk_window_create_similar_surface() as well as the
|
|
way GDK creates backing surfaces for double buffering. The following values can
|
|
be used:
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>similar</term>
|
|
<listitem><para>Create similar surfaces to the window in use. This is the
|
|
default behavior when the variable is not set.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>image</term>
|
|
<listitem><para>Always create image surfaces. This essentially turns off
|
|
all hardware acceleration inside GTK.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>recording</term>
|
|
<listitem><para>Always create recording surfaces. This causes bare rendering
|
|
to the backend without the creation of intermediate surfaces (Pixmaps in X)
|
|
and will likely cause flicker.</para></listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
All other values will be ignored and fall back to the default behavior. More
|
|
values might be added in the future.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>GDK_BACKEND</envar></title>
|
|
|
|
<para>
|
|
If set, selects the GDK backend to use. Selecting a backend requires that
|
|
GTK+ is compiled with support for that backend. The following backends can
|
|
be selected:
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>quartz</term>
|
|
<listitem><para>Selects the native Quartz backend</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>win32</term>
|
|
<listitem><para>Selects the native backend for Microsoft Windows</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>x11</term>
|
|
<listitem><para>Selects the native backend for connecting to X11 servers.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>broadway</term>
|
|
<listitem><para>Selects the Broadway backend for display in web browsers</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>wayland</term>
|
|
<listitem><para>Selects the Wayland backend for connecting to Wayland display servers</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>mir</term>
|
|
<listitem><para>Selects the Mir backend for connecting to Mir display servers</para></listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
Since 3.10, this environment variable can contain a comma-separated list
|
|
of backend names, which are tried in order. The list may also contain
|
|
a *, which means: try all remaining backends.
|
|
For more information about selecting backends, see the gdk_display_manager_get() function.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>XDG_DATA_HOME</envar>, <envar>XDG_DATA_DIRS</envar></title>
|
|
|
|
<para>
|
|
GTK+ uses these environment variables to locate icon themes
|
|
and MIME information. For more information, see
|
|
<ulink url="http://freedesktop.org/Standards/icon-theme-spec">Icon Theme Specification</ulink>,
|
|
the <ulink url="http://freedesktop.org/Standards/shared-mime-info-spec">Shared MIME-info Database</ulink>
|
|
and the <ulink url="http://freedesktop.org/Standards/basedir-spec">Base Directory Specification</ulink>.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<formalpara>
|
|
<title><envar>DESKTOP_STARTUP_ID</envar></title>
|
|
|
|
<para>
|
|
GTK+ uses this environment variable to provide startup notification
|
|
according to the <ulink url="http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt">Startup Notification Spec</ulink>.
|
|
Following the specification, GTK+ unsets this variable after reading
|
|
it (to keep it from leaking to child processes). So, if you need its
|
|
value for your own purposes, you have to read it before calling
|
|
gtk_init().
|
|
</para>
|
|
</formalpara>
|
|
|
|
</refsect2>
|
|
|
|
<refsect2 id="interactive-debugging">
|
|
<title>Interactive debugging</title>
|
|
|
|
<inlinegraphic fileref="inspector.png" format="PNG"></inlinegraphic>
|
|
|
|
<para>
|
|
GTK+ includes an interactive debugger, called the GTK+ Inspector, which
|
|
lets you explore the widget tree of any GTK+ application at runtime, as
|
|
well as tweak the theme and trigger visual debugging aids. You can
|
|
easily try out changes at runtime before putting them into the code.
|
|
</para>
|
|
<para>
|
|
Note that the GTK+ inspector can only show GTK+ internals. It can not
|
|
understand the application-specific logic of a GTK+ application. Also,
|
|
the fact that the GTK+ inspector is running in the application process
|
|
limits what it can do. It is meant as a complement to full-blown debuggers
|
|
and system tracing facilities such as DTrace, not as a replacement.
|
|
</para>
|
|
<para>
|
|
To enable the GTK+ inspector, you can use the Control-Shift-I or
|
|
Control-Shift-D keyboard shortcuts, or set the
|
|
<envar>GTK_DEBUG=interactive</envar> environment variable.
|
|
</para>
|
|
<para>
|
|
In some situations, it may be inappropriate to give users access to the
|
|
GTK+ inspector. The keyboard shortcuts can be disabled with the
|
|
`enable-inspector-keybinding` key in the `org.gtk.Settings.Debug`
|
|
GSettings schema.
|
|
</para>
|
|
|
|
</refsect2>
|
|
|
|
</refsect1>
|
|
|
|
</refentry>
|