GTK (toolkit)

toolkit per la creazione di interfacce grafiche Da Wikipedia, l'enciclopedia libera

GTK (toolkit)

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.

Fatti in breve GTK software, Genere ...
GTK
software
Logo
Logo
Thumb
Widget di GTK 4
Widget di GTK 4
GenereLibreria grafica (non in lista)
SviluppatoreGNOME Foundation e progetto GNU
Data prima versione14 aprile 1998; 27 anni fa
Ultima versione4.18.4 (7 aprile 2025)
Sistema operativoLinux
Microsoft Windows
macOS
LinguaggioC
LicenzaGNU LGPL v2.1
(licenza libera)
LinguaMultilingue
Sito webgtk.org/
Chiudi

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.

Caratteristiche

Riepilogo
Prospettiva

Aspetto

Thumb
L'editor di testo «gedit», realizzato con GTK+ 2

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[2] (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 (GTK 2 e 3) e Cambalache (GTK 3 e 4) permettono di costruire l'interfaccia grafica in modo WYSIWYG. I file di interfaccia XML sono indipendenti dal linguaggio usato dall'applicazione sottostante.

Piattaforme supportate

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 4 è richiesto Windows 7 o superiore), DirectFB, e Quartz (OS X Mavericks o superiora) e anche col nuovo protocollo grafico di riferimento su GNU/Linux Wayland.

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.

Linguaggio

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.[3]

Storia

Riepilogo
Prospettiva

GTK+ 2

GTK+ 2 si è sviluppata con l'intenzione di sostituire e migliorare la GTK+. Tra le nuove caratteristiche[4], 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

Thumb
I widget di GTK+ 3.12

La versione 3 è stata rilasciata il 10 febbraio 2011[5] e include la seguenti caratteristiche salienti:

  • i componente grafico GDK viene reso indipendente da X11 così da supportare Wayland.
  • 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

Nel febbraio 2019 viene annnunciato che a partire dalla versione 4, il nome GTK non avrà più il simbolo "+".[1] Il 16 dicembre 2020 viene pubblicata la nuova versione di GTK. La nuova versione include un nuovo motore di rendering Vulkan e OpenGL, migliora il supporto per Wayland e migliori performance.[6][7]

Cronologia delle versioni

Ulteriori informazioni Versione famiglia, Data iniziale rilascio ...
Versione famiglia Data iniziale rilascio Principali miglioramenti Ultima versione minore
Vecchia versione non più supportata: 1.0 1998-04-13[8] Prima versione stabile 1.0.
Vecchia versione non più supportata: 1.2 1999-02-25[9] Nuovi widget:
  • GtkFontSelector
  • GtkPacker
  • GtkItemFactory
  • GtkCTree
  • GtkInvisible
  • GtkCalendar
  • GtkLayout
  • GtkPlug
  • GtkSocket
1.2.10
Vecchia versione non più supportata: 2.0 2002-03-11[10] Spostata gestione ad oggetti in GLib (GObject) e supporto Unicode con codifica UTF-8 2.0.9
Vecchia versione non più supportata: 2.2 2002-12-22[11] Supporto multi-monitor 2.2.4
Vecchia versione non più supportata: 2.4 2004-03-16[12] Nuovi widget
  • GtkFileChooser
  • GtkComboBox
  • GtkComboBoxEntry
  • GtkExpander
  • GtkFontButton
  • GtkColorButton
2.4.14
Vecchia versione non più supportata: 2.6 2004-12-16[13] Nuovi widget
  • GtkIconView
  • GtkAboutDialog
  • GtkCellView

Ultima versione a supoortare Windows 98/Me

2.6.10
Vecchia versione non più supportata: 2.8 2005-08-13[14] Maggior parte dei widget renderizzata con cairo 2.8.20
Vecchia versione non più supportata: 2.10 2006-07-03[15] Nuovi widget:
  • GtkStatusIcon
  • GtkAssistant
  • GtkLinkButton
  • GtkRecentChooser

Supporto per la stampa: GtkPrintOperation

