GTK

llenguatge de programació
(S'ha redirigit des de: 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.[1] 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.[2] És un dels paquets d'eines més populars per a les X Window System juntament amb Qt.[3] GTK és adequat per a projectes que van des de petites eines fins a paquets de programari complets.[4]

GTK
Modifica el valor a Wikidata
Modifica el valor a Wikidata
Tipusmarc d'aplicacions i joc de ginys Modifica el valor a Wikidata
Versió inicial14 abril 1998 Modifica el valor a Wikidata
Versió estable
4.14.4 (2 maig 2024) Modifica el valor a Wikidata
LlicènciaGNU LGPL 2.1 Modifica el valor a Wikidata
Disponible en
EpònimGIMP Modifica el valor a Wikidata
Característiques tècniques
Sistema operatiuGNU/Linux, macOS, Unix-like, Microsoft Windows i Linux Modifica el valor a Wikidata
Plataformamultiplataforma Modifica el valor a Wikidata
Escrit enC Modifica el valor a Wikidata
Equip
Desenvolupador(s)Fundació Gnome i Projecte GNU Modifica el valor a Wikidata
Més informació
Lloc webgtk.org (anglès) Modifica el valor a Wikidata
Stack ExchangeEtiqueta Modifica el valor a Wikidata
SourceForgegtk-mingw Modifica el valor a Wikidata
Free Software DirectoryGtk+ Modifica el valor a Wikidata
Guia d'usuariGuia d'usuari Modifica el valor a Wikidata

Mastodon: GTK@floss.social Modifica el valor a Wikidata

Característiques

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.[10] 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.[11] Posteriorment GTK va ser reescrit per ser orientat a objectes, va adquirir eines que el permetien ser una interfície d'escriptori[12] i va ser rebatejat com a GTK+.[13] 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.[14]

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

Actualment hi ha quatre versions estables de GTK:[16][17]

GTK+ 1

Arquitectura de la llibreria GTK+ 1 en un entorn Linux.

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

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.[19] 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.[20]

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.[21] GNOME 1.0 es basà en GTK+ 1.2 versió de febrer de 1999,[22][18] 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.[23][24]

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).[25][26]

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

  • 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.[6] 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.[28] Aquesta llibreria es mostra de manera independent a la versió 1.2 de GTK+.[18]
  • 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.[29] Interactuen amb botons, finestres, mapes de bits de colors etc.[16] Inicialment GTK+ era funcional a les interfícies de programacions X11 per a Linux i a Windows amb GDI ;[30] des de la versió 1.2, també per a MacOS X amb Quartz i Cocoa.[31][32] Encara que GNOME ha donat un suport discontinuat a Windows,[33] MSY2 i gvsbuild en són alternatives.[34]
  • 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.[15] Aquesta biblioteca es recolza en gdk i glib per a fer el seu treball.[28]

GTK+ 2

Simplificació de l'arquitectura de la llibreria GTK+ 2 en un entorn Linux.
Relació entre els elements del model MVC

La versió GTK+ 2.0 llançada el març de 2002 incorporava el motor de temes renovat; dues llibreries noves Pango i ATK;[10][21] 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.[35] GtkTreeView substituïa a GtkCList i GtkCTree presents a GTK+ 1.[36]

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.[37] 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.[38][21]

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

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

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.[41][42]

  • 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+.[43] 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.[44][45]
  • 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.[33]
    • GdkPixbuf : GTK+ 2.0 implementa una nova biblioteca que s'ocupa de qüestions relacionades amb l'animació;[30] també proporciona funcions de manipulació i emmagatzematge d'imatges del costat-client.[21] Emprat per generar widgets GtkImage. Abans de ser una biblioteca independent havia format part de GTK+.[46][47][48]
  • Pango: GTK+ 2.0 implementa una biblioteca per a renderitzar text, empra la codificació UTF-8, proporciona suport per a la internacionalització.[46][49] Pango es pot utilitzar amb quatre rerefons (backends) de fonts tipogràfiques diferents:[50]
  • ATK (Accessibility Toolkit): GTK+ 2.0 implementa una biblioteca per a millorar l'accessibilitat a les persones discapacitades.[46]
  • 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.[51]
  • 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

Simplificació de l'arquitectura de la llibreria GTK+ 3.
Captura del tema Adwaita en la versió fosca.

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.[52][53][54][55]

