H βιβλιοθήκη GTK+, GIMP Toolkit, είναι μια βιβλιοθήκη για τη δημιουργία γραφικών διεπιφανειών χρήστη (graphical user interface). Aρχικά δημιουργήθηκε για το πρόγραμμα GNU Image Manipulation Program (GIMP), και έπειτα χρησιμοποιείται σε πολλά άλλα προγράμματα, όπως το inkscape και το evolution. Το GNOME βασίζεται επίσης στη βιβλιοθήκη GTK+, όπως και το Xfce. Είναι γραμμένη σε C, αλλά έχει συνδέσεις (bindings) και για άλλες γλώσσες, όπως c++, python, java, perl κ.α. Οφείλω να πω ότι υπάρχει και για windows. Η άδεια διανομής είναι η LGPL (lesser GPL), πράμα που επιτρέπει τη χρήση της ακόμη και σε εμπορικά προγράμματα κλειστού κώδικα.
H xρήση της είναι αρκετά εύκολη και το λέω γιατί ποτέ δεν είχα προγραμματίσει gui σε C γράφοντας κώδικα. Η αλήθεια είναι ότι μόνο μια φορά είχα προγραμματισει gui και είχα χρησιμοποιήσει κάτι ακατονόμαστα προϊοντα στα οποία έκανες click μόνο. Είναι επίσης αλήθεια ότι στη C δεν είχα γράψει ποτέ κώδικα παραπάνω από 20 γραμμές. Με αυτά υπόψη ξεκίνησα να διαβάζω το [2]. Το οποίο είναι καλόγραμμένο, στα αγγλικά βέβαια, και έχει πολλά παραδείγματα, τα οποία εξηγεί διεξοδικά. Είναι απαραίτητο βέβαια να γνωρίζει κανείς κάποια πράματα για μεταγλώττιση (compile) και για Μakefiles (δες στους οδηγούς του forum).
Υπάρχουν βεβαία κομμάτια που δεν είναι καλά τεκμηριωμένα, όπως τα drawing area και curves widgets. Παρ'όλαυτα ούτε η χρήση αυτών αποδείχθηκε δύσκολη, μιας και βρέθηκε αρκετός ελεύθερος κώδικας από τον οποίο μπορούσαν να αντληθούν πληροφορίες.
Εκτός από τη gtk+, ένα άλλο απαραίτητο πακέτο είναι το pkg-config, που δημιουργεί τις απαραίτητες παραμέτρους για τη μεταγλώττιση (compiling & linking flags). Για IDE χρησιμοποιήσαμε το geany, ελαφρύ και απλό, το οποίο βρίσκεται στα repositories.
Δεν πρέπει επίσης να ξεχνάμε το εργαλείο glade που διευκολύνει τη δημιουργία gui. Παρόλ'αυτά δεν χρησιμοποιήθηκε μιας και δεν είχε παιδαγωγικό σκοπό
Παρακάτω μπορείτε να βρείτε μερικές χρήσιμες ιστοσελίδες:
[1] http://www.gtk.org/
[2] http://library.gnome.org/devel/gtk-tutorial/stable/
[3] http://glade.gnome.org/



