1Title: Overview
2
3GTK is a library for creating graphical user interfaces. It works on many
4UNIX-like platforms, Windows, and macOS. GTK is released under the terms of
5the [GNU Library General Public License][gnu-lgpl], which allows for flexible
6licensing of client applications. GTK has a C-based, object-oriented
7architecture that allows for maximum flexibility and portability; there are
8bindings for many other languages, including C++, Objective-C, Guile/Scheme, Perl,
9Python, JavaScript, Rust, Go, TOM, Ada95, Free Pascal, and Eiffel.
10
11The GTK toolkit contains "widgets": GUI components such as buttons, text
12input, or windows.
13
14GTK depends on the following libraries:
15
16 - **GLib**: a general-purpose utility library, not specific to graphical
17   user interfaces. GLib provides many useful data types, macros, type
18   conversions, string utilities, file utilities, a main loop abstraction,
19   and so on. More information available on the [GLib website][glib].
20 - **GObject**: A library that provides a type system, a collection of
21   fundamental types including an object type, and a signal system. More
22   information available on the [GObject website][gobject].
23 - **GIO**: A modern, easy-to-use VFS API including abstractions for files,
24   drives, volumes, stream IO, as well as network programming and IPC though
25   DBus. More information available on the [GIO website][gio].
26 - **Cairo**: Cairo is a 2D graphics library with support for multiple
27   output devices. More information available on the [Cairo website][cairo].
28 - **OpenGL**: OpenGL is the premier environment for developing portable,
29   interactive 2D and 3D graphics applications. More information available
30   on the [Khronos website][opengl].
31 - **Pango**: Pango is a library for internationalized text handling. It
32   centers around the `PangoLayout` object, representing a paragraph of
33   text.  Pango provides the engine for `GtkTextView`, `GtkLabel`,
34   `GtkEntry`, and all GTK widgets that display text. More information
35   available on the [Pango website][pango].
36 - **gdk-pixbuf**: A small, portable library which allows you to create
37   `GdkPixbuf` ("pixel buffer") objects from image data or image files. You
38   can use `GdkPixbuf` in combination with widgets like `GtkImage` to
39   display images. More information available on the
40   [gdk-pixbuf website][gdkpixbuf].
41 - **graphene**: A small library which provides vector and matrix
42   datatypes and operations. Graphene provides optimized implementations
43   using various SIMD instruction sets such as SSE and ARM NEON. More
44   information available on the [Graphene website][graphene]
45
46GTK is divided into three parts:
47
48 - **GDK**: GDK is the abstraction layer that allows GTK to support multiple
49   windowing systems. GDK provides window system facilities on Wayland, X11,
50   Microsoft Windows, and Apple macOS.
51 - **GSK**: GSK is an API for creating a scene graph from drawing operation,
52   called "nodes", and rendering it using different backends. GSK provides
53   renderers for OpenGL, Vulkan and Cairo.
54 - **GTK**: The GUI toolkit, containing UI elements, layout managers, data
55   storage types for efficient use in GUI applications, and much more.
56
57[gnu-lgpl]: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
58[glib]: https://developer.gnome.org/glib/stable/
59[gobject]: https://developer.gnome.org/gobject/stable/
60[gio]: https://developer.gnome.org/gio/stable/
61[cairo]: https://www.cairographics.org/manual/
62[opengl]: https://www.opengl.org/about/
63[pango]: https://pango.gnome.org/
64[gdkpixbuf]: https://developer.gnome.org/gdk-pixbuf/stable/
65[graphene]: https://ebassi.github.io/graphene/
66