GTK+ 3 és a la base de GNOME 3.0 alliberada el 6 d'abril de 2011.[56][57] 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.[58]

A finals del 2018, la comunitat expressava interès pel tema Adwaita.[59] El gener de 2019, es posposava el llançament del tema a GTK; donant la possibilitat de descarregar-lo per tenir l'opinió de la comunitat.[60] Finalment fou el tema per defecte a GNOME 3.36, amb una paleta de 12 colors.[61] Durant temps va tenir ferms partidaris que en destacaven la sobrietat i detractors que el criticaven per ser un tema molt apagat.[62]

  • GIO (Gnome Input/Output): Biblioteca dissenyada per a facilitar als desenvolupadors una interfície moderna i amigable per a un sistema virtual de fitxers.[63]
    • 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).[53][64]
  • 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.[65] 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;[66] l'octubre de 2013 fou llançada GTK 3.6.4, la darrera versió de la serie amb suport de GNOME a Windows.[67][68] GTK+ 3 suporta diferents backends, permeten ser seleccionats en temps d'execució.[69]
  • 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.[70] X11 es considera antiquat i Cairo es fa càrrec de tota la càrrega que assumia a GTK+.[53]
  • 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.[71][72]

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.[73] A partir d'aquesta versió, GTK deixaria de portar el caràcter "+" al final del nom.[74][12] Determinació que fou anunciada a la Hackató de febrer de 2019.[75] 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.[17][76]

GTK4 s'acostuma a emprar amb libadwaita, la llibreria successora de libhandy.[a][77][78] 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.[79] 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.[80] Libadwaita és desenvolupada directament per GNOME.[81][82] 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.[83] Altres aplicacions que migraren a GTK 4 foren el gestor de contactes GNOME Contacts o el gestor de contrasenyes Secrets.[84] GNOME Web fou portat a GTK4 a finals d'octubre de 2022, després de set mesos de desenvolupament.[85]

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.[86][87]

LlenguatgeVinclecomentarisLlicència
AdaGtkADAGPL-3
C++gtkmmLGPL-2.1
Mono[88]GTK#LGPL-2.1
PerlGtk2-PerlLGPL-2.1
PythonpgiLGPL-2.1
pygir-ctypesBSD
PyGObjectPaquet Python que proporciona enllaços per a biblioteques basades en GObject com GTK.[89]LGPL-2.1
PyGTKLGPL-2.1
RubyGirFFI-GtkSuporta GTK+ 2 i GTK+ 3.[90]LGPL-2.1
Ruby-GNOME2MIT
ValaValaFunciona amb les biblioteques en temps d'execució de GNOME, particularment GLib i GObject.[91]LGPL-2.1

Ú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.[2] 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.[92][93]

Programari

ProgramariFuncióComentaris
AbiwordProcessador de text.Libstylus és una biblioteca d'estils d'escriptura dissenyada per a donar suport a aplicacions del tipus GTK +.[94][95]
BraseroEnregistrador de discos òptics de GNOME.La versió de Brasero publicada el 22 de novembre de 2011, mantenía un paquet opcional que permetía a l'usuari accedir a més informació.[96]
DrakconfCentre de control de Mandriva.Adwaita i GTK+ 3 desenvolupats per GNOME són emprats per Open Mandriva i altres distribucions de Linux.[97][62]
DarktableProgramari fotogràfic per editar imatges raw de manera no destructiva i classificar-les.La versió 3.0 portava la versió GTK 3.22.[98]
Pidgin, abans anomenat GaimClient multiplataforma i multiprotocol de missatgeria instantània.Empra un paquet GTK per controlar el tema del programari.[99]
InkscapeEditor de gràfics vectorials.Inkscape 1.0 passa a emprar GTK 3 comporta millores en les pantalles HiDPI.[100][101]
GIMPEditor gràfic digital.Els desenvolupadors de GIMP foren també els responsables de l'aparició de GTK. Es preveu que GIMP 3.0 empri GTK 3 el 2021.[102]
SoukBotiga de programari independent per a paquets Flatpak.Construïda amb GTK 4 i Rust.[103]
Tux TypingMecanografia per a nens.GTK facilita la navegació entre lliçons.[104]

Entorns d'escriptori

