GTK- GTK

GTK
GTK-logo.svg
Gtk4-Widget-Factory demos.png
GTK Version 4 ( gtk4-widget-factory , eine Sammlung von Beispielen, die viele der GUI-Widgets demonstrieren )
Originalautor(en) Spencer Kimball , Peter Mattis
Entwickler Das GNOME-Projekt , eXperimental Computing Facility (XCF)
Erstveröffentlichung 14. April 1998 ; Vor 23 Jahren ( 1998-04-14 )
Stabile Version
4.4.0 / 23. August 2021 ; Vor 57 Tagen ( 2021-08-23 )
Vorschauversion
4.3.1 / 9. Juni 2021 ; vor 4 Monaten ( 2021-06-09 )
Repository
Geschrieben in C , CSS
Betriebssystem Linux , Unix-ähnlich , macOS , Windows
Typ Widget-Toolkit
Lizenz LGPLv2.1+
Webseite gtk .org

GTK (ehemals GIMP ToolKit, dann GTK+ ) ist ein kostenloses und quelloffenes plattformübergreifendes Widget-Toolkit zum Erstellen von grafischen Benutzeroberflächen (GUIs). Es ist unter den Bedingungen der GNU Lesser General Public License lizenziert , die es sowohl freier als auch proprietärer Software erlaubt, es zu verwenden. Es ist eines der beliebtesten Toolkits für die Fenstersysteme Wayland und X11 .

Das GTK-Team veröffentlicht regelmäßig neue Versionen. GTK 4 und GTK 3 werden beibehalten, während GTK 2 ausgedient hat.

Softwarearchitektur

Vereinfachte Softwarearchitektur von GTK . Pango , GDK , ATK , GIO , Kairo und GLib
GDK enthält Back-Ends für X11 , Wayland , Broadway ( HTTP ), Quartz und GDI und verlässt sich beim Rendering auf Cairo . Sein neuer SceneGraph ist in Arbeit.

Die GTK- Bibliothek enthält eine Reihe von grafischen Bedienelementen ( Widgets ); Version 3.22.16 enthält 186 aktive und 36 veraltete Widgets. GTK ist ein objektorientiertes Widget-Toolkit, das in der Programmiersprache C geschrieben ist ; es verwendet GObject , also das GLib- Objektsystem, für die Objektorientierung. Während GTK hauptsächlich für Windowing-Systeme auf Basis von X11 und Wayland gedacht ist , funktioniert es auf anderen Plattformen, darunter Microsoft Windows (mit der Windows-API verbunden ) und macOS (mit Quartz verbunden ). Es gibt auch ein HTML5- Back-End namens Broadway .

GTK kann so konfiguriert werden, dass das Aussehen der gezeichneten Widgets geändert wird; Dies geschieht mit verschiedenen Display-Engines. Es gibt mehrere Anzeige-Engines, die versuchen, das Aussehen der nativen Widgets auf der verwendeten Plattform zu emulieren.

Beginnend mit der 2005 veröffentlichten Version 2.8 begann GTK mit dem Übergang zur Verwendung von Cairo zum Rendern der meisten seiner grafischen Steuerelement- Widgets . Seit GTK-Version 3.0 erfolgt das gesamte Rendering mit Kairo.

Am 26. Januar 2018 gab Matthias Clasen auf DevConf.cz einen Überblick über den aktuellen Stand der GTK 4-Entwicklung, einschließlich einer Erläuterung auf hoher Ebene, wie Rendering und Eingabe in GTK 3 funktionierten, welche Änderungen in GTK 4 vorgenommen werden (>3.90 ), und warum. Am 6. Februar 2019 wurde bekannt gegeben, dass GTK 4 das „+“ aus dem Projektnamen streichen wird.

GTK-Zeichensatz (GDK)

GDK fungiert als Wrapper um die Low-Level-Funktionen, die von den zugrunde liegenden Fenster- und Grafiksystemen bereitgestellt werden.

GDK befindet sich im /gdkVerzeichnis.

GTK-Szenengrafik-Kit (GSK)

GSK ist die Rendering- und Szenengraph-API für GTK. GSK liegt zwischen den grafischen Bedienelementen (Widgets) und dem Rendering. GSK wurde schließlich in GTK-Version 3.90, die im März 2017 veröffentlicht wurde, zusammengeführt.

GSK wird im /gskVerzeichnis gefunden.

GtkInspektor

GtkInspector wurde mit Version 3.14 eingeführt. GtkInspector kann nur aufgerufen werden, nachdem das Entwicklungspaket libgtk-3-dev / gtk+-devel installiert wurde .

GUI-Designer

Es gibt mehrere GUI-Designer für GTK. Folgende Projekte sind seit Juli 2011 aktiv:

GtkBuilder

