Part I. Introduction

GTK is a library for creating graphical user interfaces. It works on many UNIX-like platforms, Windows, and OS X. GTK is released under the GNU Library General Public License (GNU LGPL), which allows for flexible licensing of client applications. GTK has a C-based object-oriented architecture that allows for maximum flexibility. Bindings for many other languages have been written, including C++, Objective-C, Guile/Scheme, Perl, Python, TOM, Ada95, Free Pascal, and Eiffel. The GTK library itself contains widgets, that is, GUI components such as GtkButton or GtkTextView.

GTK depends on the following libraries:

GLib

A general-purpose utility library, not specific to graphical user interfaces. GLib provides many useful data types, macros, type conversions, string utilities, file utilities, a main loop abstraction, and so on.

GObject

A library that provides a type system, a collection of fundamental types including an object type, a signal system.

GIO

A modern, easy-to-use VFS API including abstractions for files, drives, volumes, stream IO, as well as network programming and DBus communication.

cairo

Cairo is a 2D graphics library with support for multiple output devices.

Pango

Pango is a library for internationalized text handling. It centers around the PangoLayout object, representing a paragraph of text. Pango provides the engine for GtkTextView, GtkLabel, GtkEntry, and other widgets that display text.

GdkPixbuf

This is a small library which allows you to create GdkPixbuf ("pixel buffer") objects from image data or image files. Use a GdkPixbuf in combination with GtkImage to display images.

graphene

This is a small library which provides vector and matrix datatypes and operations. graphene provides optimized implementations using various SIMD instruction sets such as SSE.

GDK

GDK is the abstraction layer that allows GTK to support multiple windowing systems. GDK provides window system facilities on Wayland, X11, Windows, and OS X.

GSK

GSK is a library for creating a scene graph from render nodes, and rendering it using different rendering APIs. GSK provides renderers for OpenGL, Vulkan and cairo.