Il toolkit, progettato inizialmente come ausilio alla programmazione per il noto programma di grafica GIMP, ha acquisito popolarità scavalcando le librerie Motif e divenendo parte fondamentale dell'ambiente desktop GNOME e di altri ambienti.
Evoluzione storica
GTK+ 2
GTK+ 2 si è sviluppata con l'intenzione di sostituire e migliorare la GTK+. Tra le nuove caratteristiche[2], inserite gradualmente già dalla GTK+ originale, si segnalano:
un gestore dei temi (introdotto già dalla versione 1.2.0 ma rielaborato successivamente per consentire la personalizzazione di ogni singolo elemento grafico)
una gestione migliorata del rendering del testo internazionale con Pango (introdotto nella versione 1.3.1)
una API più flessibile a seguito dello spostamento della logica ad oggetti nella libreria GObject (dalla versione 1.3.1)
la completa transizione a Unicode con l'adozione di stringhe UTF-8 (dalla versione 1.3.2)
accessibilità ai disabili migliorata con l'uso della libreria ATK (a partire dalla versione 1.3.5)
Tuttavia, GTK+ 2 non è compatibile con GTK+ 1, ed i programmatori devono migrare il loro vecchio codice.
A partire dalla versione 2.8, GTK+ 2 dipende dalla libreria Cairo per il rendering dell'interfaccia mediante grafica vettoriale 2D.
GTK+ 3
La versione 3 è stata rilasciata il 10 febbraio 2011[3] e include la seguenti caratteristiche salienti:
i componente grafico GDK viene reso indipendente da X11
viene usato Cairo per ogni operazione grafica
XInput2 viene usato per la gestione dell'input, supportando i gesti e multi-touch
resa disponibile un'API per la realizzazione di temi basati con CSS
nuovi widget disponibili
decorazione della finestra client-side
GTK 4
Rilasciato nel settembre del 2020, rappresenta l'ultimo sviluppo di GTK.[4] La nuova versione include un nuovo motore di rendering Vulkan e OpenGL, migliora il supporto per Wayland e migliori performance.[5]
Caratteristiche
Aspetto
L'utente finale può configurare l'aspetto dell'interfaccia a suo piacimento grazie alla possibilità di cambiare il tema utilizzato. Si possono così emulare le sembianze di altre librerie o di altri ambienti, tra i quali Windows 95, Motif, Qt o NeXTSTEP. I temi possono essere configurati dalla versione 3 tramite CSS[6] (in precedenza mediante un linguaggio specifico) e possono gestire bordi arrotondati, animazioni e trasparenze.
GtkBuilder è il sistema per realizzare il layout delle interfacce grafiche senza scrivere codice. L'interfaccia grafica dell'applicazione è descritta in XML, il file viene caricato all'avvio dell'applicazione e crea tutti gli oggetti grafici. L'editor Glade permette di costruire l'interfaccia grafica in modo WYSIWYG. I file di interfaccia XML sono indipendenti dal linguaggio usato dall'applicazione sottostante.
Codice non collegato alla grafica
GTK inizialmente conteneva alcune funzioni di utilità che non riguardavano strettamente la grafica, come la fornitura di strutture dati, liste concatenate ed alberi binari. Tali utilità generali, insieme al sistema a oggetti chiamato GObject, ora sono migrati in una libreria separata, GLib, che i programmatori possono comunque utilizzare per sviluppare codici che non necessitano di una interfaccia grafica. Un tipico esempio di questo approccio è il progetto GStreamer. La libreria GLib è mantenuta dagli stessi sviluppatori di GTK.
Per la sua estendibilità, portabilità e bontà tecnica è stata scelta come componente per altri widget toolkit, come wxWidgets.
In origine il toolkit GTK era destinato solo all'X Window System, che comunque rimane la piattaforma di riferimento. Attualmente può essere installato su Microsoft Windows (dalla versione 2.8 è richiesto Windows 2000 o superiore), DirectFB, e Quartz (Mac OS X Tiger o superiore, ancora in sviluppo) e anche col nuovo protocollo grafico di riferimento su GNU/Linux Wayland.
Le librerie GTK sono parte integrante del progetto GNOME e sono perciò le fondamenta dell'interfaccia utente di ogni programma sviluppato per GNOME. La versatilità e la relativa leggerezza hanno consentito alle GTK+ di essere alla base di altri desktop environment considerati più leggeri. Infatti esiste una versione di GNOME dedicata agli ambienti embedded GNOME Mobile.
Ad oggi sono usate per i seguenti ambienti:
GNOME è basato su GTK, quindi le applicazioni GNOME usano GTK
Xfce è basato su GTK, anche se le sue applicazioni tipicamente non dipendono da molte librerie (questa è la differenza tra quello che è marcato “applicazione GNOME” e quello che è semplicemente “applicazione GTK”).
Openmoko telefono, GPS e palmare Linux, utilizza GTK per l'interfaccia fin dalla prima versione anche se nelle ultime distribuzioni supporta anche QT ed Enlightenment.
Non è necessario usare questi ambienti grafici per eseguire programmi GTK. Se un programma richiede le librerie e queste sono installate, può funzionare anche su altri ambienti basati su X11, come KDE; Questo comprende Mac OS X se X11.app è installato. GTK può funzionare anche su Microsoft Windows, ed è utilizzato da alcune popolari applicazioni cross-platform come GIMP e Pidgin. wxWidgets, un cross-platform GUI toolkit, usa GTK su tutti i sistemi Unix. Alcuni port tra i più insoliti sono DirectFB e ncurses.
Novità GtkInfoBar, GtkLabel con URL incorporati, client-side windows. Miglioramenti in GtkEntry, GtkBuilder, GtkFileChooser e nell'interfaccia di stampa.
Novità GtkSpinner, GtkCellRendererSpinner, GtkOffscreenWindow. Miglioramenti in GtkFileChooser, nella gestione della tastiera e i dati di introspezione di GDK son ora inclusi in GTK+.
gdk-pixbuf spostato in un modulo a parte, le operazioni di disegno di GDK sono ora completamente effettuate da Cairo, molti dati interni sono stati resi privati e possono essere nascosti in preparazione di GTK+3.
Aggiunto un nuovo widget per le ComboBox (GtkComboBoxText), il backend della stampa delle tazze può inviare i processi di stampa in PDF, GtkBuilder ha ottenuto il supporto ai tag di testo e ai menu dei toolbuttons e molte correzioni delle annotazioni di introspezione sono state aggiunte.
Menu di supporto in GtkApplication, Un nuovo selettore del colore, aggiunto supporto ai dispositivi touch, aggiunto supporto allo scorrimento continuo, GtkScrolledWindow farà lo scrolling cinetico con dispositivi touch, supporto a OS X migliorato, questa è la prima versione di GTK+ 3 che funziona bene su Windows, Il backend di Wayland è stato aggiornato alla versione corrente delle API Wayland ed è molto più completo ora, i pulsanti di rotazione hanno ricevuto un nuovo look, Accessibilità: Il supporto all'accesso alla visualizzazione a struttura è stato riscritto e funziona molto meglio ora, supporto più completo ai temi CSS.
GtkSearchEntry, GtkMenuButton, GtkLevelBar. Pulsanti di rotazione verticale. animazioni CSS, ombre sfocate. Support alla dissolvenza incrociata e alle transizioni nei temi.
Nuovo motore di rendering NGL (basato comunque su OpenGL) su tutte le piattaforma supportate da GTK
Note
^ Emmanuele Bassi, Project rename to "GTK", su mail.gnome.org, 6 febbraio 2019. URL consultato l'8 febbraio 2019.
^(EN) Novità introdotte nella Gtk+ 2, su codice sorgente della Gtk. URL consultato l'11 ottobre 2020 (archiviato dall'url originale il 16 luglio 2012).