<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="tech-gtk" xml:lang="uk">

  <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 xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>

    <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 web site</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>Mailing lists:</p>
    <list style="compact">
      <item><p><link href="https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list">Writing GTK+ applications</link></p></item>
      <item><p><link href="https://mail.gnome.org/mailman/listinfo/gtk-list">General discussion about GTK+</link></p></item>
      <item><p><link href="https://mail.gnome.org/mailman/listinfo/gtk-devel-list">Development of GTK+</link></p></item>
    </list>
  </item>
</list>
</page>
