GTK (toolkit)
GTK software | |
---|---|
![]() | |
![]() | |
Genere | Libreria grafica (non in lista) |
Sviluppatore | GNOME Foundation e progetto GNU |
Data prima versione | 14 aprile 1998 |
Ultima versione | 4.12.4 (17 novembre 2023) |
Sistema operativo | Linux Microsoft Windows macOS |
Linguaggio | C |
Licenza | GNU LGPL v2.1 e GNU Lesser General Public License (licenza libera) |
Lingua | Multilingue |
Sito web | gtk.org/ |
GTK (in passato GTK+[1], acronimo che sta per GIMP ToolKit) in informatica, è un toolkit (insieme di strumenti, di cui il principale è la libreria libgtk) per la creazione di interfacce grafiche. Sviluppato in C, supporta nativamente l'ambiente grafico X Window System, Wayland e Microsoft Windows. È software libero (parte del progetto GNU) secondo la licenza LGPL.
Il toolkit, progettato inizialmente come ausilio alla programmazione per il noto programma di grafica GIMP, ha acquisito popolarità scavalcando Motif e divenendo parte fondamentale dell'ambiente desktop GNOME.
Evoluzione storica[modifica | modifica wikitesto]
GTK+ 2[modifica | modifica wikitesto]
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[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]
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[modifica | modifica wikitesto]
Aspetto[modifica | modifica wikitesto]

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] 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.
Codice non collegato alla grafica[modifica | modifica wikitesto]
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.
Linguaggio[modifica | modifica wikitesto]
GTK usa il linguaggio di programmazione C esteso, grazie a GLib e GObject, al paradigma della programmazione orientata agli oggetti. GTK fornisce binding per linguaggi come il C++, il Perl, il Ruby, il Java e Python (PyGTK). Altri hanno aggiunto anche il supporto ad altri linguaggi come Ada, Fortran, D, Haskell, Pascal, PHP, Pike e C# grazie a Mono (Gtk#). È anche possibile usare l'HTML5 come output, visualizzando l'interfaccia su browser.[7]
Piattaforme supportate[modifica | modifica wikitesto]
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.
Utilizzo[modifica | modifica wikitesto]
Ambienti che usano GTK[modifica | modifica wikitesto]
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”).
- LXDE è basato su GTK, l'acronimo significa "Lightweight X11 Desktop Environment"
- ROX Desktop è un desktop leggero, con funzioni che provengono dalla GUI del RISC OS
- GPE Palmtop Environment Linux sui palmari e Familiar Linux
- Maemo (Ambiente TabletPC-Internet Nokia)
- Access Linux Platform (successore della piattaforma Palm OS PDA)
- One Laptop Per Child il progetto caritatevole "Un laptop per ogni bambino" usa GTK+ e PyGTK
- 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.
Gestori di finestre[modifica | modifica wikitesto]
Applicazioni scritte con l'uso di GTK[modifica | modifica wikitesto]