Mit GtkBuilder können Benutzeroberflächen entworfen werden, ohne Code zu schreiben. Die Schnittstelle wird in einer Extensible Markup Language (XML)-Datei beschrieben, die dann zur Laufzeit geladen und die Objekte automatisch erstellt werden. Die Glade Interface Designer ermöglicht die Erstellung der Benutzeroberfläche in ein , was Sie sehen, was Sie erhalten ( WYSIWYG ) Art und Weise. Die Beschreibung der Benutzeroberfläche ist unabhängig von der verwendeten Programmiersprache.

Sprachbindungen

Sprachbindungen sind für die Verwendung von GTK aus anderen Sprachen als C verfügbar, einschließlich C++ , Genie , JavaScript , Perl , Python , Vala und anderen .

GtkSharp, nicht zu verwechseln mit Gtk#, unterstützt GTK 3.

GTK#

GTK#
Gtk Sharp Logo.png
Entwickler Xamarin
Erstveröffentlichung 12. März 2004 ; Vor 17 Jahren ( 2004-03-12 )
Stabile Version
2.12.41 / 22. September 2016 ; vor 5 Jahren ( 2016-09-22 )
Vorschauversion
2.99.3 (für GTK3) / 6. Juni 2014 ; vor 7 Jahren ( 2014-06-06 )
Repository
Geschrieben in C# , XML , Perl , C
Betriebssystem Windows , macOS , Linux
Typ Widget-Toolkit
Lizenz GNU Lesser General Public License
Webseite mono-project .com /GtkSharp

Gtk# ist ein Satz von .NET Framework- Bindungen für das GTK- Toolkit der grafischen Benutzeroberfläche (GUI) und verschiedene GNOME- Bibliotheken . Die Bibliothek erleichtert das Erstellen grafischer GNOME-Anwendungen mit Mono oder einer anderen kompatiblen Common Language Runtime (CLR). Gtk# ist ein ereignisgesteuertes System wie jede andere moderne Fensterbibliothek, bei der jedes Widget die Zuordnung von Handlermethoden ermöglicht, die aufgerufen werden, wenn bestimmte Ereignisse auftreten.

Anwendungen, die mit Gtk# erstellt wurden, laufen auf vielen Plattformen, einschließlich Linux , Windows und macOS . Die Mono-Pakete für Windows enthalten GTK, Gtk# und ein natives Design, um Anwendungen wie native Windows-Anwendungen aussehen zu lassen. Ab Mono 1.9 erfordert das Ausführen von Gtk#-Anwendungen unter macOS keinen X11- Server mehr.

Glade Interface Designer kann mit den Glade#-Bindungen verwendet werden, um auf einfache Weise GUI-Anwendungen zu entwerfen. Ein GUI-Designer namens Stetic ist in die integrierte Entwicklungsumgebung (IDE) von MonoDevelop integriert .

Neben der Unterstützung des standardmäßigen GTK/GNOME-Stack von Entwicklungstools bietet die Assembly gtk-dotnet.dll eine Brücke zur Nutzung der auf dem .NET-Stack verfügbaren Funktionen. An dieser Stelle umfasst dies die Funktionalität, mit System.Drawing auf einem Widget zu zeichnen.

Ab September 2020 befindet sich die Gtk#-Unterstützung für Gtk3 noch in der Vorschauphase und gegabelte Projekte wie GtkSharp wurden gegründet, um die vollständige Gtk3-Unterstützung für C# und andere CLI-Sprachen bereitzustellen. Das Fehlen einer freigegebenen Version von Gtk# mit Unterstützung für Gtk3 wurde als Grund dafür angeführt, den Banshee Media Player in Ubuntu 12.04 zu entfernen .

Entwicklung

GTK wird hauptsächlich von The GNOME Project entwickelt , das auch die GNOME Development Platform und die GNOME Desktop Environment entwickelt.

Die GTK-Entwicklung wird lose verwaltet. Diskussionen finden hauptsächlich auf mehreren öffentlichen Mailinglisten statt. GNOME-Entwickler und -Benutzer treffen sich auf einer jährlichen GUADEC -Konferenz der europäischen GNOME-Benutzer- und -Entwicklerkonferenz , um den aktuellen Stand und die zukünftige Ausrichtung von GNOME zu diskutieren. GNOME integriert Standards und Programme von freedesktop.org, um eine bessere Zusammenarbeit mit anderen Desktops zu ermöglichen.

GTK ist hauptsächlich in C geschrieben . Viele Sprachbindungen sind verfügbar .

Am 1. September 2016 beschrieb ein Beitrag im GTK-Entwicklungsblog unter anderem das zukünftige Nummernschema von GTK. GTK Version 3.22 vom Herbst 2016 soll das letzte 3.x Release sein. Version 3.24 wurde im Herbst 2018 mit Verzögerung von GTK 4 eingeführt. Danach werden alle Ressourcen in die GTK 4-Entwicklungsserie mit den Versionsnamen 3.90, 3.92 usw. verschoben. Auch wenn die 4.x-Serie in die Entwicklung einsteigt, werden noch bemerkenswerte Anwendungen verwendet GTK 2.x und wurden nicht auf 3.22 portiert. In Bezug auf die Zukunft von Legacy- Software, die GTK verwendet , gab es kein gemeinsames Projekt, um GTK 2.x-Software auf 3.22 zu portieren. Version 3.24 ist im Langzeitsupport und die aktuelle und zukünftige Basis von Programmen wie gimp 3.0 und Inkscape 1.0. Für Entwickler besteht also die Wahl stabiles GTK 3.24 mit Bugfix oder GTK 4 mit Änderungen und neuen Features in der zukünftigen Entwicklung.

