GTK

מתוך המכלול, האנציקלופדיה היהודית
(הופנה מהדף GTK+)
קפיצה לניווט קפיצה לחיפוש
GTK+‎
GTK+ Logo
שגיאה ביצירת תמונה ממוזערת:
GTK+ Widget Factory - תכנית GTK+‎ המציגה את מרבית יישומניה
GTK+ Widget Factory - תכנית GTK+‎ המציגה את מרבית יישומניה
מפתח קרן GNOME
מחזור חיים 14 באפריל 1998 – הווה (26 שנים)
מערכת הפעלה חוצה־פלטפורמות
נכתבה בשפות C
סוג רישיון הרישיון הציבורי הכללי המוקטן של גנו גרסה 2
קטגוריה ערכת כלים
www.gtk.org

GTK (לשעבר GTK+‎; קיצור של GIMP Toolkit) היא תוכנת ערכת כלים חוצה פלטפורמות ליצירת ממשק משתמש גרפי.

התוכנה היא מהכלים הפופולריים יותר לשימוש על מנהל החלונות X (יחד עם Qt)[1]. היא מופצת תחת הרישיון הציבורי הכללי המוקטן של גנו (GNU LGPL), המאפשר הן לתוכנות חופשיות והן לקנייניות להשתמש בה. השם GTK+‎ מקורו ב־GTK, ותו הפלוס שנוסף משמעותו הוספת תכונות מונחות־עצמים[2].

ערכת הכלים 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+‎ הוסבה לשפות תכנות רבות, אותן ניתן לראות בטבלה הבאה[3]:

קובץ:Programing Hello World in PyGtk 3.png
תוכנית Hello world ב־GTK+3 שנכתבה ב־Python
שפה שם הספרייה נתמך ?
עדה GtkAda תמיכה עד גרסה[4]3.14
C GTK+‎ שפת אם
C++‎ gtkmm כן
C#‎ Gtk#‎ תמיכה עד גרסה 2.12
D gtkD תמיכה מגרסה 2.22
Haskell gtk2hs כן
Fortran gtk-fortran תמיכה עד גרסה 2.24 & 3.0
FreeBASIC GladeToBac תמיכה עד גרסה 2.8 & 3.0
FreePascal GTK 2.16 עם תמיכה חלקית של גרסאות מאוחרות יותר
Java java-gnome כן
JavaScript seed/GJS כן
Lua LuaGtk תמיכה חלקית עד גרסה 2.16
Lua lgob תומך בכל הגרסאות מגרסה 2.16
Perl Gtk2-Perl כן
PHP PHP-GTK תמיכה חלקית עד גרסה 2.20
Python PyGTK כן
R RGtk2 תמיכה חלקית עד גרסה 2.12
Ruby ruby-gtk2 כן
Vala שפות שנכתבו עבור מערכת GObject כן
Erlang gtkNode תמיכה עד גרסה 2.16
GOB שפות שנכתבו עבור מערכת GObject כן
Gambas gambas3-gb-gtk כן
Genie שפות שנכתבו עבור מערכת GObject כן
OCaml LablGTK תמיכה עד גרסה 2.16
Smalltalk Smalltalk GTK GNU Smalltalk, Smalltalk YX, Squeak
Tcl Gnocl כן
Wrapl WraplGTK תמיכה חלקית עד גרסה 2.22
many wxWidgets 2.24, 3 בפיתוח
צילום מסך של Anjuta פועלת בתוך הדפדפן מוזילה פיירפוקס באמצעות תמיכת GTK+3 ב־HTML5 ומציגה את הקוד של Geany.


מעצבים גרפיים

היו מספר ניסיונות ליצור מעצבי ממשק משתמש גרפי. המיזמים הבאים פעילים, נכון ליוני 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.