Alcune significative applicazioni multipiattaforma con codice aperto che usano GTK come toolkit per widget:
- CinePaint (ex FilmGimp) - Editor di immagini Raster HDR
- Ekiga (ex GnomeMeeting) - H.323/SIP VoIP softphone
- Evolution - Client di posta elettronica
- GIMP - Editor di immagini Raster
- gMplayer - Riproduttore video multiformato
- GStreamer - Server per applicazioni multimediali (usa solo GLib/GObject)
- Inkscape - Editor di immagini vettoriali SVG
- K-3D - Modellatore 3D con animazione
- Mozilla Seamonkey - Suite Internet (browser, client di posta, editor HTML, chat)
- Mozilla Firefox - Browser
- Mozilla Thunderbird - Client di posta elettronica
- Netscape - Internet suite (browser, client di posta, editor HTML, chat)
- Pidgin (ex GAIM) - Programma di chat multiprotocollo
- VMware Server 1.x - Macchina virtuale
- Wireshark (ex Ethereal) - Sniffer, decodifica e analizzatore di pacchetti
Cronologia delle versioni[modifica | modifica wikitesto]
Versione Famiglia | Data iniziale rilascio | Principale miglioramento | Ultima versione minore |
---|---|---|---|
1.0 Archiviato il 12 agosto 2014 in Internet Archive. | 14 aprile 1998 | Prima versione stabile | 1.0.6 |
1.2 | 27 febbraio 1999 | Nuovi widget (GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree, GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket) | 1.2.10 |
2.0 | 11 marzo 2002 | Spostato gestione ad oggetti in GLib (GObject) e supporto unicode con codifica UTF-8 | 2.0.9 |
2.2 | 22 dicembre 2002 | Supporto multihead | 2.2.4 |
2.4 | 16 marzo 2004 | Nuovi widget (GtkFileChooser, GtkComboBox, GtkComboBoxEntry, GtkExpander, GtkFontButton, GtkColorButton) | 2.4.14 |
2.6 | 16 dicembre 2004 | Nuovi widget (GtkIconView, GtkAboutDialog e GtkCellView) | 2.6.10 |
2.8 | 13 agosto 2005 | Integrazione con cairo | 2.8.20 |
2.10 | 3 luglio 2006 | Nuovi widget (GtkStatusIcon, GtkAssistant, GtkLinkButton, GtkRecentChooser) e supporto per la stampa (GtkPrintOperation) | 2.10.14 |
2.12 | 14 settembre 2007 | Nuovo sistema per la generazione dell'interfaccia da un file XML (GtkBuilder) | 2.12.12 |
2.14 | 4 settembre 2008 | Supporto caricamento JPEG2000 e sealing opzionale delle proprietà (non sono più pubbliche) | 2.14.7 |
2.16 | 13 marzo 2009 | Novità GtkOrientable, Caps Lock warning nell'inserimento di password. Miglioramenti in GtkScale, GtkStatusIcon, GtkFileChooser. | 2.16.6 |
2.18 | 25 settembre 2009 | Novità GtkInfoBar, GtkLabel con URL incorporati, client-side windows. Miglioramenti in GtkEntry, GtkBuilder, GtkFileChooser e nell'interfaccia di stampa. |
2.18.8 |
2.20 | 23 marzo 2010 | Novità GtkSpinner, GtkCellRendererSpinner, GtkOffscreenWindow. Miglioramenti in GtkFileChooser, nella gestione della tastiera e i dati di introspezione di GDK son ora inclusi in GTK+. |
2.20.1 |
2.22 | 23 settembre 2010 | 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. | 2.22.0 |
2.24 | 30 gennaio 2011 | 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. | 2.24.12 |
3.0 | 10 febbraio 2011 | Cairo, meno dipendenza da X11, XInput2, API dei temi CSS-based | 3.0.12 |
3.2 | 25 settembre 2011 | Nuovi backend sperimentali di Wayland e HTML5, nuovo dialogo di scelta del font, nuovi widgets: GtkLockButton e GtkOverlay | 3.2.4 |
3.4 | 26 marzo 2012 | 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. | 3.4.4 |
3.6 | 24 settembre 2012 | GtkSearchEntry, GtkMenuButton, GtkLevelBar. Pulsanti di rotazione verticale. animazioni CSS, ombre sfocate. Support alla dissolvenza incrociata e alle transizioni nei temi. | 3.6.3 |
4.0 | 17 settembre 2020 | Nuovo motore di rendering Vulkan e OpenGL. Miglior supporto per Wayland e migliori performance. | 4.0.1 |
4.2 | 30 marzo 2020 | Nuovo motore di rendering NGL (basato comunque su OpenGL) su tutte le piattaforma supportate da GTK |
Note[modifica | modifica wikitesto]
- ^ 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).
- ^ GTK+ 3.0.0 released, su mail.gnome.org. URL consultato il 3 aprile 2021.
- ^ (EN) GTK 4.0 – GTK Development Blog, su blog.gtk.org. URL consultato il 3 aprile 2021.
- ^ GTK 4.0 Toolkit Officially Released, su phoronix.com, 16 dicembre 2020. URL consultato il 3 aprile 2021.
- ^ GTK+ CSS Overview: GTK+ 3 Reference Manual, su developer.gnome.org. URL consultato il 3 aprile 2021.
- ^ Using GTK+ with Broadway: GTK+ 3 Reference Manual, su developer.gnome.org. URL consultato il 3 aprile 2021.
Altri progetti[modifica | modifica wikitesto]
Wikimedia Commons contiene immagini o altri file su GTK
Collegamenti esterni[modifica | modifica wikitesto]
- (EN) Sito ufficiale, su gtk.org.
- (EN) GTK, su SourceForge.
- GTK, su packages.debian.org.
- Repository sorgenti di GTK, su gitlab.gnome.org.
- (EN) GTK, su Free Software Directory.
Controllo di autorità | VIAF (EN) 179958458 · LCCN (EN) n2001062971 · GND (DE) 4618256-1 |
---|