GTK - GTK

Aus Wikipedia, der freien Enzyklopädie
GTK
GTK logo.svg
Awf-2020-2.png
Die gtk3-Widget-Factory ist eine Sammlung von Beispielen, die viele der GUI-Widgets in GTK Version 3 demonstrieren
Ursprüngliche Autor (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.0.3 / 7. Februar 2021 ; vor 3 Monaten  ( 2021-02-07 )
Vorschau Release
4.1.2 / 15. März 2021 ; Vor 58 Tagen  ( 2021-03-15 )
Repository Bearbeiten Sie dies bei Wikidata
Geschrieben in C , CSS
Betriebssystem Linux , Unix , MacOS , Windows
Art Widget-Toolkit
Lizenz LGPLv2.1 +
Webseite gtk .org

GTK (ehemals GTK + , GIMP ToolKit ) ist ein kostenloses und plattformübergreifendes Open-Source - Widget-Toolkit zum Erstellen grafischer Benutzeroberflächen (GUIs). Es ist unter den Bedingungen der GNU Lesser General Public License lizenziert , sodass sowohl freie als auch proprietäre Software es verwenden kann. Es ist eines der beliebtesten Toolkits für die Fenstersysteme Wayland und X11 .

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 Rendern auf Kairo . Der neue SceneGraph ist in Arbeit.

Die GTK- Bibliothek enthält eine Reihe grafischer Steuerelemente ( 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 . Für die Objektorientierung wird GObject verwendet, dh das GLib- Objektsystem. Während GTK hauptsächlich für Fenstersysteme auf Basis von X11 und Wayland gedacht ist , funktioniert es auf anderen Plattformen, einschließlich Microsoft Windows (mit der Windows-API verbunden ) und macOS (mit Quartz verbunden ). Es gibt auch ein HTML5 -Backend namens Broadway .

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

Ab Version 2005, Version 2.8, begann GTK mit der Umstellung auf Cairo , um die meisten Widgets für grafische Steuerelemente zu rendern . Seit GTK Version 3.0 erfolgt das gesamte Rendern mit Kairo.

Am 26. Januar 2018 bei DevConf.cz gab Matthias Clasen einen Überblick über den aktuellen Stand der GTK 4-Entwicklung, einschließlich einer allgemeinen Erklärung, wie Rendering und Eingabe in GTK 3 funktionierten und welche Änderungen in GTK 4 vorgenommen wurden (> 3,90) und warum. Im Februar wurde bekannt gegeben, dass GTK 4 das „+“ aus dem Projektnamen streichen wird.

GIMP Drawing Kit (GDK)

GDK fungiert als Wrapper für die Funktionen auf niedriger Ebene, die von den zugrunde liegenden Fenster- und Grafiksystemen bereitgestellt werden.

GDK befindet sich im /gdk Verzeichnis.

GTK Scene Graph Kit (GSK)

GSK ist die Rendering- und Szenendiagramm-API für GTK. GSK liegt zwischen den grafischen Steuerelementen (Widgets) und dem Rendering. GSK wurde schließlich in die im März 2017 veröffentlichte GTK-Version 3.90 integriert.

GSK befindet sich im /gsk Verzeichnis.

GtkInspector

GtkInspector wurde mit Version 3.14 eingeführt. GtkInspector kann nur nach der Installation des Entwicklungspakets libgtk-3-dev / gtk + -devel aufgerufen werden .

GUI-Designer

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

GtkBuilder

Mit GtkBuilder können Benutzeroberflächen entworfen werden, ohne Code schreiben zu müssen. Die Schnittstelle wird in einer XML-Datei ( Extensible Markup Language ) beschrieben, die dann zur Laufzeit geladen und die Objekte automatisch erstellt werden. Mit dem Glade Interface Designer können Sie die Benutzeroberfläche so erstellen, wie Sie es sehen ( WYSIWYG ). Die Beschreibung der Benutzeroberfläche ist unabhängig von der verwendeten Programmiersprache.

Sprachbindungen

Eine in einer Programmiersprache geschriebene Bibliothek kann in einer anderen Sprache verwendet werden, wenn Bindungen geschrieben werden. GTK bietet eine Reihe von Bindungen für verschiedene Sprachen.

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 4 Jahren  ( 22.09.2016 )
Vorschau Release
2,99,3 (für GTK3) / 6. Juni 2014 ; vor 6 Jahren  ( 06.06.2014 )
Repository Bearbeiten Sie dies bei Wikidata
Geschrieben in C # , XML , Perl , C.
Betriebssystem Windows , MacOS , Linux
Art Widget-Toolkit
Lizenz GNU Lesser General Public License
Webseite mono-Projekt .com / GtkSharp

Gtk # ist eine Reihe von .NET Framework- Bindungen für das GTK- Toolkit für grafische Benutzeroberflächen (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 dem jedes Widget die Zuordnung von Handlermethoden ermöglicht, die aufgerufen werden, wenn bestimmte Ereignisse auftreten.

Mit Gtk # erstellte Anwendungen können auf vielen Plattformen ausgeführt werden, einschließlich Linux , Windows und MacOS . Die Mono-Pakete für Windows enthalten GTK, Gtk # und ein natives Design, damit Anwendungen wie native Windows-Anwendungen aussehen. Ab Mono 1.9 muss für die Ausführung von Gtk # -Anwendungen unter macOS kein X11- Server mehr ausgeführt werden.

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

Die Assembly gtk-dotnet.dll unterstützt nicht nur den Standard-GTK / GNOME-Stapel von Entwicklungstools, sondern bietet auch eine Brücke, um die auf dem .NET-Stapel verfügbaren Funktionen zu nutzen. Zu diesem Zeitpunkt umfasst dies die Funktionalität zum Verwenden von System.Drawing zum Zeichnen in einem Widget.

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 veröffentlichten Version von Gtk # mit Unterstützung für Gtk3 wurde als Grund für die Entfernung des Banshee Media Players in Ubuntu 12.04 angeführt .

Entwicklung

GTK wird hauptsächlich vom GNOME-Projekt entwickelt , das auch die GNOME-Entwicklungsplattform und die GNOME-Desktop-Umgebung entwickelt.

Die GTK-Entwicklung wird lose verwaltet. Die Diskussion findet hauptsächlich auf mehreren öffentlichen Mailinglisten statt. GNOME-Entwickler und -Nutzer treffen sich auf einer jährlichen GUADEC- Sitzung der GNOME- Konferenz für Benutzer und Entwickler von GNOME, um den aktuellen Stand und die zukünftige Ausrichtung von GNOME zu erörtern. GNOME enthält Standards und Programme von freedesktop.org besser miteinander arbeiten mit anderen Desktops.

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

Am 1. September 2016 wurde in einem Beitrag im GTK-Entwicklungsblog unter anderem das zukünftige Nummerierungsschema der GTK beschrieben. Die GTK-Version 3.22 ab Herbst 2016 ist die letzte 3.x-Version. Die Version 3.24 wurde im Herbst 2018 mit der 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. Selbst wenn die 4.x-Serie in die Entwicklung eintritt, werden noch bemerkenswerte Anwendungen verwendet GTK 2.x und wurden nicht auf 3.22 portiert. In Bezug auf die Zukunft von Legacy- Software mit GTK gab es kein gemeinsames Projekt, um GTK 2.x-Software auf 3.22 zu portieren. Version 3.24 wird langfristig unterstützt und ist die aktuelle und zukünftige Basis von Programmen wie Gimp 3.0 und Inkscape 1.0. Für Entwickler ist also die Wahl stabiler GTK 3.24 mit Bugfix oder GTK 4 mit Änderungen und neuen Funktionen in der zukünftigen Entwicklung.

Automatisierung erstellen

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

Seit dem 14. August 2017 wurde der Hauptzweig von GTK mit Meson erstellt und die Autotools-Buildsystemdateien wurden gelöscht.

Kritik

Die häufigste Kritik an GTK ist die mangelnde Abwärtskompatibilität bei wichtigen Updates, insbesondere bei der API ( Application Programming Interface ) und dem Theming.

Die Kompatibilitätsbrüche zwischen kleineren Releases während des GTK 3.x-Entwicklungszyklus wurden von Benjamin Otte als Folge des starken Innovationsdrucks erklärt, beispielsweise aufgrund der Bereitstellung der Funktionen, die moderne Benutzer erwarten, und der Unterstützung des zunehmend einflussreichen Wayland-Display-Server-Protokolls . Mit der Veröffentlichung von GTK 4 wird der Druck aus dem Innovationsbedarf abgebaut und das Gleichgewicht zwischen Stabilität und Innovation wird in Richtung Stabilität tendieren. In ähnlicher Weise sollen die jüngsten Änderungen am Thema speziell diesen Teil der API verbessern und stabilisieren, was bedeutet, dass einige Investitionen jetzt später belohnt werden sollten.

  • Dirk Hohndel, Codeentwickler von Subsurface und Mitglied des Open-Source-Technologiezentrums von Intel , kritisierte die GTK-Entwickler dafür, dass sie aggressiv sind und die meisten Community-Anfragen ignorieren.
  • Hong Jen Yee, Entwickler von LXDE (dessen GTK-Version eingestellt wurde und dessen Bemühungen sich auf den Qt-Port konzentrierten ), äußerte Verachtung für Version 3 der radikalen API-Änderungen und der erhöhten Speichernutzung des GTK-Toolkits und portierte PCMan File Manager (PCManFM). zu Qt . PCManFM wird gleichzeitig mit einem GTK und einem Qt-Backend entwickelt.
  • Der Audacious Music Player wurde in Version 3.6 auf Qt umgestellt. Die von den Entwicklern angegebenen Gründe hierfür sind ein Übergang zu clientseitigen Fensterdekorationen, von denen sie behaupten, dass sie dazu führen, dass die Anwendung " GNOME -y und fehl am Platz" aussieht .
  • Wireshark ist zu Qt gewechselt, da er keine guten Erfahrungen mit der plattformübergreifenden Unterstützung von GTK gemacht hat.

Benutzen

Die GTK-Unterstützung für Wayland setzt voraus, 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

In mehreren Desktop-Umgebungen wird GTK als Widget-Toolkit verwendet.

Strom

Inaktiv

Sonstiges

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

Fenstermanager

Die folgenden Fenstermanager verwenden GTK:

GtkSourceView

Für die Hervorhebung der Syntax gibt es GtkSourceView , "Widget zur Bearbeitung des Quellcodes". GtkSourceView wird von GNOME getrennt von GTK als Bibliothek verwaltet: gtksourceview . Es gibt Pläne, in gsv umzubenennen.

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 finden Sie hier:

Der folgende Code stellt eine grafische GTK Hallo-Welt - Programm in der Programmiersprache C . Dieses Programm hat ein Fenster mit dem Titel "Hallo Welt!" 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 die Bibliotheken zuerst 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 / Unix

GTK wurde ursprünglich im GNU Image Manipulation Program (GIMP) als Ersatz für das Motif- Toolkit entwickelt und verwendet. Irgendwann wurde Peter Mattis von Motif enttäuscht und begann, sein eigenes GUI-Toolkit namens GIMP-Toolkit zu schreiben. Er hatte Motif erfolgreich durch die Version 0.60 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-Desktopumgebung verwendet.

Mit der Release-Serie GTK 2.0.0 wurden neue Funktionen eingeführt, darunter eine verbesserte Textwiedergabe mit Pango , einer neuen Theme- Engine, eine verbesserte Zugänglichkeit mit dem Accessibility Toolkit , der Übergang zu Unicode mit UTF-8- Zeichenfolgen und eine flexiblere API. Ab Version 2.8 ist GTK 2 zum Rendern von Vektorgrafiken von der Cairo- Grafikbibliothek abhängig .

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

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

Mac OS

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

Windows

  • Nach GTK 2.24.10 und 3.6.4 wurde die Entwicklung von Windows mit Installer von Gnome geschlossen. Die Installation von MSYS2 unter Windows ist eine gute Möglichkeit, die tatsächliche GTK zu verwenden.
  • GTK 2.24.10 und 3.6.4 sind im Internet verfügbar, aber sehr fehlerhaft und gegenüber den tatsächlichen Versionen eingeschränkt.
  • Eine Version für Windows 64-Bit wird von Tom Schoonjans mit 2.24.33 (aktuell wie Linux) und 3.24.24 (aktuell wie Linux) ab Januar 2021 erstellt.
  • 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 gab an, dass das Ziel darin bestand, die erforderlichen OpenVMS- Änderungen in den GTK-Entwicklungsstrom der Version 1.3 zu integrieren. Dies wurde jedoch nie erreicht. Die neueste Version von GTK für OpenVMS ist Version 1.2.10.

4.x.

Eine der wichtigsten Neuerungen, die während des GTK 4-Entwicklungszyklus implementiert wurden (z. B. GTK 3.92 usw.), war die Delegation von Funktionen an Zusatzobjekte, anstatt sie in die von GTK bereitgestellten Basisklassen zu codieren.

  • Die von GtkWidget beschriebene Ereignisbehandlung von Signalhandlern wird an Ereignissteuerungen delegiert
  • Das Rendering wird an GtkSnapshot-Objekte delegiert
  • Der Layoutmechanismus von GtkWidget wird an GtkLayoutManager delegiert

Am 26. Januar 2018 bei DevConf.cz gab Matthias Clasen einen Überblick über den damaligen Stand der GTK 4-Entwicklung, einschließlich einer allgemeinen Erklärung, wie Rendering und Eingabe in GTK 3 funktionierten und 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 gegeben.

Veröffentlichungen

Das GNOME-Team veröffentlicht regelmäßig neue Versionen.

Siehe auch

  • Kundenseitige Dekoration
  • Liste der Widget-Toolkits
  • GDK - Das GIMP Drawing Kit befindet sich zwischen der xlib- und der GTK-Bibliothek und verarbeitet grundlegende Rendervorgänge wie Zeichnungsprimitive, Rastergrafiken (Bitmaps), Cursor, Schriftarten sowie Fensterereignisse und Drag & Drop-Funktionen
  • gtkmm - C ++ - Bindungen für GTK
  • Qt - plattformübergreifendes Framework und Toolkit
  • Xojo - plattformübergreifendes Entwicklungstool und Framework
  • Enlightenment Foundation Libraries (EFL) - Widget-Toolkit, das für den Enlightenment-Fenstermanager geschrieben wurde
  • FLTK - ein leichtes, plattformübergreifendes, nicht natives Widget-Toolkit
  • FOX Toolkit - ein schnelles, plattformübergreifendes Open Source-Widget-Toolkit
  • IUP - ein plattformübergreifendes Toolkit zum Erstellen nativer grafischer Benutzeroberflächen
  • Ultimate ++
  • Visual Component Library (VCL)
  • Vala - eine objektorientierte Programmiersprache mit einem selbsthostenden Compiler, der C-Code generiert und das GObject-System verwendet.

Verweise

Literaturverzeichnis

Externe Links