Build-Automatisierung

GTK (und GNOME, GLib usw.) verwendeten früher das GNU Build System (genannt Autotools) als das bevorzugte Build-Automatisierungssystem .

Seit dem 14. August 2017 wird der Master-Zweig von GTK mit Meson erstellt und die Autotools-Build-Systemdateien fallen weg.

Kritik

Der häufigste Kritikpunkt an GTK ist die fehlende Abwärtskompatibilität bei großen Updates, insbesondere bei der Anwendungsprogrammierschnittstelle (API) und dem Thema.

Die Kompatibilitätspausen zwischen kleineren Releases während des GTK 3.x-Entwicklungszyklus wurden von Benjamin Otte mit starkem Innovationsdruck erklärt, wie etwa der Bereitstellung der Funktionen, die moderne Benutzer erwarten, und der Unterstützung des immer einflussreicheren Wayland-Display-Server-Protokolls . Mit der Veröffentlichung von GTK 4 wird der Innovationsdruck gelockert und die Balance zwischen Stabilität und Innovation kippt in Richtung Stabilität. Ebenso sollen die jüngsten Änderungen am Thema speziell diesen Teil der API verbessern und stabilisieren, was bedeutet, dass sich einige Investitionen jetzt lohnen sollten.

  • Dirk Hohndel, Code-Entwickler von Subsurface und Mitglied von Intels Open-Source Technology Center, kritisierte die GTK-Entwickler dafür, dass sie aggressiv seien und die meisten Community-Anfragen ignorierten.
  • Hong Jen Yee, Entwickler von LXDE (deren GTK-Version eingestellt wurde und alle Bemühungen auf den Qt-Port konzentrierten ), äußerte seine Verachtung für Version 3 der radikalen API-Änderungen des GTK-Toolkits und die erhöhte Speichernutzung und portierte PCMan File Manager (PCManFM). zu Qt . PCManFM wird gleichzeitig mit einem GTK und einem Qt-Backend entwickelt.
  • Der Audacious- Musikplayer wurde in Version 3.6 auf Qt umgestellt. Als Gründe dafür nennen die Entwickler einen Übergang zu clientseitigen Fensterdekorationen, die die Anwendung " GNOME -y und fehl am Platz" aussehen lassen .
  • Wireshark ist auf Qt umgestiegen, da wir keine guten Erfahrungen mit der plattformübergreifenden Unterstützung von GTK gemacht haben.

Verwenden

Die GTK-Unterstützung für Wayland erfordert, dass Anwendungen auch an Wayland angepasst werden
Screenshot von GIMP 2.8 - GTK ist für die Verwaltung der Schnittstellenkomponenten des Programms verantwortlich, einschließlich der Menüs, Schaltflächen und Eingabefelder.

Anwendungen

Einige bemerkenswerte Anwendungen, die GTK als Widget-Toolkit verwenden oder einmal verwendet haben, umfassen:

Desktop-Umgebungen

Mehrere Desktop-Umgebungen verwenden GTK als Widget-Toolkit.

Strom

  • GNOME , basierend auf GTK, was bedeutet, dass Programme, die in GNOME nativ sind, GTK verwenden
  • Budgie , von Grund auf neu für den SolusOS-Nachfolger, das Solus-Betriebssystem
  • Cinnamon , eine Abzweigung von GNOME 3, die GTK-Version 3 verwendet
  • MATE , ein Fork von GNOME 2, das GTK 3 seit Version 1.18 verwendet
  • Xfce , basierend auf GTK 3 seit Version 4.14
  • Pantheon verwendet ausschließlich GTK 3, das von elementary OS entwickelt wird
  • Sugar , eine Desktop-Umgebung für die Grundschulbildung von Jugendlichen , die GTK verwendet, insbesondere PyGTK
  • KDE basiert zwar auf Qt , hat aber seit Version 4.2 eine Integration mit GTK-geschriebenen Programmen und Themes
  • Phosh , eine mobile Benutzeroberfläche für PureOS

Inaktiv

Sonstig

GTK-Programme können auf Desktop-Umgebungen, die auf X11 und Wayland basieren, oder auf Fenstermanagern, sogar auf solchen, die nicht mit GTK erstellt wurden, ausgeführt werden, vorausgesetzt, die erforderlichen Bibliotheken sind installiert; dies schließt macOS ein, wenn X11.app installiert ist. GTK kann auch unter Microsoft Windows ausgeführt werden , wo es von einigen beliebten plattformübergreifenden Anwendungen wie Pidgin und GIMP verwendet wird. wxWidgets , ein plattformübergreifendes GUI-Toolkit, verwendet standardmäßig GTK unter Linux. Andere Ports umfassen DirectFB (wird zum Beispiel vom Debian-Installer verwendet ) und ncurses .

