<page xmlns="http://projectmallard.org/1.0/"
      xmlns:its="http://www.w3.org/2005/11/its"
      type="topic"
      id="tech-gtk">

  <info>
    <link type="guide" xref="tech" group="gtk"/>
    <revision pkgversion="3.0" date="2011-04-05" status="candidate"/>

    <credit type="author copyright">
      <name>Shaun McCance</name>
      <email its:translate="no">shaunm@gnome.org</email>
      <years>2011–2012</years>
    </credit>

    <include href="cc-by-sa-3-0.xml" xmlns="http://www.w3.org/2001/XInclude"/>

    <desc>Widget toolkit for graphical interfaces</desc>
  </info>

<title>GTK</title>

<p>GTK is the primary library used to construct user interfaces in GNOME.  Its
name stands for "GIMP Tool Kit", as originally it was explicitly
written for that image manipulation program, and later extracted from
it as a stand-alone library.  It provides all the user
interface controls, or <em>widgets</em>, used in a common graphical
application.  Its object-oriented API allows you to construct user
interfaces without dealing with the low-level details of drawing and
device interaction.</p>

<p>In addition to basic widgets, such as buttons, check boxes,
and text entries, GTK also provides Model-View-Controller
(MVC) APIs for tree views, multi-line text fields, and menu and
toolbar actions.</p>

<p>Widgets in GTK are placed on windows using a <em>box-packing model</em>.
Programmers specify only how to pack widgets together in container
boxes, instead of positioning them directly with absolute coordinates.
Thus, GTK ensures that windows are sized correctly to fit their contents,
and it automatically handles window resizing.  For right-to-left languages like
Arabic and Hebrew, GTK automatically reverses the user interface from left
to right so that controls have the expected visual order.</p>

<p>GTK allows you to develop custom widgets for use in applications.
Similar to native or stock widgets, these custom widgets can
support all the features that GTK has:  right-to-left language support,
accessibility interfaces, keyboard navigation, and automatic sizing.</p>

<list style="compact">
  <item><p><link href="https://www.gtk.org/">Official website</link></p></item>
  <item><p><link href="https://developer.gnome.org/gnome-devel-demos/stable/">Demo tutorial</link></p></item>
  <item><p><link href="https://developer.gnome.org/gtk3/stable/">Reference Manual</link></p></item>
  <item><p><link href="https://gitlab.gnome.org/GNOME/gtk/">Git repository</link></p></item>
  <item><p><link href="https://discourse.gnome.org/">Discussion about GTK and getting help</link></p></item>
</list>
</page>