GTK (GIMP Toolkit)

GTK je multiplatformní knihovna prvků (widgets) pro tvorbu grafického rozhraní. Ačkoliv je napsána v jazyce C, díky objektově orientovanému systému GObject a silným vazbám (bindings) je dostupná pro téměř všechny moderní jazyky (Python, Rust, C++, JavaScript atd.).

Hlavní vlastnosti

Multiplatformita: Běží na Linuxu, Windows i macOS.

Open Source: Vyvíjeno pod licencí GNU LGPL (vhodné i pro komerční software).

Vzhled (Theming): Podporuje úpravu vzhledu pomocí CSS, což umožňuje snadnou customizaci aplikací.

Přístupnost (Accessibility): Obsahuje vestavěnou podporu pro čtečky obrazovky a další asistenční technologie.

Historie a verze

Vývoj GTK prošel několika zásadními generacemi:

GTK 2: Starší standard, stále používaný mnoha legacy aplikacemi.

GTK 3: Přineslo podporu pro moderní displeje (HiDPI) a CSS styling.

GTK 4: Aktuální moderní verze. Zaměřuje se na hardwarovou akceleraci (využívá GPU přes Vulkan/OpenGL) a čistší API.

Architektura GTK

GTK nestojí osamoceně, ale opírá se o několik dalších knihoven:

GLib: Základní nízkoúrovňová knihovna pro práci s datovými strukturami a event loop.

Pango: Knihovna pro vykreslování textu a internacionalizaci.

Cairo: Vektorová grafika pro kreslení prvků (v GTK 4 doplněno o GSK - GTK Scene Graph).

GDK: Vrstva, která zprostředkovává komunikaci s grafickým serverem (Wayland, X11, Windows GDI).

Srovnání: GTK vs. Qt

Dva největší konkurenti v oblasti GUI frameworků:

Vlastnost	GTK	Qt
Jazyk	Napsáno v C (používá GObject).	Napsáno v C++.
Styling	Přes standardní CSS.	Přes QSS (vlastní dialekt CSS) nebo QML.
Licence	LGPL (zdarma pro komerční užití).	Komerční nebo GPL/LGPL.
Desktop	Výchozí pro GNOME, XFCE, Budgie.	Výchozí pro KDE Plasma.

Příklad kódu (Python - PyGObject)

import gi
gi.require_version("Gtk", "4.0")
from gi.repository import Gtk
def on_activate(app):
win = Gtk.ApplicationWindow(application=app)
btn = Gtk.Button(label="Ahoj světe!")
btn.connect("clicked", lambda x: print("Tlačítko stisknuto"))
win.set_child(btn)
win.present()
app = Gtk.Application(application_id="org.priklad.GtkApp")
app.connect("activate", on_activate)
app.run(None)

—

Zajímavost: GTK původně vzniklo jako nástroj pro program GIMP (GNU Image Manipulation Program), odtud také pochází jeho název. Dnes však pohání stovky velkých projektů včetně prohlížeče Firefox nebo textového editoru Inkscape.

Související: glibc, Linux, GNOME, Oficiální web GTK