====== 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]], [[https://www.gtk.org|Oficiální web GTK]]//