GTK (anciennement GIMP ToolKit et GTK+ ) est une boîte à outils de widgets multiplateforme gratuite pour la création d' interfaces utilisateur graphiques (GUI). Elle est sous licence GNU Lesser General Public License , ce qui permet aux logiciels libres et propriétaires de l'utiliser. C'est l'une des boîtes à outils les plus populaires pour les systèmes de fenêtrage Wayland et X11 .
L'équipe GTK publie régulièrement de nouvelles versions. GTK 4 et GTK 3 sont maintenus, tandis que GTK 2 est en fin de vie . GTK1 est maintenu indépendamment par le projet CinePaint .
Architecture logicielle



La bibliothèque GTK contient un ensemble d'éléments de contrôle graphique ( widgets ) ; la version 3.22.16 contient 186 widgets actifs et 36 widgets obsolètes. GTK est une boîte à outils de widgets orientée objet écrite dans le langage de programmation C ; elle utilise GObject , c'est-à-dire le système d'objets GLib , pour l'orientation objet. Bien que GTK soit principalement destiné aux systèmes de fenêtrage basés sur X11 et Wayland , il fonctionne sur d'autres plates-formes, notamment Microsoft Windows (interfacé avec l' API Windows ) et macOS (interfacé avec Quartz ). Il existe également un back-end HTML5 nommé Broadway .
GTK peut être configuré pour modifier l'apparence des widgets dessinés ; cela se fait à l'aide de différents moteurs d'affichage. Plusieurs moteurs d'affichage existent qui tentent d'émuler l'apparence des widgets natifs de la plateforme utilisée.
À partir de la version 2.8, publiée en 2005, GTK a commencé la transition vers l'utilisation de Cairo pour restituer la plupart de ses widgets d'éléments de contrôle graphiques . Depuis la version 3.0 de GTK, tout le rendu est effectué à l'aide de Cairo.
Le 26 janvier 2018, lors de DevConf.cz , Matthias Clasen a donné un aperçu de l'état actuel du développement de GTK 4, notamment une explication de haut niveau sur le fonctionnement du rendu et de la saisie dans GTK 3, les changements apportés dans GTK 4 (> 3.90) et pourquoi. Le 6 février 2019, il a été annoncé que GTK 4 supprimerait le « + » du nom du projet.
Kit de dessin GTK (GDK)
GDK agit comme un wrapper autour des fonctions de bas niveau fournies par les systèmes de fenêtrage et de graphiques sous-jacents.
Kit graphique de scène GTK (GSK)
GSK est l' API de rendu et de graphe de scène pour GTK. GSK se situe entre les éléments de contrôle graphique (widgets) et le rendu. GSK a finalement été intégré dans la version 3.90 de GTK publiée en mars 2017.
GtkBuilder
GtkBuilder permet de concevoir des interfaces utilisateur sans écrire de code. L'interface est décrite dans un fichier XML ( Extensible Markup Language ) écrit à la main ou généré par un concepteur d'interface utilisateur graphique, qui est ensuite chargé au moment de l'exécution et les objets créés automatiquement. La description de l'interface utilisateur est indépendante du langage de programmation utilisé.
Liaisons linguistiques
Des liaisons de langage sont disponibles pour utiliser GTK à partir de langages autres que C, notamment C++ , Genie, JavaScript , Perl , Python , Vala et autres .
Backends
GTK prend en charge plusieurs backends, qui offrent différentes manières d'afficher les applications GTK en fonction du système et de l'environnement. Voici quelques exemples de backends GTK :
- Wayland – Utilisé avec le serveur d’affichage Wayland sur les systèmes Linux, il s’agit d’un remplacement moderne de X11.
- X11 – La valeur par défaut sur les systèmes Linux utilisant le serveur d’affichage X.Org.
- Win32 – Pour exécuter des applications GTK sous Windows.
- Quartz – Pour la prise en charge de macOS.
- Broadway – Permet aux applications GTK de s'exécuter dans les navigateurs Web à l'aide de HTML5 et de WebSockets.
Outils de développement
Concepteurs d'interface utilisateur graphique

