2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
3 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
5 <refentry id="gtk-running">
7 <refentrytitle>Running GTK+ Applications</refentrytitle>
8 <manvolnum>3</manvolnum>
9 <refmiscinfo>GTK Library</refmiscinfo>
13 <refname>Running GTK+ Applications</refname>
15 How to run and debug your GTK+ application
20 <title>Running and debugging GTK+ Applications</title>
23 <title>Common commandline options</title>
26 All GTK+ applications support a number of standard commandline
27 options. These are removed from <literal>argv</literal> by gtk_init().
28 Modules may parse and remove further options. The
29 <link linkend="x11-cmdline">X11</link> and
30 <link linkend="win32-cmdline">Windows</link> GDK backends parse
31 some additional commandline options.
35 <title><systemitem>--gtk-module <replaceable>module</replaceable></systemitem></title>
38 A list of modules to load in addition to those specified in the
39 <envar>GTK_MODULES</envar> environment variable and the
40 <literal>gtk-modules</literal> setting.
45 <title><systemitem>--g-fatal-warnings</systemitem></title>
48 Make GTK+ abort on all warnings. This is useful to stop on the first
49 warning in a debugger, if your application is printing multiple
50 warnings. It's almost always best to start debugging with the first
56 <title><systemitem>--gtk-debug <replaceable>options</replaceable></systemitem></title>
59 A list of <link linkend="GTK-Debug-Options">debug options</link>
60 to turn on in addition to those specified in the <envar>GTK_DEBUG</envar>
61 environment variable. This option is only available if GTK+ has been
62 configured with <option>--enable-debug=yes</option>.
67 <title><systemitem>--gtk-no-debug <replaceable>options</replaceable></systemitem></title>
70 A list of <link linkend="GTK-Debug-Options">debug options</link>
71 to turn off. This option is only available if GTK+ has been configured with
72 <option>--enable-debug=yes</option>.
77 The following options are really used by GDK, not by GTK+, but we
78 list them here for completeness nevertheless.
82 <title><systemitem>--class <replaceable>class</replaceable></systemitem></title>
85 Sets the program class; see gdk_set_program_class().
90 <title><systemitem>--name <replaceable>name</replaceable></systemitem></title>
93 Sets the program name.
98 <title><systemitem>--gdk-debug <replaceable>options</replaceable></systemitem></title>
101 A list of <link linkend="GDK-Debug-Options">debug options</link>
102 to turn on in addition to those specified in the <envar>GDK_DEBUG</envar>
103 environment variable. This option is only available if GTK+ has been
104 configured with <option>--enable-debug=yes</option>.
109 <title><systemitem>--gdk-no-debug <replaceable>options</replaceable></systemitem></title>
112 A list of <link linkend="GDK-Debug-Options">debug options</link>
113 to turn off. This option is only available if GTK+ has been configured with
114 <option>--enable-debug=yes</option>.
121 <title>Environment variables</title>
124 GTK+ inspects a number of environment variables in addition to standard
125 variables like <envar>LANG</envar>, <envar>PATH</envar>, <envar>HOME</envar>
126 or <envar>DISPLAY</envar>; mostly to determine paths to look for certain
127 files. The <link linkend="x11-envar">X11</link>,
128 <link linkend="win32-envar">Windows</link> and
129 <link linkend="fb-envar">Framebuffer</link> GDK backends use some
130 additional environment variables.
133 <formalpara id="GTK-Debug-Options">
134 <title><envar>GTK_DEBUG</envar></title>
137 If GTK+ has been configured with <option>--enable-debug=yes</option>,
138 this variable can be set to a list of debug options, which cause GTK+
139 to print out different types of debugging information.
143 <listitem><para>Miscellaneous information</para></listitem>
146 <term>plugsocket</term>
147 <listitem><para>Cross-process embedding</para></listitem>
151 <listitem><para>Text widget internals</para></listitem>
155 <listitem><para>Tree widget internals</para></listitem>
159 <listitem><para>Visual feedback about window updates</para></listitem>
162 <term>keybindings</term>
163 <listitem><para>Keybindings</para></listitem>
166 <term>multihead</term>
167 <listitem><para>Working on multiple displays</para></listitem>
171 <listitem><para>Loading of modules</para></listitem>
174 <term>geometry</term>
175 <listitem><para>Size allocation</para></listitem>
178 <term>icontheme</term>
179 <listitem><para>Icon themes</para></listitem>
182 <term>printing</term>
183 <listitem><para>Printing support</para></listitem>
187 <listitem><para>GtkBuilder support</para></listitem>
191 The special value <literal>all</literal> can be used to turn on all
197 <title><envar>GTK_MODULES</envar></title>
200 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.
203 Note that this environment variable is read by GTK+ 2.x too,
204 which may not have the same set of modules available for loading.
208 <formalpara id="gtk-path">
209 <title><envar>GTK_PATH</envar></title>
212 Specifies a list of directories to search when GTK+ is looking for
213 dynamically loaded objects such as the modules specified by
214 <envar>GTK_MODULES</envar>, theme engines, input method
215 modules, file system backends and print backends. If the path to
216 the dynamically loaded object is given as an absolute path name,
217 then GTK+ loads it directly.
218 Otherwise, GTK+ goes in turn through the directories in <envar>GTK_PATH</envar>,
219 followed by the directory <filename>.gtk-3.0</filename> in the user's
220 home directory, followed by the system default directory,
221 which is <filename><replaceable>libdir</replaceable>/gtk-3.0/modules</filename>.
222 (If <envar>GTK_EXE_PREFIX</envar> is defined, <replaceable>libdir</replaceable> is
223 <filename>$GTK_EXE_PREFIX/lib</filename>. Otherwise it is the libdir
224 specified when GTK+ was configured, usually
225 <filename>/usr/lib</filename>, or
226 <filename>/usr/local/lib</filename>.)
227 For each directory in this list, GTK+ actually looks in a
229 <filename><replaceable>directory</replaceable>/<replaceable>version</replaceable>/<replaceable>host</replaceable>/<replaceable>type</replaceable></filename>
230 Where <replaceable>version</replaceable> is derived from the
231 version of GTK+ (use <literal>pkg-config
232 --variable=gtk_binary_version gtk+-3.0</literal> to determine this from a
233 script), <replaceable>host</replaceable> is the architecture on
234 which GTK+ was built. (use <literal>pkg-config
235 --variable=gtk_host gtk+-3.0</literal> to determine this from a
236 script), and <replaceable>type</replaceable> is a directory
237 specific to the type of modules; currently it can be
238 <literal>modules</literal>, <literal>engines</literal>,
239 <literal>immodules</literal>, <literal>filesystems</literal> or
240 <literal>printbackends</literal>, corresponding to the types of
241 modules mentioned above. Either <replaceable>version</replaceable>,
242 <replaceable>host</replaceable>, or both may be omitted. GTK+ looks
243 first in the most specific directory, then in directories with
245 The components of GTK_PATH are separated by the ':' character on
246 Linux and Unix, and the ';' character on Windows.
249 Note that this environment variable is read by GTK+ 2.x too, which
250 makes it unsuitable for setting it system-wide (or session-wide),
251 since doing so will cause either GTK+ 2.x applications or GTK+ 3
252 applications to see incompatible modules.
257 <title><envar>GTK_IM_MODULE</envar></title>
260 Specifies an IM module to use in preference to the one determined
261 from the locale. If this isn't set and you are running on the system
262 that enables <literal>XSETTINGS</literal> and has a value in
263 <literal>Gtk/IMModule</literal>, that will be used for the default
268 <formalpara id="gtk-im-module-file">
269 <title><envar>GTK_IM_MODULE_FILE</envar></title>
272 Specifies the file listing the IM modules to load. This environment
273 variable the default value
274 <filename><replaceable>libdir</replaceable>/gtk-3.0/3.0.0/immodules.cache</filename>
275 (<replaceable>libdir</replaceable> has the same meaning here as explained for <envar>GTK_PATH</envar>).
278 The <filename>immodules.cache</filename> file is generated by the
279 <command>gtk-query-immodules-3.0</command> utility.
282 Note that this environment variable is read by GTK+ 2.x too, which
283 makes it unsuitable for setting it system-wide (or session-wide),
284 since doing so will cause either GTK+ 2.x applications or GTK+ 3
285 applications to see the wrong list of IM modules.
290 <title><envar>GTK_EXE_PREFIX</envar></title>
293 If set, GTK+ uses <filename>$GTK_EXE_PREFIX/lib</filename> instead of
294 the libdir configured when GTK+ was compiled.
299 <title><envar>GTK_DATA_PREFIX</envar></title>
302 If set, makes GTK+ use <filename>$GTK_DATA_PREFIX</filename>
303 instead of the prefix configured when GTK+ was compiled.
308 The following environment variables are used by GdkPixbuf, GDK or
309 Pango, not by GTK+ itself, but we list them here for completeness
314 <title><envar>GDK_PIXBUF_MODULE_FILE</envar></title>
317 Specifies the file listing the GdkPixbuf loader modules to load.
318 This environment variable overrides the default value
319 <filename><replaceable>libdir</replaceable>/gtk-3.0/3.0.0/loaders.cache</filename>
320 (<replaceable>libdir</replaceable> is the sysconfdir specified when
321 GTK+ was configured, usually <filename>/usr/local/lib</filename>.)
324 The <filename>loaders.cache</filename> file is generated by the
325 <command>gdk-pixbuf-query-loaders</command> utility.
329 <formalpara id="GDK-Debug-Options">
330 <title><envar>GDK_DEBUG</envar></title>
333 If GTK+ has been configured with <option>--enable-debug=yes</option>,
334 this variable can be set to a list of debug options, which cause GDK
335 to print out different types of debugging information.
339 <listitem><para>Miscellaneous information</para></listitem>
343 <listitem><para>Show all events received by GDK</para></listitem>
347 <listitem><para>Information about drag-and-drop</para></listitem>
351 <listitem><para>Information about XIM support</para></listitem>
355 <listitem><para>Turn off all pointer and keyboard grabs</para></listitem>
358 <term>multihead</term>
359 <listitem><para>Information related to multiple screens</para></listitem>
362 <term>xinerama</term>
363 <listitem><para>Simulate a multi-monitor setup</para></listitem>
367 <listitem><para>Information about cursor objects (only win32)</para></listitem>
371 <listitem><para>Information about drawing operations (only win32)</para></listitem>
374 <term>eventloop</term>
375 <listitem><para>Information about event loop operation (mostly Quartz)</para></listitem>
379 The special value <literal>all</literal> can be used to turn on all
385 <title><envar>GDK_RENDERING</envar></title>
388 If set, selects the way how GDK creates similar surfaces. This affects both the
389 functionality of the function gdk_window_create_similar_surface() as well as the
390 way GDK creates backing surfaces for double buffering. The following values can
396 <listitem><para>Create similar surfaces to the window in use. This is the
397 default behavior when the variable is not set.</para></listitem>
402 <listitem><para>Always create image surfaces. This essentially turns off
403 all hardware acceleration inside GTK.</para></listitem>
407 <term>recording</term>
408 <listitem><para>Always create recording surfaces. This causes bare rendering
409 to the backend without the creation of intermediate surfaces (Pixmaps in X)
410 and will likely cause flicker.</para></listitem>
414 All other values will be ignored and fall back to the default behavior. More
415 values might be added in the future.
420 <title><envar>GDK_BACKEND</envar></title>
423 If set, selects the GDK backend to use. Selecting a backend requires that GTK is compiled
424 with support for that backend. The following backends can be selected:
429 <listitem><para>Selects the native Quartz backend</para></listitem>
434 <listitem><para>Selects the native backend for Microsoft Windows</para></listitem>
439 <listitem><para>Selects the native backend for connecting to X11 servers.</para></listitem>
443 For more information about selecting backends, see the gdk_display_manager_get() function.
448 <title><envar>GDK_SYNCHRONIZE</envar></title>
451 If set, GDK makes all X requests synchronously. This is a useful
452 option for debugging, but it will slow down the performance considerably.
457 <title><envar>XDG_DATA_HOME</envar>, <envar>XDG_DATA_DIRS</envar></title>
460 GTK+ uses these environment variables to locate icon themes
461 and MIME information. For more information, see
462 <ulink url="http://freedesktop.org/Standards/icon-theme-spec">Icon Theme Specification</ulink>,
463 the <ulink url="http://freedesktop.org/Standards/shared-mime-info-spec">Shared MIME-info Database</ulink>
464 and the <ulink url="http://freedesktop.org/Standards/basedir-spec">Base Directory Specification</ulink>.
469 <title><envar>DESKTOP_STARTUP_ID</envar></title>
472 GTK+ uses this environment variable to provide startup notification
473 according to the <ulink url="http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt">Startup Notification Spec</ulink>.
474 Following the specification, GTK+ unsets this variable after reading
475 it (to keep it from leaking to child processes). So, if you need its
476 value for your own purposes, you have to read it before calling