GTK

GTK (originalment GTK+, de l'anglès, Gimp ToolKit) és un conjunt de biblioteques multiplataforma per a crear interfícies gràfiques, sota programari lliure i de codi obert. En un primer moment s'inspirà en Motif i es desenvolupà per a GIMP. Quan membres de la Fundació GNOME s'hi van involucrar, GTK va rebre una major integració i va ser emprat per a crear gran quantitat de programaris. És un dels paquets d'eines més populars per a les X Window System juntament amb Qt. GTK és adequat per a projectes que van des de petites eines fins a paquets de programari complets.

Característiques 
 GTK inicialment fou escrit per a Linux i ha esdevingut multiplataforma rebent suport per a Microsoft Windows, Solaris, Mac OS X entre d'altres.
 GTK està sota la llicència lliure Lesser General Public License per la qual cosa tothom té la possibilitat d'utilitzar-lo per a projectes de programari lliure com privatiu; també es pot adaptar el codi font.
 GTK+ ha estat escrit en llenguatge C però, empra el concepte de classes i realitza demandes de funcions. Suporta una àmplia gamma de llenguatges per a interfícies de programació, no només C/C++; emprant GTK+ amb Perl o Python maximitza el flux de treball en el desenvolupament d'aplicacions, especialment si es combina amb dissenyadors d'interfícies gràfiques com Glade o Cambalache.

Història 
GTK va ser dissenyat i utilitzat originalment en l'editor gràfic digital de GNU (GIMP) en substitució de Motif. Aquest darrer era una biblioteca comercial, de manera que guanyar popularitat entre els usuaris de GIMP no era fàcil. Peter Mattis va començar a escriure el seu propi conjunt d'eines per a la interfície de programari anomenant-lo Gimp ToolKit; Motif fou reemplaçant amb èxit des del llançament de GIMP 0.60 al voltant de l'any 1996. Posteriorment GTK va ser reescrit per ser orientat a objectes, va adquirir eines que el permetien ser una interfície d'escriptori i va ser rebatejat com a GTK+. Aquesta nomenclatura esdevingué pública en el llançament de GIMP 0.99 de febrer de 1997. Els desenvolupadors d'aquell llançament de GTK+ foren Peter Mattis, Spencer Kimball i Josh MacDonald. L'any 1997, els tres treballaven a eXperimental Computing Facility (XCF) de la Universitat de Califòrnia a Berkeley.

GTK+ Pot utilitzar diferents llenguatges de programació com: C, C++, Python, Perl, Java o Ada.

Actualment hi ha quatre versions estables de GTK:

GTK+ 1 
La primera versió estable (GTK+ 1.0), de l'abril de 1998, contenia tot allò necessari per a donar suport al GIMP.

En nàixer GNOME, el 1997, ho fa amb la preocupació de ser un entorn d'escriptori completament lliure. S'inspira en l'èxit de KDE però, s'hi oposa ja que en aquell moment emprava la biblioteca Qt que era de caràcter propietari. Troll Tech podia canviar la llicència en qualsevol moment i hauria deixat a KDE sense biblioteca base. Els desenvolupadors de GNOME van contactar amb Troll Tech per a proposar una llicència alternativa per a Qt que donés garantia a l'usuari mentre mantenia els interessos de l'empresa, però no van obtenir resposta.

Sota la llicència LGPL, GTK+ va ser adoptat per al manteniment de la Fundació GNOME, que l'utilitza en l'entorn d'escriptori GNOME. GNOME 1.0 es basà en GTK+ 1.2 versió de febrer de 1999, des d'aleshores membres de la Fundació GNOME n'han fet el manteniment, elaborant una guia per a dissenyar programari des de GTK, la GNOME Human Interface Guidelines.

GTK+ 1 va ser emprat de manera oficial des de l'abril de 1998 a Debian 2.0 (Hamm) fins al febrer de 2011 quan s'allibera Debian 6.0 (Squeeze).

GTK inicialment constava de 3 biblioteques que funcionaven com capes, cadascuna depenia de les que tenia a sota. Aquestes biblioteques també són anomenades widgets i són reutilitzables per separat.

 GLib (Gimp Libray): Es tracta d'una biblioteca d'estructures de dades de baix nivell i de subrutines que proporciona suport per a assignar i alliberar memòria. Forma el nucli del conjunt i ha estat d'utilitat a programari C divers, fins i tot programari que no és per a interfícies gràfiques. Aquesta llibreria es mostra de manera independent a la versió 1.2 de GTK+.
 GDK (Gimp Drawing Kit): Primordialment actua com a contenidor prim per a accedir a les funcions de les finestres X11. Així els usuaris del programari no han de veure les biblioteques subjacents per realitzar tasques ordinàries. Interactuen amb botons, finestres, mapes de bits de colors etc. Inicialment GTK+ era funcional a les interfícies de programacions X11 per a Linux i a Windows amb GDI ; des de la versió 1.2, també per a MacOS X amb Quartz i Cocoa. Encara que GNOME ha donat un suport discontinuat a Windows, MSY2 i gvsbuild en són alternatives.
 GTK (Gimp Toolkit): Aquesta biblioteca és l'escorça de GTK+ al voltant de les funcions de baix nivell. Allí es defineixen tots els elements de la interfície gràfica d'usuari com el tema de l'escriptori, d'altra banda dona suport a l'acció d'arrossegar i deixar anar. Aquesta biblioteca es recolza en gdk i glib per a fer el seu treball.

GTK+ 2 

La versió GTK+ 2.0 llançada el març de 2002 incorporava el motor de temes renovat; dues llibreries noves Pango i ATK; suport per a les fonts tipogràfiques en l'antialiàsing utilitzant Xft, una millor gestió de les fonts amb Fontconfig i un avançat Model-Vista-Controlador (MVC) per a llibreries de llistat i d'arbre. GtkTreeView substituïa a GtkCList i GtkCTree presents a GTK+ 1.

Un renovat equip format per Owen Taylor, Matthias Clasen, Federico Mena Quintero, Soeren Sandmann, Padraig O'Briain, Manish Singh, Kristian Rietveld i Tor Lillqvist es va fer càrrec de la segona versió del projecte. Per afegir una sèrie d'eines més complexes varen trencar la compatibilitat amb la primera versió, reescrivint les llibreries existents. Es poden tenir les dues versions instal·lades i escollir amb quina es vol dissenyar el programari desitjat.

GTK+ 2.4 llançada el març de 2004 va afegir moltes millores, com ara GtkFileChooser, diàleg nou per a escollir fitxers; GtkUIManager barra d'eines que permet especificar accions a partir d'una descripció de la interfície XML i support per a Unicode 4.0.

GTK+ 2.6 llançada al final de 2004 venia amb GtkIconView, llibreria d'icones noves; millores en usabilitat i de rendiment.

El 10 de juny de 2014 Google Chrome començava la migració de GTK+ 2 a Aura, començant per Chrome 35.0 per a Linux. Aura va ser creat per l'equip de Google pensant en les necessitats específiques de la companyia. En aquell moment ja estava en ús a Chrome OS i en estat beta per a Windows.
 GLib (Gimp Libray): Renovada biblioteca de subrutines de baix nivell que proveeix de definicions i funcions al programari de GTK+. Per la compatibilitat multiplataforma es converteix en una de les biblioteques més valorades, sovint aprofitada de manera independent al paquet GTK+ 2.
 GObject (GLib Object System): GTK+ 2.0 implementa en aquesta llibreria el sistema orientat a objectes (GType) del que depèn tot el sistema GTK+. Traient funcionalitat a GLib alhora que hi té un vincle de dependència. Una de les funcions que el caracteritza és generar una capa que funciona com a vincle a altres llenguatges, el que s'anomena language binding. Gràcies a aquesta capa Python, Perl entre d'altres tenen accés a la resta de biblioteques escrites en C.
 GDK (GIMP Drawing Kit): Renovada biblioteca de gràfics i temes de l'ordinador dissenyada originalment per a Linux amb X 11. GTK 2.24.10 fou la darrera versió de la serie amb suport de GNOME per a Windows.
GdkPixbuf : GTK+ 2.0 implementa una nova biblioteca que s'ocupa de qüestions relacionades amb l'animació; també proporciona funcions de manipulació i emmagatzematge d'imatges del costat-client. Emprat per generar widgets GtkImage. Abans de ser una biblioteca independent havia format part de GTK+.
 Pango: GTK+ 2.0 implementa una biblioteca per a renderitzar text, empra la codificació UTF-8, proporciona suport per a la internacionalització. Pango es pot utilitzar amb quatre rerefons (backends) de fonts tipogràfiques diferents:
X Window System: Disposa d'un sistema de fonts tipogràfiques.
Xft: Proporciona una Interfície de programació per a fonts tipogràfiques del costat-client per al programari basat en finestres. Empra Fontconfig per seleccionar les fonts i el protocol X per a representar-les.
 FreeType: Biblioteca de representació de fonts tipogràfiques que mostra mapes de bits dels caràcters de les fonts.
 Les fonts natives de Microsoft.
 ATK (Accessibility Toolkit): GTK+ 2.0 implementa una biblioteca per a millorar l'accessibilitat a les persones discapacitades.
 Cairo: Biblioteca implementada amb GTK+ 2.8 el 2005. Creada per a gràfics vectorials de manera consistent en totes les plataformes i sistemes. També permet al gestor de finestres aprofitar l'acceleració del maquinari quan és possible.
 GTK+: La pròpia biblioteca GTK+ conté widgets, és a dir, components de la Interfície gràfica com GtkButton o GtkTextView.

GTK 2.24 és l'última versió de la sèrie 2.x.

GTK+ 3 

La versió 3.0 va ser llançada el 10 de febrer de 2011. Moltes funcions que es van classificar com a obsoletes es van eliminar i es van millorar les interfícies existents. Una de les novetats més destacades és una mena de parser (analitzador) per a personalitzar la interfície gràfica amb una sintaxi similar als CSS, l'anomenat GtkStyleContext. Des d'on es poden configurar temes i altres millores com ara transicions animades. Cada llibreria es pot personalitzar de manera independent. S'empra la biblioteca gràfica Cairo per a qualsevol tasca de renderització, millorant el rendiment general de la interfície.

GTK+ 3 és a la base de GNOME 3.0 alliberada el 6 d'abril de 2011. Des d'aleshores cada nou cicle de llançament GTK+ i GNOME ha tendit a portar actualitzacions més petites. A GUADEC 2014 a Estrasburg, França, Matthias Clasen va presentar una actualització sobre les millores més recents a GTK+, la majoria de les quals es poden trobar en l'aparença i el comportament dels quadres de diàleg.

A finals del 2018, la comunitat expressava interès pel tema Adwaita. El gener de 2019, es posposava el llançament del tema a GTK; donant la possibilitat de descarregar-lo per tenir la opinió de la comunitat. Finalment fou el tema per defecte a GNOME 3.36, amb una paleta de 12 colors. Durant temps va tenir ferms partidaris que en destacaven la sobrietat i detractors que el criticaven per ser un tema molt apagat.
 GIO (Gnome Input/Output): Biblioteca dissenyada per a facilitar als desenvolupadors una interfície moderna i amigable per a un sistema virtual de fitxers.
GtkApplication: Amb suport de D-BUS, permet integrar les aplicacions a l'entorn d'escriptori d'usuari. Facilita la comunicació automàtica entre processos. Gestiona finestres i instàncies. Permet establir una barra de menú global, com les del GNOME 3 i Mac OS X. Analitza les opcions de la línia d'ordres (si es desitja).
 GDK: Des de la versió 3.0 Es dona suport gestual a les tauletes gràfiques amb X Input 2 i a HTML5 amb Brodway, implementació que permetrà que molts programaris puguin ser executats en línia des dels navegadors que ho permetin. Mac OS X rep millores de suport. Es migra de la interfície gràfica (2D) X11 a Cairo, això permet que a GTK+ 3.22 es doni suport a Wayland; l'octubre de 2013 fou llançada GTK 3.6.4, la darrera versió de la serie amb suport de GNOME a Windows. GTK+ 3 suporta diferents backends, permeten ser seleccionats en temps d'execució.
 Cairo: Des de la versió 3.0 s'empra per a dibuixar els elements de la interfície, tasca de la qual abans s'encarregava GDK des de X11. X11 es considera antiquat i Cairo es fa càrrec de tota la càrrega que assumia a GTK+.
 ATK: Des del 2014 s'ha anunciat que hi ha una nova eina en desenvolupament (WAI-ARIA) que es preveu que substitueixi ATK a GTK 4.

GTK 4 
El 26 de gener de 2018 a DevConf.cz, Matthias Clasen va donar una visió general de l'estat del desenvolupament de GTK 4. A partir d'aquesta versió, GTK deixaria de portar el caràcter "+" al final del nom. Determinació que fou anunciada a la Hackató de febrer de 2019. Després de més de quatre anys i més de vint llançaments des de la versió de desenvolupament 3.89.1, el projecte GNOME va anunciar el 16 de desembre de 2020 el llançament de GTK 4.0. Les millores s'enfocaven a modernitzar l'aparença i usabilitat de les interfícies gràfiques creades amb la nova versió. Junt amb aquest llançament s'anuncià que el GTK 2 disposaria d'una darrera versió de manteniment però, es convidava a passar a versions més modernes. També s'anuncià que GTK 3 continuaria disposant de manteniment regular, en aquell moment el darrer llançament era la versió 3.24.24.

GTK4 s'acostuma a emprar amb libadwaita, la llibreria successora de libhandy. Libadwaita proporciona el tema per defecte de l'escriptori i les aplicacions construïdes amb GTK. Va néixer com independent de GTK perquè GNOME i el tema Adwaita evolucionaven molt de pressa i GTK suposava un fre. Libadwaita ha esdevingut una llibreria polèmica, ja que en instal·lar un programa que en fa ús, s'ha d'emprar el tema Adwaita sense opció per a canviar a un tema diferent. Com a conseqüència si s'utilitza un escriptori basat en GTK4 les preferències sobre temes son ignorades. Libadwaita és desenvolupada directament per GNOME. El gener de 2022, es va mostrar per primer cop algunes aplicacions funcionant amb GTK4 i libadwaita a la versió GNOME 42 alpha. Fou el cas del gestor de fitxers Nautilus, el gestor de programari Software o l'editor de text Text Editor. Altres aplicacions que migraren a GTK 4 foren el gestor de contactes GNOME Contacts o el gestor de contrasenyes Secrets. GNOME Web fou portat a GTK4 a finals d'octubre de 2022, després de set mesos de desenvolupament.

Language bindings 
GTK està escrit utilitzant el llenguatge de programació C, però també està disponible per a diversos llenguatges de programació a través de language bindings, que permeten escriure programaris per a GTK des d'aquests llenguatges. Les vinculacions lingüístiques són relativament fàcils de crear perquè GTK va ser dissenyat pensant en aquesta possibilitat.

Ús de GTK 
GTK és la biblioteca damunt la qual es va construir i es continua construint la interfície gràfica de l'entorn d'escriptori GNOME. The GNOME Project és el major contribuïdor del projecte. GTK s'ha emprat per a entorns d'escriptori com XFCE, gestors de finestres com xfwm4 i en més de 350 aplicacions, més de 30 elaborades per la comunitat GNOME.

Programari

Entorns d'escriptori

Gestors de fitxers

Gestors de finestres

Notes

Referències

Vegeu també 
 GtkRadiant
 Aqua deskperience

Enllaços externs 

 Web del projecte GTK 
 Manual de referència  
 GTK a GitHub 
 Llistat de programari de codi obert que empra GTK, elaborat per GitHub 

GNOME
Biblioteques de programari
Programari lliure escrit en C
API
Perl