Entorns d'escriptoriComentarisDistribució / Sistema operatiu
GNOME ShellBasat en GTK, el que significa que els programaris natius de GNOME empren GTK. Des de la versió 40 GNOME empra la versió GTK 4.[105]GNOME
Budgieconstruït des de zero per al successor de SolusOS, Sistema Operatiu Solus.Arch Linux, Debian, Manjaro, openSUSE, Ubuntu Budgie entre d'altres.
CinnamonBifurcació de GNOME 3 empra la versió GTK+ 3.Linux Mint
DDE

(Deepin Desktop Environment)

Inicialment es desenvolupà amb la biblioteca GTK,[106] la necessitat de renderitzar HTML5, va provocar l'ús de Qt5 i posteriorment reescriure el programari DTK (Deepin Tool Kit) per a la interfície i interacció amb el sistema.[107]Deepin
KDE Plasma 5[108]encara que basat en Qt, té integració amb GTK per a programari i temes des de la versió 4.2.KDE
MATEBifurcació de GNOME 2 empra la versió GTK+ 3 des de la versió 1.18. Millores en el rendiment en la versió MATE 1.22 per una millor integració amb GTK.[109]Arch Linux, Debian, Fedora, Gentoo, Linux Mint, Ubuntu MATE entre d'altres.[110]
PantheonEmpra exclusivament GTK+ 3, desenvolupat per Elementary OS.[111]Elementary OS
Sugarun entorn d'escriptori per a l'educació primària, que utilitza GTK, especialment PyGTK.Fedora[112]
Xfcebasat en GTK+ 3 des de la versió 4.14.[113] La versió 4.16 adopta la decoració del costat del client pròpia de GTK+ 3.[114]Unix-like

Gestors de fitxers

Gestors de fitxersComentarisDistribucions / Sistemes operatius
Double CommanderÉs extensible a través de plugins. Està disponible en GTK i en Qt.[115]Disponible per a Linux, Windows i MacOS.[116][117][118]
GNOME FilesHi ha moltes derivacions com Caja, Nemo i Peony[115] El pas a GTK 4, afegí funcionalitats en la cerca i ordenació de fitxers entre altres correccions i millores.[83]GNOME
PCManFMDisposa de suport per a escriptoris remots amb SSH, FTP, WebDAV, Secure WebDAV, HTTP, i HTTPS. Està disponible en GTK i en Qt.[115]LXDE

Gestors de finestres

Gestors de finestresComentarisDistribucions / Escriptoris
AfterStep
IceWMEscrit el 1997 en C++ per Marko Maček. Darrera versió del 10 de novembre 2020[119]AntiX[120]
MarcoDes de MATE 1.22, Marco afegeix suport per a la tercera versió de metacity-themes.[121]MATE
MutterBasat en GKT+ 3 i Clutter; mostra i gestiona l'entorn d'escriptori mitjançant OpenGL.[122]GNOME
OpenboxUn dels gestors de finestres que menys memòria consumeix però, que menys ofereix.[123]LXDE[124]
TilixAnteriorment anomenat Terminix. Empra GTK+ 3 amb el propòsit d'ajustar-se a l'Human Interface Guidelines de GNOME.Testejat en escriptoris de GNOME i d'Unity.[125][126]

Notes

Referències

Vegeu també

Enllaços externs

🔥 Top keywords: PortadaEspecial:CercaJuraj CintulaPeretViquipèdia:ContacteManuel de Pedrolo i MolinaNova CaledòniaEspecial:Canvis recentsRobert FicoJessica Goicoechea JoverCarles Puigdemont i CasamajóEslovàquiaXavlegbmaofffassssitimiwoamndutroabcwapwaeiippohfffXOriol Junqueras i ViesMauricio WiesenthalEleccions al Parlament de Catalunya de 2024Cas Asunta BasterraClara Ponsatí i ObiolsJoan Salvat-PapasseitAntoni Comín i OliveresLluís Puig i GordiEsquerra Republicana de CatalunyaValtònycAamer AnwarBorratjaTor (Alins)Fermín López MarínLaia Flores i CostaSegona Guerra MundialLaura Borràs i CastanyerProvíncies de CatalunyaSílvia Orriols SerraJosep Costa i RossellóPresident de la Generalitat de CatalunyaParlament de CatalunyaAurora Madaula i GiménezHistòria del cristianismeComarques de CatalunyaRamón Cotarelo García