Fenstermanager

Die folgenden Fenstermanager verwenden GTK:

GtkSourceView

Für Syntax-Highlighting gibt es GtkSourceView , "Quellcode-Bearbeitungs-Widget". GtkSourceView wird von GNOME getrennt von GTK als Bibliothek verwaltet: gtksourceview . Eine Umbenennung in gsv ist geplant.

GtkSpell

GtkSpell ist eine von GTK getrennte Bibliothek. GtkSpell hängt von GTK und Enchant ab . Enchant ist ein Wrapper für ispell, hunspell usw., die eigentliche Rechtschreibprüfungs- Engine/Software. GtkSpell verwendet das GtkTextView-Widget von GTK, um falsch geschriebene Wörter hervorzuheben und Ersatz anzubieten.

Beispiel

Die Dokumentation ist hier verfügbar:

Der folgende Code stellt ein grafisches GTK- Hello-World- Programm in der Programmiersprache C dar . Dieses Programm hat ein Fenster mit dem Titel "Hello, world!" und ein Etikett mit ähnlichem Text.

// helloworld.c
#include <gtk/gtk.h>

/* Callback that will be called when the application is activated */
static void
activate_callback(GApplication *app, gpointer user_data)
{
    GtkWidget *window;
    GtkWidget *label;

    /* Create the main, top level window */
    window = gtk_window_new();

    /* Give it the title */
    gtk_window_set_title(GTK_WINDOW(window), "Hello, world!");

    /* Set the window's default size */
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);

    /* Assign the variable "label" to a new GTK label,
     * with the text "Hello, world!" */
    label = gtk_label_new("Hello, world!");

    /* Plot the label onto the main window */
    gtk_window_set_child(GTK_WINDOW(window), label);

    /* Make the application aware of the window.
     * The application process will continue to run until all
     * windows are closed */
    gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW(window));

    /* Make sure that everything, window and label, are visible */
    gtk_widget_show(window);
}

int main (int argc, char *argv[])
{
    /* Create our test application */
    GtkApplication *application = gtk_application_new("org.wikipedia.gtktest", 0);

    /* Connect our handler to the "activate" callback, which will be called
     * when the application is activated by the user, e.g. on first start */
    g_signal_connect(application, "activate", G_CALLBACK(activate_callback), NULL);

    /* Run the application and return its status */
    return g_application_run(G_APPLICATION(application), argc, argv);
}

Muss zuerst die Bibliotheken in Debian oder Derivaten installieren : $ sudo apt-get install libgtk-4-dev

Mit pkg-config in einer Unix-Shell kann dieser Code mit dem folgenden Befehl kompiliert werden: $ cc -Wall $(pkg-config --cflags --libs gtk4) helloworld.c -o helloworld

Rufen Sie das Programm auf: $ ./helloworld

Geschichte

Linux

GTK wurde ursprünglich im GNU Image Manipulation Program (GIMP) als Ersatz für das Motif- Toolkit entwickelt und verwendet; Irgendwann war Peter Mattis von Motif desillusioniert und begann, sein eigenes GUI-Toolkit namens GIMP-Toolkit zu schreiben und hatte Motif erfolgreich durch die 0.60-Version von GIMP ersetzt. Schließlich wurde GTK objektorientiert umgeschrieben und in GTK+ umbenannt. Dies wurde erstmals in der Version 0.99 von GIMP verwendet. GTK wurde anschließend von der GNOME Foundation zur Wartung übernommen , die es in der GNOME-Desktop-Umgebung verwendet.

Die GTK 2.0.0-Release-Serie führte neue Funktionen ein, darunter verbessertes Text-Rendering mit Pango , eine neue Theme- Engine, verbesserte Zugänglichkeit mit dem Accessibility Toolkit , Übergang zu Unicode mit UTF-8- Strings und eine flexiblere API. Ab Version 2.8 hängt GTK 2 für das Rendern von Vektorgrafiken von der Cairo -Grafikbibliothek ab.

GTK-Version 3.0.0 enthielt eine überarbeitete Handhabung von Eingabegeräten, Unterstützung für Themen, die mit CSS- ähnlicher Syntax geschrieben wurden, und die Möglichkeit, Informationen über andere geöffnete GTK-Anwendungen zu empfangen.

Das '+' wurde im Februar 2019 während eines Hackathons fallen gelassen und kehrte zu einfach 'GTK' zurück .

Mac OS

Mit Quartz- Backend ist GTK in macOS verfügbar .

