GTK

GTK (לשעבר GTK+‎; קיצור של GIMP Toolkit) היא תוכנת ערכת כלים חוצה פלטפורמות ליצירת ממשק משתמש גרפי. התוכנה היא מהכלים הפופולריים יותר לשימוש על מנהל החלונות X (יחד עם Qt). היא מופצת תחת הרישיון הציבורי הכללי המוקטן של גנו (GNU LGPL), המאפשר הן לתוכנות חופשיות והן לקנייניות להשתמש בה. השם GTK+‎ מקורו ב־GTK, ותו הפלוס שנוסף משמעותו הוספת תכונות מונחות־עצמים. ערכת הכלים GTK+‎ פותחה בבסיסה לתוכנת עריכת התמונה החופשית GIMP, על ידי פטר מאטיס וספנסר קימבל, חברים באגודת המחשוב XCF. נכון ל־2014 התוכנה מתוחזקת על ידי חברי קרן GNOME. GTK+‎ היא תוכנת ערכת כלים מונחית־עצמים הכתובה בשפת התכנות C. היא עושה שימוש במערכת GObject למכוונות העצמים שלה. בשרת התצוגה X11, נעשה שימוש ב־Xlib לציור יישומונים. השימוש ב־Xlib מספק גמישות ומאפשר ל־GTK+‎ לפעול בפלטפורמות בהן מערכת X Windows אינה זמינה. בעוד GTK+‎ מיועדת בעיקר למערכת X Windows, היא עובדת על פלטפורמות אחרות, לרבות Microsoft Windows ו־Mac OS X. קיימת תמיכה ב־HTML5 ובמערכת Wayland בגרסה נסיונית, הנמצאת בפיתוח מואץ. ניתן להגדיר ולשנות את מראה יישומוני GTK+‎. הדבר נעשה באמצעות מנועי תצוגה שונים. קיימים מספר מנועי תצוגה המנסים לחקות את מראה היישומונים על פלטפורמות שונות. ניתן להשתמש בספרייה הכתובה בשפה אחת לשפות נוספות באמצעות הסבת הספרייה. GTK+‎ הוסבה לשפות תכנות רבות, אותן ניתן לראות בטבלה הבאה: היו מספר ניסיונות ליצור מעצבי ממשק משתמש גרפי. המיזמים הבאים פעילים, נכון ליוני 2013: Glade, תומך GtkBuilder, שהוא תבנית GTK+‎ מובנה בתבנית תיאור ממשק משתמש גרפי. Crow Designer, נשען על תבנית GuiXml וספרייה משלו - GuiLoader. פיתוחו הופסק ב־2011. Stetic, חלק מ־MonoDevelop, מכוון Gtk#‎. GTK+‎ תוכננה במקור לשמש את תוכנת העיצוב של גנו, GIMP, כתחליף לערכת הכלים Motif. תחילת דרכה הייתה כאשר פטר מאטיס, אז מפתח Motif, לא היה מרוצה ממנה והחל לכתוב ערכת כלים משלו בשם GIMP Toolkit, אשר החליפה בהצלחה את Motif. לבסוף GTK ‏ (קיצור של GIMP Toolkit) נכתבה מחדש בצורה מונחית עצמים והייתה ל־GTK+‎, אשר שוחררה לראשונה במקביל לגרסה 0.99 של GIMP. גרסה 2.0.0 של GTK+‎ הציגה מספר רב של תכונות חדשות, ביניהן עיבוד טקסט משופר באמצעות Pango, מנוע ערכת נושא חדש, שיפור הנגישות באמצעות כלים מתאימים, תמיכה מלאה ביוניקוד UTF-8 וגמישות יתרה. החל מגרסה 2.8, GTK+‎ תלויה בָּספרייה לעיבוד גרפיקה וקטורית Cairo. לאחר כמעט עשור של פיתוח ענף גרסה 2 של GTK+‎, שוחררה גרסה 3.0.0 של GTK+‎, בה נתונים פנימיים רבים הפכו לפרטיים, קוד רב שוכתב, נוספו יישומונים חדשים רבים ושופרו הביצועים. כמו כן נוספה תמיכה בערכת נושא הכתובה בתחביר דמוי CSS וערכת נושא כהה, ונוסף לזה הטיפול בציור הועבר מ־GDK לספרייה Cairo. בהמשך, נוספה תמיכה ב־Wayland, מנהל התצוגה הבא של לינוקס, וב־HTML5 (כלומר - נוספה אפשרות להציג יישומי GTK+3 בתוך דפדפנים התומכים ב־HTML5). גרסה זו ניתנת להתקנה במקביל לגרסה 2 של GTK+‎. על אף שעברו למעלה משנתיים משחרור GTK+ 3.0, לא כל יישומי GTK+ 2 הוסבו לגרסה החדשה, כך שיישומים פופולריים רבים עודם עושים שימוש ב־GTK+ 2. כך, הדפדפן מוזילה פיירפוקס עודנו עושה שימוש ב־GTK+ 2 המיושן מעט, והסבתו ל־GTK+ 3 עודנה בפיתוח. כך גם חבילת היישומים המשרדיים LibreOffice. ישנם יישומים להם קיים ענף פיתוח להסבתם ל־GTK+ 3, כמו תוכנת הגרפיקה הממוחשבת GIMP, ותוכנה עיבוד הגרפיקה הווקטורית אינקסקייפ, אשר לכל אחת מהן קיימת גרסה עובדת תחת GTK+ 3. יש לציין כי מרב יישומי GNOME כבר הוסבו ל־GTK+ 3. מפתחים חושבים על כיוונים חדשים לספרייה, כולל הסרה של רכיבי ה־API המוקטנים והוספת מערכת משולבת תרשים הסצנה, בדומה לספריית הגרפיקה Clutter, שזה למעשה שילוב של GTK+‎ עם OpenGL. הקוד הבא מציג תוכנית "שלום עולם" עם GTK+‎ בשפת התכנות C. תוכנית זו יוצרת חלון עם הכותרת "שלום עולם!" ותווית עם טקסט דומה: #include <gtk/gtk.h> int main (int argc, char **argv) { GtkWidget *window; GtkWidget *label; gtk_init (&argc, &argv); /* יצירת החלון הראשי, היישמון העליון ביותר */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* קביעת כותרת החלון */ gtk_window_set_title (GTK_WINDOW (window), "שלום עולם!"); /* ** RTL כאשר יתקבל מהמשתמש אירוע המבקש לסגור את החלון ** gtk_main_quit אז נקרא לפונקציה ** RTL פונקציה זו תפסיק את הלולאה הראשית על ידי החזרת ערך 0 */ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* יצירת יישומון "תווית" וקביעת הטקסט שהוא יציג */ label = gtk_label_new ("שלום עולם!"); gtk_container_add (GTK_CONTAINER (window), label); /* הכנסת יישומון התווית לחלון הראשי */ gtk_widget_show_all (window); /* הצגת היישומונים */ gtk_main (); /* התחלת הלולאה הראשית, מבלי לעשות דבר עד לקבלת אירוע בקשה לסגירת החלון */ return 0; } באמצעות GCC ו־pkg-config, עם מסוף יוניקס (או MinGW או Cygwin על חלונות), ניתן להדר קוד זה עם הפקודה הבאה (בהנחה שקוד המקור נמצא בקובץ "helloworld.c"): gcc -Wall -o "helloworld" "helloworld.c" `pkg-config --cflags --libs gtk+-3.0` הקוד הבא מציג תוכנית "שלום עולם" עם GTK+‎ בשפת התכנות Vala. תוכנית זו יוצרת חלון עם הכותרת "שלום עולם!" ותווית עם טקסט דומה: using Gtk; int main (string[] args) { Gtk.init (ref args); var window = new Window (); window.title = "שלום עולם!"; window.border_width = 10; window.window_position = WindowPosition.CENTER; window.set_default_size (350, 70); window.destroy.connect (Gtk.main_quit); var label = new Label ("שלום עולם!"); window.add (label); window.show_all (); Gtk.main (); return 0; } הידור הקוד, באמצעות המסוף, מצריך כמובן הכללת הספרייה GTK+‎, מתבצע כך (בהנחה שקוד המקור נמצא בקובץ "helloworld.vala"): valac --pkg gtk+-3.0 helloworld.vala GTK+‎ נמצא בשימוש נרחב, בעיקר בסביבות דמויות יוניקס. החל מעורכי טקסט פשוטים, המשך בסביבות פיתוח משולבות, בדפדפנים ובתוכנות לעיבוד גרפיקה וקטורית, וכלה במנהלי חלונות ובסביבות שלמות. להלן חלק מהעושים שימוש ב־GTK+‎. GNOME מבוסס על GTK+‎, כאשר כל תוכניות GNOME מבוססות גם הן על GTK+‎. כבר הוסב לגרסה 3 של GTK+‎. Xfce מבוסס על GTK+ 2‎, חלקו הקטן הוסב ל־GTK+ 3. Cinnamon - פיצול הקוד של GNOME Shell, העושה שימוש ב־GTK+ 3 MATE - פיצול הקוד של 2 GNOME, במטרה להישאר עם תכונותיו בגרסה זו. מבוסס על GTK+ 2. הוסב ל־GTK+ 3. LXDE מבוסס על GTK+‎ Sugar הוא סביבת שולחן עבודה המכוון כלפי חינוך ילדים, העושה שימוש ב־GTK+‎ וב־PyGTK תוכניות GTK+‎ אינן דורשות סביבת שולחן עבודה מלאה העושה שימוש ב־GTK+‎. אם הספריות הדרושות מותקנות, תוכניות GTK+‎ תוכלנה לרוץ על סביבות או מנהלי חלונות מבוססי X11, כולל Mac OS X אם X11.app מותקן. דוגמה טובה לכך היא סביבת הפיתוח המשולבת הקלה Geany, הפועלת על כל הסביבות, ללא תלות בשימוש של הסביבה ב־GTK+‎. GTK+‎ אף יכולה לפעול תחת Microsoft Windows, שמה היא משמשת מספר יישומים פופולריים כגון Pidgin ו־GIMP. מנהלי החלונות הבאים משתמשים ב־GTK+‎: Mutter - מנהל החלונות של סביבת שולחן עבודה GNOME Xfwm - מנהל החלונות של סביבת שולחן העבודה Xfce Muffin - מנהל החלונות של סביבת שולחן העבודה Cinnamon. זהו למעשה פיצול הקוד של Mutter. Metacity - מנהל החלונות של סביבת שולחן העבודה GNOME בגרסה 2. הוחלף ב־Mutter. אינו מפותח עוד. Aewm AfterStep Amaterus IceWM Sawfish Wmg יישומים פופולריים רבים משתמשים ב־GTK+‎, ביניהם: Firefox - דפדפן המנוהל על ידי קרן מוזילה LibreOffice - חבילת יישומים משרדיים חופשית Inkscape - עורך גרפיקה וקטורית GIMP - תוכנה לעיצוב גרפי Pidgin - תוכנת מסרים מיידיים Chromium - דפדפן מאובטח המשתמש ב־WebKit ומפותח במידה רבה על ידי חברת גוגל Epiphany - הדפדפן הרשמי של GNOME Midori - דפדפן מזערי Abiword - מעבד תמלילים Gnumeric - תוכנת גיליון אלקטרוני OpenShot - תוכנת עריכת וידאו למערכות לינוקס Pitivi - עורך וידאו Ardour - מעבד אודיו דיגיטלי Evince - מציג מסמכי PDF, PostScript, DjVu, TIFF ו־DVI Geany - סביבת פיתוח משולבת מזערית GnuCash - תוכנה הנהלת חשבונות GNOME Qt אתר האינטרנט הרשמי של GTK (באנגלית) מדיה וקבצים בנושא GTK+‎ בוויקישיתוף דף הבית תיעוד GTK+ 3‎ קבצים בינאריים של GTK+ 2 & 3 לחלונות פיתוח יישומי X שאלות נפוצות באתר GNOME: מהו תו ה־+ ב־GTK+‎ שפות GTK+‎ AdaCore, AdaCore/gtkada, GitHub