2.10.14
Vecchia versione non più supportata: 2.12 2007-09-14[16] Nuovo sistema per la generazione dell'interfaccia da un file XML (GtkBuilder) 2.12.12
Vecchia versione non più supportata: 2.14 2008-09-04[17] Supporto al caricamento JPEG 2000 2.14.7
Vecchia versione non più supportata: 2.16 2009-03-13[18] Nuovi widget: GtkOrientable

Caps Lock warning nell'inserimento di password. Miglioramenti in GtkScale, GtkStatusIcon, GtkFileChooser.

2.16.6
Vecchia versione non più supportata: 2.18 2009-09-23[19] Nuovo widget GtkInfoBar, GtkLabel con URL incorporati, client-side windows.

Miglioramenti in GtkEntry, GtkBuilder, GtkFileChooser e nell'interfaccia di stampa.

2.18.9
Vecchia versione non più supportata: 2.20 2010-03-23[20] Nuovi widget:
  • GtkSpinner
  • GtkToolPalette
  • GtkOffscreenWindow

Miglioramenti in GtkFileChooser, nella gestione della tastiera e i dati di introspezione di GDK son ora inclusi in GTK+.

2.20.1
Vecchia versione non più supportata: 2.22 2010-09-23[21] 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.1
Vecchia versione non più supportata: 2.24 2011-01-30[22] Nuovo wiget: GtkComboBoxText; il backend della stampa 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.

Migrazione da GTK+ 2.x a GTK+ 3

2.24.33
(2020-12-21)[23]
Vecchia versione non più supportata: 3.0 2011-02-10[24] Inclusione di diverse librerie all'interno GTK libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, gtkglext, and libsexy[25]

Tutto il rendering viene effettuato con cairo; meno dipendenza da X11; introduzione XInput2; temi basati su CSS

3.0.12
Vecchia versione non più supportata: 3.2 2011-09-25[26] Nuovi widget:
  • GtkLockButton
  • GtkOverlay

nuovo dialogo di scelta del font,

Nuovi backend sperimentali:

3.2.4
Vecchia versione non più supportata: 3.4 2012-03-26[27] 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
Vecchia versione non più supportata: 3.6 2012-09-24[28] Niovi widget:
  • GtkSearchEntry
  • GtkMenuButton
  • GtkLevelBar

Pulsanti di rotazione verticale. animazioni CSS, ombre sfocate. Supporto alla dissolvenza incrociata e alle transizioni nei temi.

3.6.5
Vecchia versione non più supportata: 3.8 2013-03-25[29] Supporto a Wayland 1.0 stabile, server broadwayd, miglioramenti nei temi, migliore gestione alla geometria dell'interfaccia, miglioramenti delle interazioni touch, supporto alla sincronizaazione dei frame nei window manager 3.8.9
Vecchia versione non più supportata: 3.10 2013-09-23[30] Nuovi widget:
  • GtkHeaderBar
  • GtkPlacesSidebar
  • GtkStack
  • GtkStackSwitcher
  • GtkRevealer
  • GtkSearchBar
  • GtkListBox

Supporto per Wayland 1.2

Aggiunto:

  • decorazioni lato client
  • supporto output scalato su schermi ad alta risoluzione
  • modalità di regolazione fine per lo scorrimento

Rimosso:

  • supporto per il protocollo Motif DND
  • supporto per più schermi per display
  • gdk_window_get_display
  • gtk_widget_push_composite_child

Voci di menu staccabili, più molte impostazioni GTK

Il moderno modello di disegno GTK

3.10.9
Vecchia versione non più supportata: 3.12 2014-03-25[31] Supporto per Wayland 1.5

Nuovo widget: GtkPopover (una alternativa a menu e dialoghi)

3.12.2
Vecchia versione non più supportata: 3.14 2014-09-22[32] Introdotto GtkInspector (una copia di gtkparasite)[33][34]

Migliorato il supporto per i gesti e multi-touch[35][36]