Fenster

  • Nach GTK 2.24.10 und 3.6.4 wurde die Entwicklung von Windows mit Installer von Gnome eingestellt. Die Installation von MSYS2 unter Windows ist eine gute Möglichkeit, das aktuelle GTK zu verwenden.
  • GTK 2.24.10 und 3.6.4 sind im Internet verfügbar, aber sehr fehlerhaft und gegenüber aktuellen Versionen eingeschränkt.
  • Eine Version für Windows 64-Bit ist von Tom Schoonjans mit 2.24.33 (aktuell wie Linux) und 3.24.24 (aktuell wie Linux) ab Januar 2021 verfügbar.
  • Das Fall Creators Update von Windows 10 enthält das Windows-Subsystem für Linux (WSL). Mit Linux-Distributionen wie Ubuntu oder Debian, die im Windows Store erhältlich sind, und einem X-Server wie Xming oder VcXsvr können Tausende von Programmen wie GTK 2 oder 3 mit X- oder Terminal-Unterstützung ausgeführt werden.

OpenVMS

HP erklärte, sein Ziel sei es, die erforderlichen OpenVMS- Änderungen in den GTK Version 1.3-Entwicklungsstrom einzufügen, dies kam jedoch nie zustande. Die neueste Version von GTK für OpenVMS ist Version 1.2.10.

GTK 4

Eine der wichtigsten Neuerungen, die während des GTK 4-Entwicklungszyklus (dh GTK 3.92 usw.) implementiert wurden, war die Delegation von Funktionalität an Hilfsobjekte, anstatt sie in die von GTK bereitgestellten Basisklassen zu kodieren.

  • das von GtkWidget beschriebene Event-Handling von Signalhandlern wird an Event-Controller delegiert
  • das Rendering wird an GtkSnapshot-Objekte delegiert
  • der Layout-Mechanismus von GtkWidget wird an GtkLayoutManager delegiert

Am 26. Januar 2018 gab Matthias Clasen auf DevConf.cz einen Überblick über den damaligen aktuellen Stand der GTK 4-Entwicklung, einschließlich einer Erklärung auf hoher Ebene, wie Rendering und Eingabe in GTK 3 funktionierten, welche Änderungen an GTK 4 vorgenommen wurden, und die Gründe für diese Änderungen. Beispiele für Dinge, die mit GTK 4 möglich geworden sind, wurden ebenfalls genannt.

Veröffentlichungen

Legende:
Alte Version
Ältere Version, noch gepflegt
Letzte Version
Neueste Vorschauversion
Zukünftige Veröffentlichung
Release-Serie Erstveröffentlichung Wichtige Verbesserungen Neueste Nebenversion
Alte Version, nicht mehr gepflegt: 1.0 1998-04-13 Erste stabile Version 1.0.6
Alte Version, nicht mehr gepflegt: 1,2 1999-02-25 Neue Widgets :
  • GtkFontSelector
  • GtkPacker
  • GtkItemFactory
  • GtkCTree
  • GtkUnsichtbar
  • GtkKalender
  • GtkLayout
  • GtkPlug
  • GtkSocket
1.2.10
Alte Version, nicht mehr gepflegt: 2.0 2002-03-11 GObject

Allgemeine Unterstützung für UTF-8

2.0.9
Alte Version, nicht mehr gepflegt: 2.2 2002-12-22 Multihead-Unterstützung 2.2.4
Alte Version, nicht mehr gepflegt: 2.4 2004-03-16 Neue Widgets:
  • GtkFileChooser
  • GtkComboBox
  • GtkComboBoxEintrag
  • GtkExpander
  • GtkFontButton
  • GtkColorButton
2.4.14
Alte Version, nicht mehr gepflegt: 2.6 2004-12-16 Neue Widgets:
  • GtkIconView
  • GtkAboutDialog
  • GtkCellView

Der letzte, der Windows 98 / Me unterstützt

2.6.10
Alte Version, nicht mehr gepflegt: 2,8 2005-08-13 Die meisten Widgets werden von Kairo gerendert 2.8.20
Alte Version, nicht mehr gepflegt: 2.10 2006-07-03 Neue Widgets:
  • GtkStatusIcon
  • GtkAssistent
  • GtkLinkButton
  • GtkRecentChooser

Druckunterstützung: GtkPrintOperation

2.10.14
Alte Version, nicht mehr gepflegt: 2.12 2007-09-14 GtkBuilder 2.12.12
Alte Version, nicht mehr gepflegt: 2.14 2008-09-04 Unterstützung beim Laden von JPEG 2000 2.14.7
Alte Version, nicht mehr gepflegt: 2.16 2009-03-13 Neues Widget: GtkOrientable

Caps Lock-Warnung bei Passworteingabe

Verbesserungen an GtkScale, GtkStatusIcon, GtkFileChooser

2.16.6
Alte Version, nicht mehr gepflegt: 2.18 2009-09-23 Neues Widget: GtkInfoBar

Verbesserung der Dateiauswahl, Drucken

Um einen Großteil des notwendigen IPC zwischen der X11-Anwendung und dem X11-Server zu entfernen, wird GDK (hauptsächlich von Alexander Larsson) umgeschrieben, um "client-side windows" zu verwenden, dh das GdkWindow, das jedes Widget haben muss, gehört jetzt dem Client

