www.wikidata.de-de.nina.az
GTK fruher GTK 5 GIMP Toolkit ist ein freies GUI Toolkit unter der LGPL GTK enthalt viele Steuerelemente mit denen sich grafische Benutzeroberflachen GUI fur Software erstellen lassen GTKgtk3 demo zeigt SteuerelementeBasisdatenEntwickler Das GTK Team 1 Erscheinungsjahr 1998 2 Aktuelle Version 4 12 4 3 17 November 2023 Betriebssystem Unix Linux macOS beta WindowsProgrammiersprache C 4 Kategorie GUI ToolkitLizenz LGPL freie Software deutschsprachig jawww gtk orgGTK3 Widget FactoryDie Bibliothek wurde anfangs von Peter Mattis Spencer Kimball und Josh MacDonald entwickelt um abseits von Motif eine Benutzeroberflache fur das Grafikprogramm GIMP zu schaffen Mittlerweile wird GTK von den Desktop Umgebungen Gnome Xfce LXDE Cinnamon Pantheon und Budgie sowie von einer Vielzahl weiterer Anwendungen verwendet und ist somit neben Qt das erfolgreichste GUI Toolkit fur das X Window System Inhaltsverzeichnis 1 Geschichte und Entwicklung 1 1 GTK 2 1 2 GTK 3 1 3 GTK 4 1 4 macOS 1 5 Windows 2 Programmierbeispiel 3 Anbindungen an andere Programmiersprachen 4 Grafischer Stil 4 1 Clearlooks 4 2 Adwaita 5 Desktop Umgebungen die GTK benutzen 6 Siehe auch 7 Literatur 8 Weblinks 9 EinzelnachweiseGeschichte und Entwicklung Bearbeiten nbsp Altes LogoGTK ist in der Programmiersprache C geschrieben Die erste Version von GTK erschien im April 1998 2 GTK enthielt einige Hilfsroutinen zur Losung grundlegender Programmieraufgaben etwa zum Speichern diverser Daten Diese sind insbesondere bei der wiederholten Entwicklung von Programmen fur den Programmierer recht zeitintensiv So enthielten die ersten Versionen von GTK etwa Datenstrukturen fur verkettete Listen Binarbaume oder mitwachsende Strings Ausserdem wurde mit GTK ein System entwickelt um in C objektorientiert zu programmieren Diese Hilfsmittel erwiesen sich auch fur Programme ohne grafische Oberflache als nutzlich und wurden daher spater in eine separate Bibliothek ausgelagert die GLib library of C functions Das objektorientierte System wurde in die GObject Bibliothek ausgelagert systemnahe Zeichenmethoden in die GDK Bibliothek GTK Drawing Kit Letztere ermoglicht es dass GTK plattformubergreifend identisch unter anderem auf Windows X Window System und macOS laufen kann GTK 2 Bearbeiten Die Version GTK 2 erhielt neue verbesserte Funktionen zum Rendern von Text mit Hilfe der Pango Bibliothek eine neue Theme Engine eine flexiblere API und eine neuartige Bibliothek ATK zur Verbesserung der Zuganglichkeit des Toolkits fur behinderte Menschen mit der zum Beispiel Vorlese Software Vergrosserungstools und alternative Eingabegerate angesprochen werden konnen GTK 2 ist nicht kompatibel zu GTK 1 daher mussten bestehende Anwendungen portiert werden Ab der Version 2 8 verwendet GTK die vektorbasierte Bibliothek Cairo die zum Rendern nach Moglichkeit Hardwarebeschleunigung nutzt GTK 2 99 3 vom 1 Februar 2011 ist die letzte Version der 2 x Serie 6 GTK 3 Bearbeiten Am 10 Februar 2011 wurde die Version 3 0 veroffentlicht 7 Viele als veraltet eingestufte Funktionen wurden entfernt sowie existierende Schnittstellen verbessert GTK 3 ist nicht abwartskompatibel zu GTK 2 x Bibliotheken beider Versionen sind jedoch parallel installierbar GTK 3 0 enthalt unter anderem eine neue Schnittstelle fur das Zeichnen von Widgets die nun vollstandig auf Cairo basiert eine CSS basierte Theming Engine die auch animierte Zustandsubergange erlaubt verbesserte Layoutmoglichkeiten ein neues Schiebeschalter Widget eine Applikations Klasse Unterstutzung fur mehrere Zeigegerate Multi Pointer und symbolische Icons die ihre Farbe nach Zustand andern konnen Interne Strukturen wurden von der offentlichen Schnittstelle getrennt und verborgen so dass es in Zukunft leichter sein wird Anderungen durchzufuhren ohne dass ein Schnittstellenbruch entstehen muss Des Weiteren werden mehrere GDK Backends gleichzeitig innerhalb derselben Bibliothek unterstutzt 8 Bisher waren dafur verschiedene Bibliotheken notwendig Mit GTK 3 2 wurden zwei neue Backends eingefuhrt eines fur den Display Server Wayland und ein HTML5 Backend namens Broadway mit dem GTK Anwendungen ubers Netz ferngesteuert im Browser bedient werden konnen 9 GTK 3 4 unterstutzt Multitouch und sanften Bildlauf und ist auch fur Windows verfugbar 10 GTK 3 6 unterstutzt CSS Animationen und verwischt Schatten Die Version 3 6 4 ist die letzte offizielle Version fur Windows 32 bit und 64 bit 11 GTK 3 8 unterstutzt Wayland in wichtigen Teilen nativ 12 GTK 3 10 entfernt die Moglichkeit Tastenkurzel individuell an den Benutzer anzupassen 13 Zudem wird Wayland experimentell unterstutzt und die Anzeige fur hochauflosende Monitore verbessert 14 GTK 3 12 fuhrt Popover ein Diese Comic Sprechblasen sind als Hilfe einsetzbar Wayland Support wurde verbessert 15 GTK 3 14 unterstutzt Multitouch Gesten 16 17 GTK 3 16 unterstutzt das Rendern von Fenstern durch OpenGL Auch wurde mit dem neuen Steuerelement GtkGLArea ermoglicht 3D Objekte direkt in Programmoberflachen einzubinden 18 19 GTK 3 18 unterstutzt als Grundlage von Gnome 3 18 offiziell Wayland den Nachfolger des X Window System 20 GTK 3 20 integriert mit gspell die Rechtschreibprufung und verbessert das CSS Theming 21 GTK 3 22 ist die letzte stabile Version von GTK 3 und wird drei Jahre lang als LTS Version gepflegt Hauptmerkmal dieser Version sind die neuen Flatpak Portale fur einfache Installationen von Software 22 GTK 3 24 wurde im Juni 2018 angekundigt fur Herbst 2018 als allerletzte Version zu GTK 3 da sich GTK 4 0 verzogerte Aktuell im Jahr 2021 hier ist 3 24 28 Version 3 24 wird nun auch als langjahrige LTS Version gepflegt 23 Mit der unstable Serie 3 9x wird GTK 4 0 vorbereitet Im Marz 2017 wurde mit Version 3 90 das Scene Graph Kit GSK hinzugefugt Es implementiert einen Szenengraph und sorgt fur die Bildsynthese Im Februar 2019 wurde bekannt gegeben dass GTK 4 0 das Plus Zeichen aus dem Namensbestandteil entfernen wird 5 GTK 4 Bearbeiten In GTK 4 werden Wayland und Vulkan mehr und besser unterstutzt Mehr Barrierefreiheit wurde auch realisiert Gnome 40 ist dabei das abgestimmte Pendant auf Linux Seite 24 Fedora 34 wird die erste grosse Linux Variante sein die GTK 4 mit Gnome 40 im April 2021 vorstellt 25 Zudem wurde die in GTK 2 vorhandene Moglichkeit Tastenkurzel individuell an den Benutzer anzupassen endgultig entfernt 26 GTK 4 0 wurde am 16 Dezember 2020 offiziell vorgestellt Highlights sind Verbesserungen im OpenGL Renderer und ein neuer Vulkan Renderer mit mehr schneller GPU Unterstutzung sowie besserer macOS und Windows Support neben vielen anderen Dingen 27 GTK 4 2 wurde im 30 Marz 2021 vorgestellt mit neuem OpenGL Renderer NGL als Default 28 macOS Bearbeiten Uber das Quartz Backend 29 eine Portierung des X Window System kann GTK auf macOS genutzt werden 30 Mit GTK 4 0 wurde die Unterstutzung von macOS stark verbessert Windows Bearbeiten Nach GTK 2 24 10 und 3 6 4 wurde die Windows Entwicklung mit Installer bei Gnome eingestellt Es wird empfohlen das Paket System MSYS2 von Gnome auf Windows zu installieren 31 MSYS2 unterstutzt auch schon GTK 4 32 GTK 2 24 10 und 3 6 4 sind weiterhin im Netz verfugbar jedoch gegenuber den aktuellen Versionen in Linux erheblich mehr durch Fehler belastet 33 34 Fur Windows 64 bit Stand Januar 2021 ist nun durch die Arbeit von Tom Schoonjans 2 24 33 aktuell wie Linux und 3 24 24 aktuell wie Linux verfugbar 35 Mit Windows 10 Fall Creators Update steht dort nun auch GTK 3 im WSL zur Verfugung Eine Anleitung zum Installieren von Programmen mit Fenstern ist in der GTK Community vorhanden 36 GTK 4 ist fur die Version 20H2 und 21H1 im WSL verfugbar abhangig von der gewahlten Linux Distribution Programmierbeispiel Bearbeiten nbsp The GTK toolkitDer klassische Weg um mit GTK zu programmieren ist zunachst die Eigenschaften der verwendeten Grafikelemente festzulegen sie dann zu gruppieren und mit bestimmten Ereignisbehandlungsroutinen zu verknupfen ein mogliches Ereignis ware zum Beispiel der Klick auf eine Schaltflache Es existieren allerdings auch grafische Designwerkzeuge fur GTK Oberflachen wie Glade oder das in MonoDevelop enthaltene Stetic die einem die ersten beiden Schritte ersparen konnen GTK um Prototyping Fahigkeiten erweitern und es ermoglichen Anderungen an der Oberflache eines Programms vornehmen zu konnen ohne den Quellcode der Software andern zu mussen nbsp Die Darstellung dieses ProgrammsEin typisches Hallo Welt Programm welches das Fenster rechts anzeigt konnte etwa wie folgt aussehen include lt gtk gtk h gt Ruckruffunktion aufgerufen wenn die Schaltflache geklickt wurde void on button clicked GtkButton button gpointer data g print Knopf s geklickt n gtk button get label button gtk main quit Beendet das Programm int main int argc char argv GtkWidget window GtkWidget button GTK initialisieren gtk init amp argc amp argv Hauptfenster erstellen Titel setzen Rahmenabstand setzen window gtk window new GTK WINDOW TOPLEVEL gtk window set title GTK WINDOW window Hallo Welt gtk container set border width GTK CONTAINER window 10 Schaltflache erstellen und dem Fenster hinzufugen button gtk button new with label Hallo Wikipedia gtk container add GTK CONTAINER window button Signale mit Ruckruffunktionen verbinden g signal connect window destroy G CALLBACK gtk main quit NULL g signal connect button clicked G CALLBACK on button clicked NULL Fenster und all seine Unterelemente anzeigen gtk widget show all window Haupt Ereignisschleife starten gtk main return 0 Dabei wird zunachst in der Hauptroutine main ein neues Fenster erzeugt und dessen Titel sowie der Rahmenabstand zu den inneren Elementen gesetzt Danach wird eine Schaltflache mit entsprechender Beschriftung erzeugt und in das Fenster eingefugt Ein Fenster ist immer auch ein Container also ein Element das andere Steuerelemente Widgets enthalten kann Anschliessend wird das destroy Signal welches das Fenster Widget z B beim Klick auf dessen Schliessen Knopf erzeugt mit der GTK Funktion gtk main quit verknupft die das Programm beendet Auch die zuvor angelegte Schaltflache wird mit einer Ruckruffunktion namens on button clicked verbunden die weiter oben implementiert ist Fur das Verbinden von Signalen mit Ruckruffunktionen wird direkt auf Funktionen der GLib zuruckgegriffen deren Namensprafix g statt gtk ist Da alle Steuerelemente zunachst unsichtbar sind mussen sie sichtbar gemacht werden entweder einzeln oder alle zusammen durch den Aufruf von gtk widget show all Mit dem Aufruf von gtk main wird schliesslich die Haupt Ereignisschleife gestartet die auf Ereignisse wartet und diese dann an die entsprechenden Signale verteilt Die Funktion die bei einem Klick auf die Schaltflache ausgefuhrt wird stellt exemplarisch dar wie auf das aufrufende Steuerelement zuruckgegriffen werden kann indem dort die Beschriftung der Schaltflache ausgelesen und in der Standardausgabe ausgegeben wird Anschliessend wird das Programm beendet Der zweite Parameter data der Ruckruffunktion kann beliebige Daten enthalten die beim Verbinden angegeben wurden In diesem Beispiel wird dort jedoch nur der Wert NULL also nichts ubergeben Das Beispielprogramm wird mit dem Aufruf von gcc gtkhello c o gtkhello pkg config gtk 3 0 cflags libs innerhalb des Ordners kompiliert in dem sich die Datei befindet Anbindungen an andere Programmiersprachen BearbeitenDa GTK eine reine C Bibliothek ist lasst sie sich einfach an viele andere Programmiersprachen anbinden Bei objektorientierten Programmiersprachen entfallt die Nutzung der GObjects ublicherweise lassen sich dort GTK Objekte wie native Objekte der Programmiersprache verwenden Die Programmiersprache Vala verwendet GObject direkt als Objektsystem und benotigt daher keine Laufzeitbibliothek fur die Sprachanbindung nbsp Hallo Welt in PerlProgrammiersprache Name der Anbindung Programm BeispieleC gtkmm Inkscape Solang GParted GNotePython PyGTK bis GTK 2 24 0 37 OpenShot gPodder Ubuntu TweakPyGObject ab GTK 3 0 0 37 Pitivi Lollypop GNOME Music MeldC Mono GTK Tomboy F Spot Banshee Pinta MonoDevelop gbrainyVala Shotwell Geary Corebird Elementary OS libunityJavaScript Gjs Gnome Shell GNOME Maps PolariVorhanden jedoch bisher seltener verwendet Ada GtkAdaCommon Lisp cl gtk2 38 D gtkD 39 TilixFreeBASIC GladeToBac 40 Data2App 41 GTK tobac 42 Fortran gtk fortran 43 Go Go GTK 44 Haskell Gtk2HsJava java gnome GNOME SplitJulia Gtk jlObjective C CoreGTK 45 OCaml LablGTKPascal LCL LazarusPerl gtk2 perl 46 slimrat odot ShutterPHP PHP GTK 47 Phoronix Test SuiteRacket gui lib drracketRuby Ruby GNOME2 AlexandriaRust Gtk rs 48 systemd manager 49 Tcl GnoclGrafischer Stil BearbeitenDas Aussehen des Toolkits ist zum grossten Teil durch den Benutzer konfigurierbar Dazu stehen verschiedene Themes zur Auswahl Clearlooks Bearbeiten nbsp Beispiel fur Clearlooks 2 20Von 2005 bis 2014 verwendete GTK Clearlooks als Theme 50 Adwaita Bearbeiten nbsp Beispiel fur AdwaitaSeit Mitte 2014 ist Adwaita das neue Standardtheme von GTK 51 Desktop Umgebungen die GTK benutzen BearbeitenDie Desktop Umgebungen Gnome Cinnamon MATE Xfce LXDE Pantheon von Elementary OS und der ROX Desktop bauen selbst auf GTK auf was bedeutet dass deren Fenstermanager beim Zeichnen der Fensterelemente auf GTK zuruckgreifen und die zugehorigen Programme mit GTK entwickelt wurden GTK ist aber nicht nur auf diese Desktops beschrankt jedes GTK Programm kann in einer beliebigen anderen Desktop Umgebung wie zum Beispiel KDE oder CDE ausgefuhrt werden sofern auf dem System die GTK Bibliotheken installiert sind Um die optische Integration in Qt basierte Desktops z B KDE zu verbessern gibt es u a gtk qt 52 GTK ist auch fur Windows und macOS nativ X11 verfugbar und ermoglicht es damit Anwendungen zu schreiben die verhaltnismassig leicht zwischen Unix Windows und macOS portiert werden konnen Siehe auch BearbeitenListe von GUI BibliothekenLiteratur BearbeitenMatthias Warkus Das GTK GNOME Entwicklerhandbuch dpunkt Verlag Heidelberg 2008 ISBN 978 3 89864 512 6 Andrew Krause Foundations of GTK Development Apress Berkeley CA 2007 ISBN 978 1 59059 793 4 Scott Mattocks Pro PHP GTK Apress Berkeley CA 2006 ISBN 1 59059 613 7 Weblinks Bearbeiten nbsp Wikibooks GTK mit Builder Lern und Lehrmaterialien nbsp Commons Bildschirmfotos von freien GTK Programmen Sammlung von Bildern Website des Projekts GTK 3 Reference ManualEinzelnachweise Bearbeiten The GTK Project Team Abgerufen am 16 Oktober 2011 englisch a b Index of Public gimp gtk v1 0 Nicht mehr online verfugbar Archiviert vom Original am 12 August 2014 abgerufen am 11 August 2014 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot ftp gnome org Matthias Clasen 4 12 4 17 November 2023 abgerufen am 18 November 2023 The gtk Open Source Project on Open Hub Languages Page In Open Hub abgerufen am 18 Juli 2018 a b Emmanuele Bassi Project rename to GTK In Gnome Mailingliste 6 Februar 2019 abgerufen am 7 Februar 2019 englisch https ftp fau de gnome sources gtk 2 99 gtk 2 99 3 changes GTK 3 0 0 released Abgerufen am 16 Oktober 2011 englisch Multiple backends for GTK Abgerufen am 16 Oktober 2011 englisch Demonstration des HTML5 Broadway Backends Abgerufen am 16 Oktober 2011 englisch https www heise de newsticker meldung GTK 3 4 mit Multitouch und Windows Unterstuetzung 1484971 html https www heise de newsticker meldung Neue Versionen von GTK GLib und Clutter 1716414 html heise online Gtk 3 8 bringt Wayland Support Abgerufen am 4 Dezember 2020 https gitlab gnome org GNOME gtk issues 5242 note 1570213 heise online Gtk 3 10 mit verbesserter Wayland Unterstutzung Abgerufen am 4 Dezember 2020 Thorsten Leemhuis Angesehen Gnome 3 12 Abgerufen am 4 Dezember 2020 Dr Oliver Diedrich Linux Abgerufen am 4 Dezember 2020 heise online GUADEC Wayland Support fur Gnome Abgerufen am 4 Dezember 2020 GNOME 3 16 Freigabehinweise Abgerufen am 4 Dezember 2020 heise online Linux Desktop Neues Gnome zeigt Nachrichten oben Abgerufen am 4 Dezember 2020 heise online Linux Desktop Gnome 3 18 mit Google Drive Support freigegeben Abgerufen am 4 Dezember 2020 heise online GUI Toolkit GTK 3 20 verbessert das CSS Theming Abgerufen am 4 Dezember 2020 heise online GUI Toolkit GTK 3 22 bringt Flatpak Portale Abgerufen am 4 Dezember 2020 https www phoronix com scan php page news item amp px GTK 3 24 Coming This Fall https www heise de news Gnome Toolkit fuer GUI GTK 4 0 erscheint nach 4 Jahren und ist grunderneuert 4990565 html https www computerbase de 2021 03 gnome 40 release candidate erschienen https gitlab gnome org GNOME gtk issues 5242 note 1570357 https www phoronix com scan php page news item amp px GTK 4 0 Released https www phoronix com scan php page news item amp px GTK 4 2 Released Projects GTK OSX GNOME Wiki Abgerufen am 4 Dezember 2020 https www gtk org download macos php Archivierte Kopie Memento des Originals vom 20 April 2017 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www gtk org https packages msys2 org base mingw w64 gtk4 GTK for Windows Runtime Environment Abgerufen am 4 Dezember 2020 englisch GTK Abgerufen am 4 Dezember 2020 Tom Schoonjans tschoonj GTK for Windows Runtime Environment Installer 2 Dezember 2020 abgerufen am 4 Dezember 2020 Windows Subsystem for Linux Installation des WSL und Konfiguration von Gnome unter Windows 10 Abgerufen am 4 Dezember 2020 a b ANNOUNCE PyGTK 2 24 0 8 April 2011 abgerufen am 15 Oktober 2011 englisch cl gtk2 im CLiki Abgerufen am 1 April 2015 englisch gtkD Abgerufen am 15 Oktober 2011 englisch GladeToBac Abgerufen am 15 Oktober 2011 englisch Data2App Abgerufen am 15 Oktober 2011 englisch GTK tobac Abgerufen am 15 Oktober 2011 englisch gtk fortran Abgerufen am 15 Oktober 2011 englisch Go GTK Abgerufen am 6 April 2012 englisch CoreGTK Abgerufen am 27 Marz 2020 englisch gtk perl Abgerufen am 1 Juli 2017 englisch PHP GTK Abgerufen am 2 August 2022 englisch Gtk rs Abgerufen am 20 Dezember 2016 englisch systemd manager Abgerufen am 11 Dezember 2020 englisch Default Theme Progress 28 Februar 2005 A new default theme for GTK 13 Juni 2014 gtk qt engine Abgerufen am 17 November 2012 englisch Normdaten Sachbegriff GND 4618256 1 lobid OGND AKS LCCN n2001062971 VIAF 179958458 Abgerufen von https de wikipedia org w index php title GTK Programmbibliothek amp oldid 238500473