Deprecazioni:[37]

  • GtkMisc
  • GtkAlignment
  • GtkArrow
  • GdkColor
  • Style regions
  • support for .icon files
  • gdk_window_flush
  • drawing outside of begin/end paint

La maggior parte dei widget sono stati convertiti per utilizzare i gesti internamente.

Supporto a Wayland nella GNOME Shell classic mode[38]

3.14.15
Vecchia versione non più supportata: 3.16 2015-03-22[39] GDK supporta il rendering delle finestre utilizzando OpenGL per X11 e Wayland utilizzando libepoxy

Nuovi widget:

  • GtkGLArea
  • GtkStackSidebar
  • GtkModelButton
  • GtkPopoverMenu

Scorrimento revisionato (barra di scorrimento nascosta per impostazione predefinita[40])

Backend sperimentale Mir[41]

3.16.7
Vecchia versione non più supportata: 3.18 2015-09-23[42] Add CSS node infrastructure

More filechooser design refresh and better filechooser search

Dropped Windows XP support

Model support for list and flow box

Kinetic touchpad scrolling

Touchpad gestures (Wayland)

gtk-builder-tool utility

Output-only windows

Aggiunta infrastruttura CSS a nodi; ulteriore aggiornamento del design del filechooser e migliore ricerca del filechooser; supporto modello per elenco e casella di flusso; scorrimento cinetico del touchpad; gesti del touchpad (Wayland); utilità gtk-builder-tool; finestre di sola uscita

Eliminato il supporto a Windows XP

3.18.9
Vecchia versione non più supportata: 3.20 2016-03-21[43] Miglioramenti ai nodi CSS[44]

Nuovo widget: GtkShortcutsWindow (mostra le scorciatoie da tastiera e i gesti di un'applicazione)

3.20.10
Vecchia versione non più supportata: 3.22 2016-09-21[45] Ultima versione della serie 3.x[46]

Supporto per la tavolette grafiche sotto Wayland,[47][48]

GTK 3.22 viene considerata stabile come GTK 2[49][50][51]

for 3+ years
3.22.29
Versione precedente ancora supportata: 3.24 2018-09-03[52] La 3.22 sarebbe dovuta essere l'ultima versione della serie GTK 3, ma è stata rilasciata la 3.24 principalmente per semplificare la migrazione da GTK 3 a GTK 4. 3.23.0
3.23.1
3.23.2
3.23.3
3.24.0
...3.24.5
3.24.14
...

3.24.29

Vecchia versione non più supportata: 4.0 2020-12-16[53] Nuovo motore di rendering Vulkan e OpenGL. Miglior supporto per Wayland e migliori performance.
  • Nuovo GTK Scene Graph Kit (GSK)
  • autotools rimpiazzati con Meson
4.0.3
Vecchia versione non più supportata: 4.2 2021-03-30[54] 4.2.1
Vecchia versione non più supportata: 4.4 2021-08-23[55] 4.4.1
Vecchia versione non più supportata: 4.6 2021-12-30[56] 4.6.9
Vecchia versione non più supportata: 4.8 2022-09-06[57] 4.8.3
Vecchia versione non più supportata: 4.10 2023-03-04[58] GtkFileChooser deprecato in favore di GtkFileDialog[59] 4.10.5
Vecchia versione non più supportata: 4.12 2023-08-05[60] 4.12.5
Vecchia versione non più supportata: 4.14 2024-03-12[61] 4.14.6
Versione stabile corrente: 4.16 2024-06-09[62] 4.16.12
Legenda:
Vecchia versione
Versione precedente ancora supportata
Versione corrente
Ultima versione di anteprima
Versione futura
Chiudi

Utilizzo

Riepilogo
Prospettiva
Le singole voci sono elencate nella Categoria:Software in GTK+.

Ambienti che usano GTK

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”).
  • Cinnamon è basato su 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

Applicazioni scritte con l'uso di GTK

Thumb
Inkscape 1.2 con il logo di GTK vettoriale

Alcune significative applicazioni multipiattaforma con codice aperto che usano GTK come toolkit per widget:

Note

Altri progetti

Collegamenti esterni

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.