Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
GTK
(GIMP Toolkit) ist eine freie Komponentenbibliothek, mit der grafische Benutzeroberflächen (GUI) geschrieben werden können.
Die Geschichte von GNOME hängt stark mit GTK+ zusammen. Weil KDE aufgrund der damals unfreien Lizenz von Qt ebenfalls unfrei galt, wurde GNOME ins Leben gerufen, um eine freie Desktop-Umgebung bereitzustellen. Man entschied sich, das vorhandene Toolkit von GIMP – daher der Name GIMP Toolkit – auszubauen. GTK+ war geboren. Am 14. April 1998 kam GTK+ 1.0, seit 11. März 2002 gibt es GTK+ 2.0. Im Februar 2011 ist GTK+ 3.0 erscheinen, das ab Ubuntu 11.10 zum Einsatz kommt. Nur bei gleicher Hauptversionsnummer wird Abwärtskompatibilität garantiert.
Heutzutage basiert nicht nur GNOME auf GTK+, sondern auch andere Desktop-Umgebungen wie Xfce, LXDE und der ROX-Desktop sowie unzählige Einzelprogramme. Wenn von GTK+ die Rede ist, spricht man von der C Bibliothek, mit GTK ist das ganze Framework gemeint.
GTK ist für nahezu jede Plattform verfügbar. Es läuft auf allen unixoiden Systemen (Unix, GNU/Linux, BSD, Mac OS X), auf Windows und auf mobilen Geräten. Eine Portierung gestaltet sich äußerst leicht, da GTK seine Widgets selber zeichnet und somit nur grundlegende Zeichenoperationen angepasst werden müssen. Die Kehrseite ist, dass sich GTK auf einigen Plattformen fremd anfühlt, weil native Widgets nur nachgeahmt und nicht nativ gerendert werden.
Obwohl es in C umgesetzt wurde, ist die Bibliothek hochgradig objektorientiert und unterstützt andere Sprachparadigmen, weil von Anfang an ein Augenmerk auf die Realisierung verschiedenster Sprachanbindungen gelegt wurde. Es existiert eine Vielzahl von Bindings
:
| Offiziell unterstützte Anbindungen | ||
| Sprache | Paket | Weblink |
| C++ | libgtkmm-2.4 | gtkmm |
| C# | gtk-sharp2 | Gtk# |
| Java | libjava-gnome-java | java-gnome |
| Python | python-gtk2 | PyGTK |
| JavaScript | libgjs-dev | Gjs |
| libseed-dev | Seed | |
| Perl | libgtk2-perl | gtk2-perl |
| Auf C und GObject aufsetzende Sprachen (native GTK+-Unterstützung) | ||
| Vala | valac | Vala |
| Genie | Genie | |
| GOB | gob2 | GOB |
| Andere Sprachen | ||
| Ada | libgtkada2.14.2-dev | GtkAda |
| D | GtkD | |
| Erlang | gtkNode | |
erlgtk | ||
Erlang/Gtk | ||
| FreeBASIC | GTK+tobac2 | |
| FreePascal | (Teil der Free Component Library (FCL)) | |
| Guile | guile-gnome2-gtk | guile-gnome |
| Haskell | libghc6-gtk-dev | Gtk2Hs |
| Lua | liblua5.1-gnome-dev | LuaGtk2 |
| OCaml | liblablgtk2-ocaml-dev | LablGTK |
| PHP | PHP-GTK | |
| R | r-cran-rgtk2 | RGtk2 |
| Ruby | ruby-gnome2 | ruby-gnome2 |
| Smalltalk | libgtk2-gst | GNU Smalltalk |
Smalltalk YX | ||
Squeak | ||
| Tcl | Gnocl | |
Um mit GTK+ 3.x einfache Programme erstellen zu können, reicht es folgendes Paket zu installieren, das ab Ubuntu 11.04 Natty Narwhal vorhanden ist:
libgtk-3-dev (universe)
Für ältere Ubuntu-Versionen gibt es nur GTK+ 2.x:
libgtk2.0-dev (universe)
Seine Programme kann man wie gewohnt in seinem Lieblingseditor schreiben, oft wird GNU Emacs verwendet. Eine für die Entwicklung unter GNOME spezialisierte Entwicklungsumgebung ist Anjuta.
Wer seine Oberflächen am liebsten zusammenklickt, kann dies über Glade
erledigen, der in einigen IDEs (darunter Anjuta) integriert ist.
Für die Entwicklung von GTK+-Programmen ist eine gute Dokumentation unerlässlich. Es wird dringendst empfohlen, noch folgende Pakete zu installieren:
devhelp (universe)
libgtk-3-doc (universe)
bzw. wenn man noch mit GTK+ 2.x arbeitet:
devhelp (universe)
libgtk2.0-doc (universe)
Natürlich kann hier keine komplette Einführung in GTK+ und die zahlreichen verwendeten Konzepte gegeben werden. Für das Erlernen von GTK+ sei das unten verlinkte Tutorial hervorgehoben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <gtk/gtk.h> static void on_button_clicked (GtkWidget *widget, gpointer data) { g_print ("Hello World\n"); } int main (int argc, char *argv[]) { GtkWidget *window, *button; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); button = gtk_button_new_with_label ("Hello World"); g_signal_connect (button, "clicked", G_CALLBACK (on_button_clicked), NULL); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show_all (window); gtk_main (); return 0; } |
Der Compiler benötigt für GTK+ eine ganze Reihe von Optionen. Glücklicherweise lassen sich diese über pkg-config automatisch hinzufügen:
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-3.0`
bzw. für GTK+ 2.x:
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-2.0`
Quickly - Programme für Ubuntu mit GTK und Python entwickeln
GNOME-Tutorials zu GTK+ 3.x mit C, C++, Python, Javascript und Vala 
Glade
- GUI zum Designen von GTK-Oberflächen
Diese Revision wurde am 24. Oktober 2011 um 15:23 Uhr
von aasche erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Programmierung, GNOME, Xfce, LXDE
2004 – 2011 ubuntuusers.de • Einige Rechte vorbehalten