2.18.9
Alte Version, nicht mehr gepflegt: 2.20 2010-03-23 Neue Widgets:
  • GtkSpinner
  • GtkToolPalette
  • GtkOffscreenWindow

Verbesserung der Dateiauswahl, Tastaturbedienung, GDK

Introspektion-Daten sind jetzt in GTK enthalten

2.20.1
Alte Version, nicht mehr gepflegt: 2.22 2010-09-23 GdkPixbuf wurde in ein separates Modul verschoben

Die meisten GDK-Zeichnungen basieren auf Kairo

Viele interne Daten sind jetzt privat und können in Vorbereitung auf GTK 3 versiegelt werden

2.22.1
Alte Version, nicht mehr gepflegt: 2.24 2011-01-30 Neues Widget: GtkComboBoxText

Das CUPS-Druck-Backend kann Druckaufträge als PDF versenden

GtkBuilder hat Unterstützung für Text-Tags und Menü-Toolbuttons erhalten und viele Korrekturen für Introspektion-Annotationen wurden hinzugefügt

Migration von GTK+ 2.x zu GTK+ 3

2.24.32
(2018-01-08)
Alte Version, nicht mehr gepflegt: 3.0 2011-02-10 Die Entwicklung und das Design der GTK 3-Version des Toolkits begannen im Februar 2009 während des GTK Theming Hackfests in Dublin
  • Der erste Entwurf der Entwicklungs-Roadmap wurde am 9. April 2009 veröffentlicht

Abgeschlossen hauptsächlich Project Ridley

  • der Versuch, mehrere Bibliotheken außerhalb von GTK+ zu konsolidieren
  • einschließlich libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, gtkglext, undlibsexy

Das gesamte Rendering erfolgt mit Kairo

GDK wurde X11-agnostischer

XInput2, Thema API basiert auf Cascading Style Sheets (CSS), Verschlechterung der erreichbaren Leistung bei 60 Hz Bildraten

3.0.12
Alte Version, nicht mehr gepflegt: 3.2 2011-09-25 Neue Widgets:
  • GtkLockButton
  • GtkOverlay

Dialogfeld „Neue Schriftartenauswahl“

Neue experimentelle Back-Ends:

3.2.4
Alte Version, nicht mehr gepflegt: 3.4 2012-03-26 Menüunterstützung in GtkApplication

Ein neuer Farbwähler

Unterstützung für Touch-Geräte hinzugefügt

Unterstützung für flüssiges Scrollen hinzugefügt

GtkScrolledWindow führt kinetisches Scrollen mit Touch-Geräten durch

macOS-Unterstützung wurde verbessert

Dies ist die erste Version von GTK 3, die unter Windows gut funktioniert

Das Wayland-Backend wird auf die aktuelle Wayland-Version aktualisiert

Spin-Buttons haben ein neues Aussehen bekommen

Barrierefreiheit: Die Unterstützung für barrierefreie Baumansichten wurde neu geschrieben

Vollständigere Unterstützung für CSS-Themen

3.4.4
Alte Version, nicht mehr gepflegt: 3.6 2012-09-24 Neue Widgets:
  • GtkSearchEintrag
  • GtkMenuButton
  • GtkLevelBar

Vertikale Drehknöpfe

CSS-Animationen, Schatten verwischen

Unterstützung für Überblendungen und Übergänge in Designs

3.6.5
Alte Version, nicht mehr gepflegt: 3.8 2013-03-25 Wayland 1.0 stabile Unterstützung

Unterstützung für den Broadwayd-Server

Verbessertes Design

Besseres Geometriemanagement

Touch-Verbesserungen

Unterstützung mit dem Window-Manager für das Frame-Synchronisations-Protokoll

GdkFrameClock hinzugefügt

3.8.9
Alte Version, nicht mehr gepflegt: 3.10 2013-09-23 Neue Widgets:
  • GtkHeaderBar
  • GtkPlacesSidebar
  • GtkStack
  • GtkStackSwitcher
  • GtkRevealer
  • GtkSuchleiste
  • GtkListBox

Unterstützung für Wayland 1.2

  • Maximierung
  • animierte Cursor
  • mehrere Monitore
  • die Einstellungen
  • benutzerdefinierte Oberflächen
  • Rahmensynchronisation

Hinzugefügt:

  • Kundenseitige Dekorationen
  • Skalierte Ausgabeunterstützung auf Bildschirmen mit hoher Auflösung
  • Feineinstellungsmodus zum Scrollen

ENTFERNT:

  • Unterstützung für das Motif DND-Protokoll
  • Unterstützung für mehrere Bildschirme pro Display
  • gdk_window_get_display
  • gtk_widget_push_composite_child

Abreißbare Menüpunkte sowie viele GTK-Einstellungen

Das moderne GTK-Zeichenmodell

3.10.9
Alte Version, nicht mehr gepflegt: 3.12 2014-03-25 Kundenseitige Dekorationen

Unterstützung für Wayland 1.5

Neues Widget: GtkPopover (eine Alternative zu Menüs und Dialogen)

