Obsah

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

Historie a verze

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

Architektura GTK

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

  1. GLib: Základní nízkoúrovňová knihovna pro práci s datovými strukturami a event loop.
  2. Pango: Knihovna pro vykreslování textu a internacionalizaci.
  3. Cairo: Vektorová grafika pro kreslení prvků (v GTK 4 doplněno o GSK - GTK Scene Graph).
  4. 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