Il existe plusieurs concepteurs d'interface utilisateur graphique pour GTK. Voici une sélection de concepteurs d'interface utilisateur graphique GTK :
- Cambalache - un successeur de Glade , prend en charge GTK 4. [
- Glade - prend en charge GtkBuilder, qui est un format de description d'interface utilisateur graphique intégré à GTK. (non activement maintenu)
- Gazpacho - Générateur d'interface graphique pour la boîte à outils GTK écrit en Python
- Crow Designer - s'appuie sur son propre format GuiXml et sa bibliothèque GuiLoader.
- Stetic - partie de MonoDevelop , orientée vers Gtk# .
- Gambas (depuis la version 2.0 sur BASIC )
- Xojo
- Lazarus (sous Linux, l'interface par défaut est GTK 2)
Inspecteur GTK

L'inspecteur GTK est un outil de débogage interactif intégré à GTK, qui permet aux développeurs d'inspecter et de modifier les éléments de l'interface utilisateur, de tester les modifications CSS et d'analyser la structure des widgets en temps réel. Il peut être activé à l'aide des raccourcis Control + Shift + Iou Control + Shift + D, ou en définissant la GTK_DEBUG=interactivevariable d'environnement. Il a été introduit avec la version 3.14 de GTK.
Caractéristiques
- Débogage interactif
- Tests et modifications CSS en temps réel
- Agrandissement du widget pour une inspection détaillée
- Analyse de la structure de l'interface utilisateur et examen des propriétés des objets
- Paramètres d'affichage personnalisables via des variables d'environnement
- Inspection détaillée de l'objet (type, état, propriétés, CSS, actions, etc.)
- Affichage des informations sur l'application globale
- Débogage des règles CSS
- Enregistrement et inspection des pipelines
Développement
GTK est principalement développé par le projet GNOME , qui développe également la plateforme de développement GNOME et l' environnement de bureau GNOME . GTK est principalement écrit en C. De nombreuses liaisons de langage sont disponibles . Le développement de GTK est géré de manière souple .
Les développeurs et les utilisateurs de GNOME se réunissent lors de la conférence européenne annuelle des utilisateurs et développeurs de GNOME (GUADEC) pour discuter de l'état actuel et de l'orientation future de GNOME. GNOME intègre les normes et les programmes de freedesktop.org pour mieux interagir avec d'autres bureaux.
Le 1er septembre 2016, un article sur le blog de développement de GTK a indiqué, entre autres, le futur schéma de numérotation de GTK. La version 3.22 de GTK, publiée à l'automne 2016, était prévue pour être la dernière version 3.x, bien que la version 3.24 ait suivi à l'automne 2018 avec le retard de GTK 4. Le développement de GTK 4 a utilisé les noms de version 3.90, 3.92, etc. jusqu'au lancement de la première version stable de GTK 4.0 en décembre 2020. Malgré la première version stable de GTK 4, certaines applications utilisant GTK s'appuient toujours sur GTK 2. Par exemple, en janvier 2022, GIMP est toujours en cours de portage vers GTK 3.
Automatisation de la construction
La branche principale de GTK utilise Meson pour l'automatisation de sa construction. GTK (et GNOME, GLib, etc.) utilisait auparavant le système de construction GNU (appelé Autotools) comme système d'automatisation de construction de choix. Depuis le 14 août 2017, les fichiers du système de construction Autotools ont été abandonnés.
Critique
La critique la plus courante de GTK est le manque de compatibilité descendante dans les mises à jour majeures, notamment dans l' interface de programmation d'application (API) et la thématisation. Le résultat est que les développeurs d'applications ou de thèmes doivent réécrire des parties de leur code pour le faire fonctionner avec une version plus récente de GTK.
Benjamin Otte a expliqué que les problèmes de compatibilité entre les versions mineures au cours du cycle de développement de GTK 3.x étaient dus à de fortes pressions pour innover, comme fournir les fonctionnalités attendues par les utilisateurs modernes et prendre en charge le protocole de serveur d'affichage Wayland de plus en plus influent . Avec la sortie de GTK 4, la pression du besoin d'innover aura été relâchée et l'équilibre entre stabilité et innovation penchera en faveur de la stabilité. De même, les récents changements apportés à la thématisation sont spécifiquement destinés à améliorer et à stabiliser cette partie de l'API, ce qui signifie que certains investissements actuels devraient être récompensés plus tard.
- Dirk Hohndel, co-développeur de Subsurface et membre du Centre de technologie open source d' Intel , a critiqué les développeurs de GTK pour leur comportement abrasif et le fait qu'ils ignorent la plupart des demandes de la communauté.
- Hong Jen Yee, développeur de LXDE (dont la version GTK a été abandonnée et tous les efforts concentrés sur le portage Qt ), a exprimé son dédain pour les changements radicaux de l'API de la boîte à outils GTK et l'utilisation accrue de la mémoire, et a porté PCMan File Manager (PCManFM) sur Qt . PCManFM est développé avec un GTK et avec un backend Qt en même temps.
- Le lecteur de musique Audacious a été déplacé vers Qt dans la version 3.6. Les raisons invoquées par les développeurs pour cela incluent une transition vers des décorations de fenêtre côté client, qui, selon eux, donnent à l'application un aspect « GNOME -y et déplacé ».
- Wireshark est passé à Qt en raison d'une mauvaise expérience avec le support multiplateforme de GTK.
Utiliser


Applications
Certaines applications notables qui utilisent GTK comme boîte à outils de widgets incluent :
- Ardour , une station de travail audio numérique (DAW)
- Deluge , un client BitTorrent
- Foliate , un lecteur de livres électroniques
- GIMP , un éditeur de graphiques raster
- Applications principales GNOME , une collection d'applications en tant que bundle standard de l' environnement de bureau GNOME
- GNOME Circle , une collection d'applications créées pour fonctionner au sein de l'écosystème GNOME
- GNOME Evolution , un gestionnaire d'informations personnelles
- HandBrake , transcodeur vidéo numérique
- Inkscape , un éditeur de graphiques vectoriels
- LibreOffice , une suite bureautique
- Lutris , un gestionnaire de jeu
- Mozilla Firefox , un navigateur Web
- Mozilla Thunderbird , un gestionnaire d'informations personnelles
- Pitivi , un éditeur vidéo
- PCSX-Reloaded , un émulateur de console de jeux vidéo
- REAPER , une station de travail audio numérique (DAW)
- Remmina , un client de bureau à distance
- Transmission , un client Bit Torrent
Les programmes GTK peuvent être exécutés sur des environnements de bureau basés sur X11 et Wayland , ou d'autres, y compris ceux qui ne sont pas créés avec GTK, à condition que les bibliothèques nécessaires soient installées ; cela inclut macOS si X11.app est installé. GTK peut également être exécuté sur Microsoft Windows . Il est utilisé par certaines applications multiplateformes populaires comme Pidgin et GIMP . wxWidgets , une boîte à outils d'interface graphique multiplateforme, utilise GTK sur Linux par défaut. D'autres ports incluent DirectFB (par exemple utilisé par l' installateur Debian ).
Environnements de bureau
Plusieurs environnements de bureau utilisent GTK comme boîte à outils de widgets.
Actuel
- GNOME , basé sur GTK, ce qui signifie que les programmes natifs de GNOME utilisent GTK
- Budgie , construit à partir de zéro pour le successeur de SolusOS, Solus Operating System
- Cinnamon , un fork de GNOME 3 qui utilise GTK version 3
- MATE , un fork de GNOME 2 qui utilise GTK 3 depuis la version 1.18
- Xfce , basé sur GTK 3 depuis la version 4.14
- Pantheon utilise exclusivement GTK 3, développé par elementary OS
- Sugar , un environnement de bureau pour l'éducation primaire des jeunes , qui utilise GTK, en particulier PyGTK
- Phosh , une interface utilisateur mobile conçue pour PureOS
- LXDE (Lightweight X11 Desktop Environment) est basé sur GTK 2
- Unity , l'ancien environnement de bureau par défaut d' Ubuntu
Inactif
- Plateforme Access Linux (successeur de la plateforme PDA Palm OS )
- Consort, le mode de repli de GNOME 3.4 – un fork de Solus
- GPE , l'environnement Palmtop GPE
- ROX Desktop , un bureau léger, avec des fonctionnalités de l' interface graphique de RISC OS
Gestionnaires de fenêtres
Les gestionnaires de fenêtres suivants utilisent GTK :
GtkSourceView
Pour la coloration syntaxique, il existe GtkSourceView, un « widget d'édition de code source ». GtkSourceView est maintenu par GNOME séparément de GTK en tant que bibliothèque : gtksourceview. Il est prévu de le renommer en gsv.
GtkSpell
GtkSpell est une bibliothèque distincte de GTK. GtkSpell dépend de GTK et de Enchant . Enchant est un wrapper pour ispell, hunspell , etc., le moteur/logiciel de vérification orthographique actuel . GtkSpell utilise le widget GtkTextView de GTK pour mettre en évidence les mots mal orthographiés et proposer un remplacement.
Histoire
GNU/Linux
GTK a été conçu et utilisé à l'origine dans le programme de manipulation d'images GNU (GIMP) en remplacement de la boîte à outils Motif . À un moment donné, Peter Mattis a été désenchanté par Motif et a commencé à écrire sa propre boîte à outils d'interface utilisateur graphique appelée la boîte à outils GIMP et a remplacé avec succès Motif par la version 0.60 de GIMP. Finalement, GTK a été réécrit pour être orienté objet et a été renommé GTK+. Il a été utilisé pour la première fois dans la version 0.99 de GIMP. GTK a ensuite été adopté pour la maintenance par la Fondation GNOME , qui l'utilise dans l'environnement de bureau GNOME.
La série de versions GTK 2.0.0 a introduit de nouvelles fonctionnalités, notamment un rendu de texte amélioré à l'aide de Pango , un nouveau moteur de thème , une accessibilité améliorée à l'aide de la boîte à outils d'accessibilité , une transition vers Unicode à l'aide de chaînes UTF-8 et une API plus flexible. À partir de la version 2.8, GTK 2 dépend de la bibliothèque graphique Cairo pour le rendu des graphiques vectoriels.
La version 3.0.0 de GTK inclut une gestion révisée des périphériques d'entrée, la prise en charge des thèmes écrits avec une syntaxe de type CSS et la possibilité de recevoir des informations sur d'autres applications GTK ouvertes.
Le « + » a été abandonné pour revenir simplement à « GTK » en février 2019 lors d'un Hackathon .
macOS
Avec le backend Quartz GTK est disponible sous macOS .
Fenêtres
- Après GTK 2.24.10 et 3.6.4, le développement de Windows avec l'installateur a été arrêté par Gnome. L'installation de MSYS2 sur Windows est un bon moyen d'utiliser GTK actuel.
- GTK 2.24.10 et 3.6.4 sont disponibles sur Internet, mais très bogués et limités par rapport aux versions actuelles.
- Une version pour Windows 64 bits est préparée par Tom Schoonjans avec 2.24.33 (actuel comme Linux) et 3.24.24 (actuel comme Linux) à partir de janvier 2021 disponibles.
- La mise à jour Fall Creators de Windows 10 inclut le sous-système Windows pour Linux (WSL). Avec des distributions Linux comme Ubuntu ou Debian disponibles sur le Microsoft Store et un serveur X comme Xming ou VcXsvr, des milliers de programmes comme GTK 2 ou 3 peuvent s'exécuter avec la prise en charge de X ou du terminal.
OpenVMS
HP a déclaré que son objectif était de fusionner les modifications OpenVMS nécessaires dans le flux de développement de la version 1.3 de GTK, mais cela ne s'est jamais concrétisé. La dernière version de GTK pour OpenVMS est la version 1.2.10.
GTK 4
L'une des nouveautés cardinales implémentées au cours du cycle de développement de GTK 4 (c'est-à-dire GTK 3.92, etc.) a été la suppression des options de personnalisation côté utilisateur (comme les raccourcis clavier individuels qui pouvaient être définis dans GTK+ 2), et la délégation de fonctionnalités à des objets auxiliaires au lieu de les encoder dans les classes de base fournies par GTK.
- la gestion des événements à partir des gestionnaires de signaux décrits par GtkWidget est déléguée aux contrôleurs d'événements
- le rendu est délégué aux objets GtkSnapshot
- le mécanisme de mise en page de GtkWidget est délégué à GtkLayoutManager
En janvier 2018, lors de DevConf.cz, Matthias Clasen a donné un aperçu de l'état actuel du développement de GTK 4, notamment une explication détaillée du fonctionnement du rendu et de la saisie dans GTK 3, des modifications apportées à GTK 4 et des raisons de ces modifications. Des exemples de choses devenues possibles avec GTK 4 ont également été donnés.