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