3.12.2
Alte Version, nicht mehr gepflegt: 3.14 2014-09-22 GtkInspector (eine Kopie von gtkparasite) eingeführt

Verbesserte Unterstützung für Gesten / Multi-Touch zusammengeführt

Veraltet:

  • GtkMisc
  • GtkAusrichtung
  • GtkPfeil
  • GdkColor
  • Stilregionen
  • Unterstützung für .icon-Dateien
  • gdk_window_flush
  • Zeichnen außerhalb der Anfangs-/Endfarbe

Die meisten Widgets wurden so konvertiert, dass sie intern Gesten verwenden

Wayland unterstützt den klassischen GNOME-Shell-Modus

3.14.15
Alte Version, nicht mehr gepflegt: 3.16 2015-03-22 GDK unterstützt das Rendern von Fenstern mit OpenGL für X11 und Wayland mit libepoxy

Neue Widgets:

  • GtkGLArea
  • GtkStackSidebar
  • GtkModelButton
  • GtkPopoverMenü

Scrollen überarbeitet ( Scrollbar standardmäßig ausgeblendet)

Experimentelles Mir- Backend

3.16.7
Alte Version, nicht mehr gepflegt: 3.18 2015-09-23 CSS-Knoteninfrastruktur hinzufügen

Mehr Dateiauswahl-Design-Aktualisierung und bessere Dateiauswahl-Suche

Unterstützung für Windows XP eingestellt

Modellunterstützung für List- und Flow-Box

Kinetisches Scrollen des Touchpads

Touchpad-Gesten (Wayland)

gtk-builder-tool-Dienstprogramm

Nur Ausgabefenster

3.18.9
Alte Version, nicht mehr gepflegt: 3.20 2016-03-21 Weitere Integration von CSS-Knoten

Verschieben per Drag & Drop nach unten zu GDK

Neues Widget: GtkShortcutsWindow (zeigt Tastenkombinationen und Gesten einer Anwendung an)

3.20.10
Alte Version, nicht mehr gepflegt: 3.22 2016-09-21 Letzte 3.x-Version

Die Unterstützung für Wayland-Tablets wird zusammengeführt, die Unterstützung für Grafiktabletts gilt als abgeschlossen

GTK 3.22 soll genauso felsenfest (und damit "langweilig") sein wie GTK 2

ab 3 Jahren
3.22.29
Ältere Version, aber noch gepflegt: 3.24 2018-09-03 3.22 sollte die letzte Version der GTK 3-Serie sein

Abhängigkeitserschütterungen – erfordern:

  • Libepoxy 1.4
  • Pango 1.41

Neue Funktionen zur Schriftartenauswahl:

  • Einstellung von OpenType-Schriftfunktionen zulassen
  • Beispiele für OpenType-Schriftfunktionen anzeigen
  • erlauben die Auswahl von OpenType-Schriftarten
  • Support-Levels von Details für die Auswahl

Neue Emoji-Funktionen:

  • ein Abschluss-Popup für Emoji . unterstützen
  • Tastenkombination Strg-Umschalt-e fallen lassen

Andere neue APIs: gdk_window_move_to_rect

Wayland: Verwenden Sie anonymen Shared Memory auf FreeBSD

Zurückportierte Event-Controller von GTK 4:

  • GtkEventControllerScroll
  • GtkEventControllerMotion
  • GtkEventControllerKey
  • GtkGestureStylus

Stellen Sie einige APIs ein, die in GTK 4 verschwunden sind:

  • Fokusketten im GtkContainer
  • Stepper-Empfindlichkeit in GtkRange
3.23.0
3.23.1
3.23.2
3.23.3
3.24.0
3.24.5
3.24.14

3.24.29

Alte Version, nicht mehr gepflegt: 3.90 2017-03-31 GTK Scene Graph Kit (GSK) zusammengeführt

Entfernen Sie alle APIs, die als veraltet markiert sind

Schwere Entwicklung

  • brechen API & ABI

Ein neuer Vulkan- Renderer ergänzt den alten Kairo- Renderer

3.89.1

3.89.2
3.89.4
3.89.5
3.90

Alte Version, nicht mehr gepflegt: 3.92 2017-10-18 Da GNOME 3.26 bereits am 13. September 2017 veröffentlicht wurde, basierte es nicht auf GTK 3.92.

GNU Autotools wurde durch Meson ersetzt .

3.91.0

3.91.1
3.91.2
3.92.1

Alte Version, nicht mehr gepflegt: 3.94 2018-06-26 3.93
  • GdkScreen, GdkVisual entfernt
  • GdkDeviceManager ersetzt durch GdkSeat
  • Die Handhabung der Zwischenablage wird von GTK zu GDK verschoben
  • GdkEvent wird in ein undurchsichtiges GObject umgewandelt
  • der GL-Renderer in GSK ist im Wesentlichen fertiggestellt und liegt jetzt auf Augenhöhe mit dem Vulkan-Renderer
  • die Verwendung von GdkPixbuf in APIs wird reduziert
    • und das GskTexture-Objekt wird als GdkTexture in das GDK verschoben, um seinen Platz einzunehmen
  • das Wayland-Backend implementiert jetzt das serverseitige Dekorationsprotokoll von KDE
  • Broadway wird auf GSK portiert.