סדרת הפצה תאריך פרסום ראשון השיפורים העיקריים גרסה משנית אחרונה
1.0 (אורכב 22.02.2012 בארכיון Wayback Machine) 14 באפריל 1998 גרסה יציבה ראשונה 1.0.6
1.2 27 בפברואר 1999 יישומונים חדשים (GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree,
GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket), תמיכה בערכות נושא.
1.2.10
2.0 11 במרץ 2002 הסבת עיבוד הטקסט ל־Pango הכוללת תמיכה ביוניקוד UTF-8, תמיכה בשפות מימין לשמאל ושפות מורכבות יותר; שכתוב הקוד לשימוש ב־GObject, יישומון טקסט חדש. 2.0.9
2.2 22 בדצמבר 2002 תמיכה בריבוי תהליכים 2.2.4
2.4 16 במרץ 2004 יישומונים חדשים (GtkFileChooser, GtkComboBox, GtkComboBoxEntry,
GtkExpander, GtkFontButton, GtkColorButton)
2.4.14
2.6 16 בדצמבר 2004 יישומונים חדשים (GtkIconView, GtkAboutDialog, GtkCellView, GtkFileChooserButton,
GtkMenuToolButton), שיפורי ביצועים רבים.
2.6.10
2.8 13 באוגוסט 2005 שילוב הספרייה לעיבוד גרפיקה וקטורית Cairo 2.8.20
2.10 3 ביולי 2006 יישומונים חדשים (GtkStatusIcon, GtkAssistant, GtkLinkButton, GtkRecentChooser,
GtkCellRendererAccel, GtkCellRendererSpin), תמיכה בהדפסה (GtkPrintOperation), תמיכת גרירה ושחרור ב־GtkNotebook, תמיכה ב־OS X וב־DirectFB.
2.10.14
2.12 14 בספטמבר 2007 תמיכה ברמז־צץ. GtkBuilder. יישומונים חדשים (GtkScaleButton, GtkVolumeButton, GtkRecentAction). הוסרה התמיכה ב־Windows 98/ME. תמיכה בריבוי צגים. 2.12.12
2.14 4 בספטמבר 2008 תמיכה בטעינת JPEG. נוסף ממשק (GtkToolShell) עבור מכולות המכילות יישומוני GtkToolItem. תמיכה בהשלמה אוטומטית בפתיחת קבצים. יישומון חדש (GtkMountOperation). 2.14.7
2.16 13 במרץ 2009 ב־GdkKeymap נוספה אזהרה ב־Caps Lock בעת הכנסת סיסמה. הטיפול בקיצורי־המקשים שונה. 2.16.6
2.18 23 בספטמבר 2009 נוסף יישומון GtkInfoBar. שיפור דו־שיח לבחירת קובץ. GDK נכתב מחדש לשימוש בצד הלקוח של מנהל החלונות. יישומון נוסף חדש (GtkEntryBuffer), אשר הופרד מ־GtkEntry. 2.18.9
2.20 23 במרץ 2010 יישומונים חדשים (GtkSpinner, GtkCellRendererSpinner, GtkToolPalette, GtkOffscreenWindow),
שופר יישומון בחירת קובץ, טיפול במקלדת GDK, נתוני Gobject Introspection נכללו ב־GTK+‎. הגדרות מאקרו רבות הפכו למיושנות. תמיכה ראשונית ב־Tracker לחיפוש קבצים.
2.20.1
2.22 23 בספטמבר 2010 Gdk Pixbuf הופרד מ־GTK+‎ למודול נפרד, רוב ציורי GTK+‎ הוסב ל־Cairo ונתונים פנימיים רבים הפכו לפרטיים, לקראת GTK+3‎. 2.22.1
2.24 30 בינואר 2011 עדכון ושיפור התמיכה ב־Microsoft Windows. התווסף יישומון חדש המפשט את GtkComboBox
(GtkComboBoxText), ‏ GtkBuilder תומך בתגי טקסט ובכפתורי תפריטים.
2.24.23
3.0 10 בפברואר 2011 גרסה משמעותית חדשה, אשר ניתנת להתקנה במקביל ל־GTK+ 2.x. ‏ הושלמה הסבת הציור מ־GDK ל־Cairo, תמיכה טובה יותר בריבוי התקני קלט, ערכת נושא מבוססת CSS ואפשרות לערכת נושא כהה. כל הפונקציות והמחלקות שסומנו כמיושנות הוסרו. היישומון GtkProgress הוסר. GdkRegion הוסר והוחלף ב־cairo_region_t. נתונים רבים הפכו לפרטיים.
יישומונים חדשים (GtkAppChooserButton, GtkNumerableIcon, GtkVolumeButton, GtkSwitch).
3.0.12
3.2 25 בספטמבר 2011 ניסיון לתמוך במערכת Wayland וב־HTML5, תיבת דו־שיח חדשה לבחירת גופן, יישומונים חדשים
(GtkLockButton, GtkOverlay, GtkFontChooser, GtkFontChooserDialog).
3.2.0
3.4 26 במרץ 2012 תמיכה בתפריט GtkApplication, בוחר־צבע חדש, תמיכה במכשירי מגע, תמיכה בגלילה חלקה,
GtkScrolledWindow תומך בגלילה קינטית עם מכשירי מגע, שופרה התמיכה ב־OS X, גרסה ראשונה של GTK+3‎ הפועלת היטב על חלונות, תמיכה ב־Wayland עודכנה, כפתורי ספין קיבלו מבט נגישות חדש, תמיכת הנגישות ב־TreeView נכתבה מחדש ועובדת הרבה יותר טוב, התמיכה בערכת נושא דמוית CSS מלאה יותר. תמיכה ראשונה ב־HTML5 שעובדת. תיקונים רבים בתמיכה ב־Windows. יישומון בדיקה חדש (widget-factory).
3.4.4
3.6 25 בספטמבר 2012 יישומונים חדשים (GtkLevelBar, GtkSearchEntry, GtkMenuButton), ‏ נוספה תמיכה לפריסת גובה לרוחב ב־GtkIconView, נוספה תמיכה לפריסה אנכית עבור GtkSpinButton. ‏ GtkEntry תומך בהגדרת תכונות Pango לטקסט. נוספה תמיכה ברקע ומעברים מרובים לערכת הנושא ואף תמיכה מוגבלת בהנפשות CSS. 3.6.5
3.8 26 במרץ 2013 לראשונה תמיכה מלאה ב־Wayland. נוסף broadwayd, שרת תצוגה חדש המאפשר ריבוי יישומים בדפדפן באמצעות HTML5. שיפורים רבים בביצועים. תמיכה בתפריטים קופצים ידידותיים במכשירי מגע. מסגרת סנכרון עם Mutter מבטיחה הנפשות ושינויי גודל חלקים. שיפור התמיכה בגופנים, המאפשר להגדיר מאפייני גופן באמצעות CSS. 3.8.9
3.10 23 בספטמבר 2013 הושלמה התמיכה ב־Wayland. שופרה התמיכה ב־Broadway. תמיכה ביצירת יישומונים מורכבים מ־GtkBuilder. תמיכה בקישוטי צד־לקוח, הכוללת סיפוק שורת כותרת מותאמת. תמיכה בתצוגה ברזולוציה גבוהה. גלילה משופרת, הכוללת תמיכה בגלילה חלקה יותר ובמצב הגדלה.
יישומונים חדשים (GtkHeaderBar, GtkPlacesSidebar, GtkStack, GtkStackSwitcher, GtkRevealer, GtkSearchBar ו־GtkListBox).
ניהול גאומטריה משופר, המאפשר יישור טקסט טוב יותר. תמיכה לפריסת גובה לרוחב ל־GtkEventBox ול־GtkCheckButton. פונקציות והגדרות רבות הפכו למיושנות, אשר תוסרנה ב־GTK+ 4.
3.10.9
3.12 25 במרץ 2014 שיפור התמיכה ב־Wayland. שיפור התמיכה ב־Brodway, העושה כעת שימוש בקישוטי צד־לקוח ותומך במסך מגע. שיפור הנגישות. יישומונים חדשים: GtkFlowBox, GtkActionBar ו־GtkPopover. מראה חדש ללשוניות. מראה חדיש עם קישוטי צד־לקוח בתיבות דו־שיח. GtkBox יכול להכיל יישומון במרכז. ניתן להסתיר פריטים בתפריטים מבוססי מודל. תמיכה ב־Google Cloud בדו־שיח להדפסה. שיפורים רבים לקישוטי צד־לקוח. הרבה מכולות קיבלו היכולת לצייר רקע ומסגרת. GtkApplication מאחסן ומטפל במאיצים עבור GActions. לא נדרש מזהה עבור כל עצם ב־GtkBuilder. מספר פונקציות והגדרות הפכו למיושנות, אשר תוסרנה ב־GTK+ 4. 3.12.2
3.14 22 בספטמבר 2014 תמיכה במסך מגע ובגרירה ושחרור ב־Wayland. ערכת הנושא בבררת מחדל הוחלפה עם ב־Adwaita, ששוכתבה ב־CSS/SASS. תמיכת CSS בערכת הצלמיות. תמיכה במחוות במסך מגע, מרבית היישומים תומכים בכך. נוסף מנפה שגיאות „מפקח” / Inspector. נוסף יישומון קטן לסיור בצלמיות המותקנות. תמיכה בבחירה מרובה ב־GtkListBox. תמיכה טובה ביותר בשילוב תפריטים ב־OS X. פונקציות והגדרות רבות הפכו למיושנות, אשר תוסרנה גם הן ב־GTK+ 4. 3.14.1

התפתחויות עתידיות

מפתחים חושבים על כיוונים חדשים לספרייה, כולל הסרה של רכיבי ה־API המוקטנים והוספת מערכת משולבת תרשים הסצנה, בדומה לספריית הגרפיקה Clutter, שזה למעשה שילוב של GTK+‎ עם OpenGL.

GTK+‎ "שלום עולם"

דוגמה לתוכנית GTK+‎ בשפת התכנות C

הקוד הבא מציג תוכנית "שלום עולם" עם 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

הקוד הבא מציג תוכנית "שלום עולם" עם 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

שימוש

צילום מסך של GIMP עם גרסה 2.99.0 של GTK+ 3‎ שאחראית על ניהול מרכיבי הממשק של התוכנית, כולל תפריטים, כפתורים ושדות קלט.

GTK+‎ נמצא בשימוש נרחב, בעיקר בסביבות דמויות יוניקס. החל מעורכי טקסט פשוטים, המשך בסביבות פיתוח משולבות, בדפדפנים ובתוכנות לעיבוד גרפיקה וקטורית, וכלה במנהלי חלונות ובסביבות שלמות. להלן חלק מהעושים שימוש ב־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. אינו מפותח עוד.

מנהלי חלונות נוספים

יישומים

יישומים פופולריים רבים משתמשים ב־GTK+‎, ביניהם:

ראו גם

קישורים חיצוניים

ויקישיתוף מדיה וקבצים בנושא GTK+‎ בוויקישיתוף

הערות שוליים


הערך באדיבות ויקיפדיה העברית, קרדיט,
רשימת התורמים
רישיון cc-by-sa 3.0

32447511GTK