GdkWindow umbenannt in GdkSurface

Neue Abstraktion für zeichnerische Inhalte: GdkPaintable

Es gibt Unterstützung für die Anzeige von Medien mit:

  • GtkVideo
  • GtkMediaFile
  • GtkMediaStream
  • GtkMediaControls
3,93
3,94.0
Alte Version, nicht mehr gepflegt: 3,96 2019-05-07 Der Befehl gtk4-builder-tool simplify hat eine --3to4Option zum Konvertieren von GTK3-UI-Dateien in GTK4 erhalten; mit AMTK werden jedoch Menüs, Symbolleisten oder andere Objekte wie GtkShortcutsWindow programmatisch erstellt (nicht mit einer *.ui-Datei), sondern mit praktischen APIs.

GtkWidget kann jetzt einen GtkLayoutManager für die Größenzuweisung verwenden

  • Layout-Manager können optional Layout-Kinder verwenden, die Layout-Eigenschaften enthalten
  • GtkBinLayout, GtkBoxLayout, GtkGridLayout, GtkFixedLayout und GtkCustomLayout sind derzeit verfügbar
  • weitere Layout-Manager-Implementierungen werden in Zukunft erscheinen

Die Fokusbehandlung wurde neu geschrieben und die Generierung von Fokusänderungsereignissen wurde mit Crossing-Ereignissen vereinheitlicht

Ereignisse wurden vereinfacht und dienen nur der Eingabe:

  • Expose-Ereignisse wurden durch ein GdkSurface::render-Signal ersetzt
  • configure-Ereignisse wurden durch ein GdkSurface::size-changed-Signal ersetzt
  • Kartenereignisse wurden durch eine GdkSurface::mapped-Eigenschaft ersetzt
  • gdk_event_handler_set wurde durch ein GdkSurface::Event-Signal ersetzt
  • Schlüsselereignisse enthalten keine Zeichenfolge mehr
  • Ereignisse auf nicht zugeordneten Widgets werden ignoriert
3.96.0
Alte Version, nicht mehr gepflegt: 3.98 2020-02-10
  • Leistungsverbesserungen
  • Drag & Drop- Refactoring
  • GDK in Richtung Wayland verschieben
  • Umzüge
    • GtkMenu, GtkToolbar und ähnliche Klassen wurden durch GMenu ersetzt.
  • Ergänzungen
    • Emoji-Auswahl
    • Text-Widgets haben jetzt Rückgängig-Stapel
    • Ein neuer Layout-Manager
3.98.5
Alte Version, nicht mehr gepflegt: 3.99.0 2020-07-31
  • Einführung des Nachfolgers des Accessibility Toolkit (ATK) . Der neue Ansatz wird WAI-ARIA (World Wide Web Consortium (W3C) Accessibility Initiative – Accessible Rich Internet Applications) implementieren.
  • Aktualisierte Header, um Standard- C- Typen anstelle von GLib- Typen zu verwenden
  • Neue Widgets
  • Korrekturen und Verbesserungen
3.99.4
Alte Version, nicht mehr gepflegt: 4.0 2020-12-16 4.0.2
Alte Version, nicht mehr gepflegt: 4.2 2021-03-30
Aktuelle stabile Version: 4.4 2021-08-23

Siehe auch

  • Clientseitige Dekoration
  • Liste der Widget-Toolkits
  • GDK – das GIMP Drawing Kit liegt zwischen der xlib und der GTK-Bibliothek und verarbeitet grundlegendes Rendering wie Zeichnungsprimitive, Rastergrafiken (Bitmaps), Cursor, Schriftarten sowie Fensterereignisse und Drag-and-Drop-Funktionalität
  • gtkmm – C++-Bindungen für GTK
  • Qt – plattformübergreifendes Framework und Toolkit
  • Xojo – plattformübergreifendes Entwicklungstool und Framework
  • Enlightenment Foundation Libraries (EFL) – Widget-Toolkit für den Enlightenment Window Manager
  • FLTK – ein leichtes, plattformübergreifendes, nicht-natives Widget-Toolkit
  • FOX-Toolkit – ein schnelles Open-Source-, plattformübergreifendes Widget-Toolkit
  • IUP – ein Multi-Plattform-Toolkit zum Erstellen nativer grafischer Benutzeroberflächen
  • Ultimativ++
  • Visuelle Komponentenbibliothek (VCL)
  • Vala – eine objektorientierte Programmiersprache mit einem selbsthostenden Compiler, der C-Code generiert und das GObject-System verwendet.
  • wxWidgets - ein plattformübergreifendes GUI-Toolkit, dessen Ziel es ist, nach Möglichkeit die native grafische API jeder Plattform direkt zu verwenden.

Verweise

Literaturverzeichnis

Externe Links