GNOME 3.14 שוחרר !

צהריים טובים.

לאחר מחזור פיתוח בן שישה חודשים, היום שוחררה גרסה 3.14 של שולחן העבודה GNOME !

GNOME-3.14.0-Hebrew

גרסה זו מכילה 28859 שינויים שנרשמו ב־Git על ידי 871 תורמים, בהשוואה ל־34236 שינויים על ידי 1140 תורמים ב־3.12.

אחוז התרגום עומד על 84% (36629 מחרוזות מתורגמות, 2698 מעורפלות ו־3966 שאינן מתורגמות), בהשוואה ל־84% (36160 מחרוזות מתורגמות, 2868 מעורפלות ו־3874 שאינן מתורגמות) ב־3.12, לעומת 84% ב־3.10. על התרגום בעיקר אני אחראי, יחד עם ירון ואנטולי. אנו מקווים שנמצא זמן להעלות את אחוז התרגום לקראת 3.16.

כל המעוניין לעזור במלאכת התרגום יותר ממוזמן להתחבר לערוץ ‎#gnome-il ב־GimpNet ולתאם אתי מה הוא רוצה לתרגם, כדי לחסוך עבודה כפולה. לחלופין ניתן לשלוח לי הודעה לדוא״ל (yoseforb תחת gnome dot org).

יש לציין שהתרגום מתבצע על פי כללי התרגום של מיזם גֶּזֶר.

תכף יכנס החג ואנו ניכנס לשנה החדשה, לכן לא אסקור כאן דבר על התכונות עצמן, אלא אעשה זאת מאוחר יותר, בתמצות, כיוון שסקרתי די בהרחבה את התכונות ברשומה קודמת.

להלן מוטמע סרטון המציג את GNOME 3.14. קריינות על ידי קארן סנדלר, לשעבר מנכ״ל קרן GNOME:

על כל פנים, מחזור הפיתוח הבא, 3.15/3.16 כבר התחיל. לא אמתין במתח לראות מה יהיה, אלא אכניס בעצמי שינויים. מזל טוב ובהצלחה ל־GNOME !

אנו נמצאים בפתחה של שנה חדשה. אני מאחל לכולם, מתוך מילות שיר שכתבה נעמי שמר בעיצומה של מלחמת יום הכיפורים – „לו יהי אנא – לו יהי כל שנבקש לו יהי”.

לשם שינוי אביא שתי הקלטות של השיר. אחת נעמי שמר שרה לבד, ולמרבה הצער לא שומעים חליל־צד ברקע. אבל אין כמו לשמוע את נעמי שמר עצמה.

ההקלטה השנייה היא של שלישיית „הגששים”, יחד עם הגששים. שם יש גם חליל־צד ברקע, ממש יפה.

ומה יותר יפה ? השנה הטובה :-)

בברכה,

יוסף אור

הנחיות ממשק אנוש – GNOME 3

ערב טוב.

מזה מספר שנים (להערכתי לפחות שלוש), בהן צוות העיצוב של GNOME, בהובלתו של Allan Day, עובדים על גרסה חדשה של הנחיות ממשק האנוש (איך התרגום ?) עבור GNOME 3.

מדובר למעשה בהנחיות לעיצוב יישום GTK+‎ או יישום GNOME (השניים לא בהחלט מוכרחים ללכת יחדיו).

hig-graphic-940
מתוך רשומה של Allan Day בנושא

כצופה מהצד על כתיבת ההנחיות, הדיונים וההתלבטויות, ולעתים אף כשותף להן, אוכל לומר שהמון מחשבה עומדת מאחורי ההחלטות לעצב כך ולא כך, וככל שחולף הזמן העיצוב הולך ונעשה שלם, רעיונות כלליים הופכים לעשירים בפרטים – וכאן הנקודה המעניינת בכל העיצוב מאחורי GNOME: הרעיון הכללי הוא אותו הרעיון מ־3.0, הן במעטפת והן בעיצוב היישומים. רק הפרטים הקטנים הולכים ומתבהרים ונעשים מלוטשים יותר ויותר.

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

מזה זמן רב ההנחיות החדשות זמינות בוויקי, שם הן נכתבו הלכה למעשה. לאחרונה הועתקו ההנחיות ל־Git. ניתן לקרוא את הנחיות באמצעות Yelp:
git clone git://git.gnome.org/gnome-devel-docs
cd gnome-devel-docs
yelp hig/C/index.page

לחלופין, ניתן לקרוא את ההנחיות מהוויקי שקישרתי לעיל, או מגרסת ה־HTML (אינה מתעדכנת משינויים) כאן.

ההנחיות עתידות להשתחרר באופן רשמי עם שחרור גרסה 3.14 של GNOME. אני מקווה שעד אז נראה אותן מופיעות בצורה מסודרת תחת מתחם GNOME.

כאן אני הופך להיות עקבי, ולא שוכח להביא שיר בסוף הרשומה.

בברכה,

יוסף אור

GNOME 3.14 מתקרב – מצב התרגום

ערב טוב.

ברשומה הקודמת סקרתי שינויים שנוספו לקראת הגרסה הבאה של GNOME, גרסה 3.14. מטבע הדברים, יחד עם שינויים אלה מגיעים שינויים רבים במחרוזות, כמו בכל גרסת פיתוח.

מחר, תכנס לתקפה הקפאת שינויי מחרוזות. קצת יותר משלושה שבועות מאוחר יותר, תשוחרר GNOME 3.14.0.

נכון לעכשיו, התרגום עומד על 83%, בהשוואה ל־84% ב־3.12. לא אפרט יותר, כיוון שאמשיך לעבוד על התרגום בחודש הקרוב.

מבדיקה בחודש האחרון ברשימת ההגשות ברשימה של GNOME, אני סופר 78 עדכוני תרגום. רובם עדכונים קטנים, מיעוטם גדולים יותר.

אם אדייק, רוב רובם של העדכונים הם עדכונים קטנים במיוחד, מספר בודד של מחרוזות. חלקם מגיע לכמה עשרות מחרוזות, אך לא מעבר.

אציין את תרגום gnome-disk-utility. לפני כחצי שנה תרגם אנטולי את היישום, אם כי בגרסה מעט ישנה שלו, כך שמרבית הממשק נותר באנגלית. אור ליום שישי האחרון עברתי על התרגום ונכחתי לראות שהוא איכותי בצורה יוצאת דופן. גיליתי שהיישום שימושי במיוחד (כשאתה מתרגם יישום, אתה יודע בדיוק מה הוא יכול לעשות). עדכנתי את התרגום. היה מדובר בעבודה של מספר שעות לאורך הלילה, אך זה היה כדאי. מרבית העבודה נעשתה על ידי אנטולי, כפי שציינתי תרגום מדהים. הוא תרגם תכונות של נתוני SMART בצורה מובנת למשתמש, משימה כלל לא פשוטה.

אנטולי תרגם לאורך זמן יישומים נוספים: ease, latexila, dia, transmageddon, regexxer. השניים האחרונים (משאל לימין) רק אמש. כמו כן תכף יכנס תרגום שלו ל־meld. כפי שציינתי, התרגומים שלו מעולים, ולעתים אני אף מתייעץ אתו – על כך אני יכול לומר רק תודה ויישר כח !

אציין גם את gnome-maps, כדי לשאול לעזרה. תרגמתי את gnome-maps ואף הצלחתי להפעיל לרגע את היישום. היישום יודע למצוא מסלולי נסיעה לרכבים, אופניים ואף מסלול הליכה. היישום עושה שימוש ב־GraphHopper כשרת לקבלת המסלול. השרת המדובר לא מתורגם לעברית, ועל כן שמות הכבישים/רחובות מתורגמים ואילו הוראות כמו „להמשיך ישר” נותרו באנגלית. תרגום המחרוזות בשרת, קראו היטב, מתבצע דרך השירות הקנייני Google Docs. אותי פחות מעניין שמדובר בשירות קנייני, פשוט כי הוא לא מיועד להיות כלי תרגום, גם אם היה חופשי.

דיווחתי על באג ב־gnome-maps, שם הפנו אותי לדף העזרה לתרגום של השרת המדובר. כאן ניתן למצוא את הדף ב־Google Docs.

על כן, אשמח אם מישהו יעזור לי בתרגום השרת ההוא, בהתאם לכללי התרגום של GNOME, כללי מיזם גזר. יותר עזרה בדרך לתרגום, טרם הצלחתי לתרגם ולו מחרוזת אחת.

על כל פנים, אני מקווה שעד לשחרור 3.14 נהיה עם יותר  מחרוזות מתורגמות בהשוואה ל־3.12.

הבטחתי שאביא בסוף כל רשומה שיר. אביא גם הפעם, שיר יפיפה – „בוא שיר עברי”.

בברכה,

יוסף אור

שר בכל השפות ומכה בכל קצב
מה שיש, פחות או יותר
אבל שיר עברי, הוא עוד כאן,
הוא עודנו, הוא איננו מוותר.

GNOME 3.14 מתקרב – החידושים

ערב טוב.

מזה זמן מה לא כתבתי, והנה אנו כבר צועדים לעבר הגרסה הבאה של GNOME, גרסה 3.14. הקפאת שינויי ממשק והקפאת שינויי API/ABI נכנסו זה מכבר לתוקף.

אסקור בקצרה את השינויים עד כה.

GTK+‎

במחזור פיתוח זה, בדומה לקודמיו, נעשתה עבודה רבה ב־GTK+‎.

  • ערכת הנושא Adwaita הועברה לקוד של GTK+‎, והוגדרה כבררת מחדל לכל מערכות ההפעלה. כל הערכה שוכתבה, ועושה כעת שימוש בתחביר CSS/SASS. התוצאה פשוט מדהימה.
    gtk3-widget-factory-27-08-2014
    GTK+ Widget Factory – 3.13.7

    כך זה היה נראה ב־3.12:

    gtk3-widget-factory-3-12
    GTK+ Widget Factory – 3.12

    בצילומים נוספים בהמשך הרשומה ניתן לראות יישומונים נוספים.

  • GtkInspector – מנפה שגיאות ל־GTK+‎, מבוסס על gtkparasite. ניתן לקרוא כאן, כאן וכאן על קצת התכונות במנפה שגיאות זה. אצרף רק צילום מסך, יחיד.

    GtkInspector-27-08-2014
    GtkInspector – 27.08.2014
  • תמיכה במחוות במסך מגע. המשמעות היא שניתן להגדיל ולהקטין טקסט/תמונות/מפה עם הזזת שתי אצבעות, לסובב תמונה, להעביר לדף הבא/הקודם וכן הלאה, באמצעות מחוות במסך מגע. Carlos Garnacho, שכתב את התמיכה הזו ואף הוסיף אותה ליישומים השונים, כתב לפני מספר חודשים רשומה, בה צירף הסרטה. אטמיע אותה כאן.

    הצילום הנ״ל בן כמה חודשים. מאז, אני מניח, בוצעו אי אילו שינויים, נוספו עוד דברים וכו׳. אשתדל להסריט בעצמי בקרוב.

  • שינויים אחרים, קטנים יותר:
    • הנפשה נוספת במעבר בין דפים ב־GtkStack, וכן סגנון להצגת דף הדורש „תשומת לב”.
    • GtkListBox תומך כעת בבחירה מרובה, ובשעה טובה גם קיבל סגנון יפה למצב בחירה, מעבר הסמן מעל שורה וכו׳.
    • כמובן, שופרה התמיכה ב־Wayland, יישומונים רבים הוגדרו כמיושנים וכו׳.
    • יישום קטן בשם gtk3-icon-browser, המאפשר לסייר בסמלים הקיימים. מאוד שימושי למפתחי יישומים המחפשים את הסמל הנכון לשימוש.
      gtk3-icon-browser-27-08-2014
    • תפריטים משולבים בתוך GtkPopover כבררת מחדל. זה נראה ממש טוב.
    • יישומון טווה חדש (GtkSpinner), וכן פס התקדמות קטן יותר (ניתן לראות את ההבדלים בשני הצילומים הראשונים למעלה).
  • חלונות ותיבות דו־שיח נראים טבעיים לכל הסביבות. זה נראה באמת טוב.
  • התפריטים המסורתיים (פס התפריטים) נראים טוב יותר.
    geany-new-menubars-27-08-2014
  • הנפשה עם גלילה, בכל מקום. גלילה חלקה, יפה ונוחה לעין שיעור. פשוט תענוג, אין מילה אחרת.
  • רענון לעיצוב תיבת דו־שיח לבחירת קבצים.
    new-file-chooser-dialog-27-08-2014
  • חשוב ביותר – תמיכה אוטומטית בסמלים/צלמיות ב־RTL. במקום שהמפתח יבדוק באופן ידני אם צריך להשתמש בסמל שונה בהתאם לכיווניות יישומון, הקוד המחפש את הסמל ב־GTK+‎ יודע לחפש קובץ עם סופית ‎-rtl או עם סופית ‎-ltr, בהתאם לכיווניות היישומון. לכל הסמלים הדורשים סמל הפוך ב־RTL נוספו קבצים עם סופית מתאימה. תודה למתיאס על כך. יש לציין שאני צריך למחוק את התמיכה הידנית שביצעתי בעשרות מקומות (הרוב הוסר, פה ושם עוד צריך להסיר קוד, עד שהוא יוסר לא יוצג אף סמל).

אגב, אני תוהה לעצמי – סמל או צלמית ?

 יישומים

מעטפת (GNOME Shell)

אין הרבה שינויים במעטפת, על אף ניסיון לעיצוב חדש למערכת ההתרעות (ככל הנראה יוחלט מה לממש, בגרסה הבאה).

  •  כמו ביישומי GTK+‎, נוספה תמיכה במחוות במסך מגע.
  • הושלמה התמיכה ב־Wayland, כולל תמיכה בהבחנה גבוהה ובמחוות, עד כמה שזכור לי.
  • הנפשה בהצגה ובהסתרת יישומים בסקירת היישומים, כמו הנפשה בהצגת תיקיית יישומים. הסרטה להלן.
  • הנפשה בפתיחת חלון חדש ובסגירת חלונות.
  • שופרה התמיכה בריבוי צגים, כמו היכולת לזכור איזה חלון הופיע באיזה צג ועוד.

הגדרות

  • שיתוף תוכן (קבצים, מסך, תוכן) בלוח „שיתוף”, לפי רשת.
  • תמיכה במדפסות JetDirect ו־LPD.
  • שירות איכון ניתן להשבתה בלוח „פרטיות”.
  • תיבות דו־שיח חדישות (שימוש ב־GtkHeaderBar).

סביר ושכחתי דבר זה או אחר.

מפות

נוספה תמיכה באיכון מיקום וכן במציאת נתיב לנסיעה בתחבורה ציבורית/רכב פרטי/הליכה. היישום לא פועל לי כרגע, לכן אין לי צילום מסך.

שעונים

נוסף ספק חיפוש. כלומר ניתן לחפש שם של עיר בחיפוש במעטפת, ולראות את השעה באותה עיר.

תמונות

תמיכה בתמונות מלקוח Google.

Gedit

  • תפריט דמוי בלון (GtkPopover) לפתיחת קבצים, המאפשר חיפוש בקבצים האחרונים שנצפו, ועוד שינויי פריסה בשורת הכותרת.
  • תפריט דמוי בלון להגדרות רוחב טאב, שימוש ברווחים, הגדרות הצגת השורות.
  • התפריט הראשי כעת הוא תפריט דמוי בלון, עם תתי תפריטים שמוצגים/מוסתרים במעבר מונפש.
  • התצוגה ממורכזת במסך מלא.
  • שינויים בצירופי מקשים שונים.

gedit-open-menu-popover-27-08-2014

מוזיקה

  • חיפוש כוללני, המאפשר לחפש ממקורות שונים ומיונים שונים של השירים (אמן, אלבום וכו׳).
  • תמיכה במקורות מרוחקים: Jamendo, Magnatune, UPnP/DLNA.
  • תמיכה ברשימות השמעה.
  • מפתוח הקבצים ורשימות השמעה עושה כעת שימוש ב־Tracker.

מציג מסמכים – Evince

עדכון לממשק ועוד כמה דברים נחמדים.

  • שימוש ב־GtkHeaderBar, בשעה טובה אין שורת כותרת ושורת פקדים, אלה שולבו לשורת כותרת אחת.
  • דף „מסמכים אחרונים”, המציג תצוגות ממוזערות של המסמכים שנצפו, כאשר היישום נפתח מהמעטפת (ללא פתיחת קובץ). די דומה לתצוגה הכללית ב־GONME Documents.
  • תמיכה במחיקת הערות.
  • מחוות:
    • גלילה רציפה (גרירת העמוד עם אצבע או שתיים) למעבר בין דפים.
    • שינוי גודל התצוגה באמצעות הזזת שתי אצבעות זו כלפי זו.
  • תוסף לדפדפן (קבצי PDF מוטמעים כעת בדפדפן GNOME/‏Epiphany).
  • שימוש ב־GtkPopover לתפריט לבחירת גודל הדף.
  • תמיכה בהבחנה גבוהה.
  • נוספו כמה קיצורי מקשים לכמה פעולות.

evince-recent-views-28-08-2014

מסמכים – GONME Documents

נוספה תמיכה בהבחנה גבוהה ומעט שיפורים בממשק.

עזרה – Yelp

היישום עוצב מחדש.

yelp-new-design-27-08-2014

מזג אוויר

היישום כולו עוצב מחדש, ואף יודע לאכן את המיקום הגאוגרפי הנוכחי ולהציג את מזג האוויר בהתאם.

gnome-weather-places-popover-27-08-2014

מחשבון

נוסף ספק חיפוש. כעת חיפוש במעטפת של המחרוזת „24 + 5” תציג אותה בצירוף התשובה.

סרטונים

  • הוסר התוסף לדפדפן GNOME ‏(Epiphany).
  • סיבוב אוטומטי של המסך לטלפונים ניידים. אין לי מושג למה זה משמש. או שמדובר בסיבוב אוטומטי של סרטון שצולם אנכית/אופקית בטלפון נייד ?

אגב, תמיכה במחוות קיימת כבר מ־3.12. ניתן לקפוץ קדימה ולאחור באמצעות הזזת הסמן לימין ולשמאל, כאשר זה אמור לעבוד עם אצבע על מסך מגע.

סתם בגלל שערכת הנושא החדשה נראית ממש טוב, אני מצרף כאן צילום מסך (שמתי לב שיש בצילום חצים הפוכים).

totem-27-08-2014

עצה קטנה – היישום יודע להפעיל סרטונים מקישור ישיר מהאינטרנט. כמו שניתן להדביק קישור בתפריט אי שם ביישום, ניתן להריץ מהמסוף (או מחלון הפקודות ב־Alt+F2) סרטון מהרשת. זה מאוד נוח. אני משתמש בזה להרצת סרטונים מ־YouTube.

כך הרצתי את הסרטון שלעיל:

totem https://www.youtube.com/watch?v=Z4C82eyhwgU&list=UUSMOQeBJ2RAnuFungnQOxLg

קופסאות

מספר עדכונים קטנים לממשק, מספר קיצורי מקשים נוספו, וכן נוספה אפשרות להזין כתובת של קובץ ISO, וקופסאות ידע להוריד את הקובץ ולהריץ אותו.

gnome-boxes-27-08-2014

gitg – מציג מאגרי Git

תכונות רבות נוספו, הכל בממשק חדיש, נקי ויפה.

  • ניתן למחוק ולשנות שמות תגיות וענפים מקומיים.
  • ניתן ליצור ענף ותגית מכל הגשה.
  • ניתן לבחור להתעלם מרווחים לבנים בתצוגת השינויים, כמו גם להגדיר את רוחב הטאב בתצוגה זו, ואף את מספר השורות מסביב לשורות ששונו, וכן אם יוצגו שינויים לפי שורה במקום לפי מילה.
  • ניתן למחוק שינויים שבוצעו (מקביל ל־git stash), לפי קובץ ואף לפי שורות נבחרות.
  • ניתן למחוק מאגרים מרשימת המאגרים שנצפו.
  • קבצים ששם שונה לא מוצגים עוד כתוכן של קובץ שנמחק וקובץ נוסף שנוסף, אלא כקובץ ששמו שונה.

כל היישום מתורגם לעברית. הוא זמין בגרסתו האחרונה (3.13.91) במאגרי החבילות של ארץ׳, למעוניינים.

הצילום כאן מעט ארוך מהאחרים.

אפשר לומר שהיישום כבר די שמיש !

דפדפן (נקרא גם Web/Epiphany)

היישום החביב עלי ב־GNOME. הולך ומקבל עוד ועוד תכונות, נעשה מלוטש, נקי ונוח יותר ויותר.

בגרסה זו נוספו מספר תכונות, שימושיות מאוד:

  • חסימת דפים עם שגיאות TLS ברמה זו או אחרת.
  • מצב האבטחה/תעודות של דף ניתן להצגה בלחיצה על סמל המנעול בכותרת, דרך דמוי בלון (GtkPopover).
  • חלון היסטוריית גלישה כעת שמיש (היה נתקע בעבר), החיפוש מהיר מאוד.
  • כפתור רענון/עצירה הועבר מתיבת הכתובות לשורת הכותרת עצמה, כך שכפתור זה תמיד גלוי.
  • ליטוש רב בתיבות דו־שיח, בשיח העדפות, בתפריטים, פריטים הועברו/נמחקו/נוספו, תוקנו קריסות, תוקנה בעיה בחוסם הפרסומות ועוד.
  • תמיכה בתוספים הכתובים על גבי GTK+ 3.

epiphany-tls-erros-28-08-2014

כמובן, דבר נוסף עליו כתבתי למעלה, נוסף תוסף (הקוד נמצא ב־Evince) המאפשר קריאת קבצי PDF בדפדפן, אף מוטמעים באמצע דף. אמנם דרושה עוד עבודה על התוסף, אך הוא עובד היטב, פחות או יותר. תוסף זה עושה שימוש בתמיכה שנוספה ב־GTK+ 3 כתוספים.

epiphany-pdf-plugin-28-08-2014

משחקים

עבודה רבה נעשתה במשחקים השונים. גם עבודה על הממשק, גם עבודה פה ושם על המנוע מאחורי המשחק.

אציין כאן את המשחקים שעוצבו מחדש. שאר היישומים קיבלו שינויים קטנים, כמו העברת הפקדים לשורת הכותרת וליטושים אחרים לממשק.

מוקשים

עוצב מחדש. לטעמי העיצוב בתחילת הדרך היה יפה יותר לעין, אך כך הוא נראה כעת:

gnome-mines-27-08-2014

היטורי

הפך חלק ממשחקי GNOME הרשמיים, וקיבל עיצוב מעט חדיש.

hitori-27-08-2014

סודוקו

עוצב מחדש, המנוע מאחור הוחלף ב־QQwing, כאשר זה הקודם נמחק.

gnome-sudoku-27-08-2014

סביר ושכחתי שינויים אלה ואחרים. כמו כן יתכן ועד לשחרור הרשמי יוכנסו שינויים נוספים.

יש לציין שאני לא ממש זוכר מה הוכנס ל־3.12 ומה ל־3.14. בעיקר במשחקים, קצת נעזרתי בהודעות השחרור של היישומים.

ברשומה הבאה אשתדל לעדכן על התרגום. מצבו די טוב, אם כי צריך לסיים את מה שבכל זאת חסר, עד לשחרור הרשמי, שזה לא מעט.

אני רוצה להביא מעתה בסוף כל רשומה איזה שיר, שיר שאני אוהב. אלה בדרך כלל יהיו שירי „ארץ ישראל הישנה והטובה”. והתמה, אוסיף.

רציתי להביא שיר מסוים, אך תוך כדי כתיבת הרשומה נתקלתי בביצוע יוצא דופן של התפילה „עושה שלום”, מפי המלחינה עצמה.

בברכה,

יוסף אור

GUADEC 2014 – יומיים אחרונים

בוקר טוב.

בשונה מהיומיים הראשונים שלי ב־GUADEC, היומיים האחרונים דווקא היו מהנים משהו. הקשבתי לשתי הרצאות (באחת נוספת הייתי מבלי להקשיב ;-)), דיברתי עם אנשים, שברתי את הארץ׳ שעל ה־Chromebook Pixel ואכלתי פיצה (כשרה) עם Carlos ו־Florian. התקנתי מחדש את ארץ׳.

Christian Hergert דיבר על Builder, ‏IDE עליו הוא עובד זה זמן מה בזמנו החופשי. בסוף ההרצאה הוא גילה שהוא מתעתד להתפטר מעבודתו ב־MongoDB כדי לעבוד על פיתוח Builder. אותי רק העובדה הזו הפתיעה, שאת ה־IDE עצמו ראיתי כבר לפני שנה. המשמעות היא שבתוך שנה לערך יהיה ל־GNOME סביבת פיתוח מאוד טובה, Christian הוא מפתח מאוד רציני.

ככלל, לא ממש עשיתי משהו חוץ מלדבר עם אנשים. לא תיקנתי באגים או השתתפתי בדיון על דבר זה או אחר. אפילו לא עדכנתי תרגומים. להרבה אנשים לא הספקתי לומר שלום. ובכל זאת, די נהניתי ביומיים הללו.

14801258765_91d4d432d4_o
פרסומת למי עדן – צולם על ידי Jakub Steiner

אסיים בתודה לקרן GNOME, שמימנה אותי, יחד עם רבים נוספים. ותודה ל־Jakub Steiner על התמונה הזו. ואשמח אם מישהו יעזור לי בתעתוק שמות האנשים ברשומה זו.

בברכה,

יוסף אור

sponsored-badge-simple

GUADEC 2014

ערב טוב.

כאן מסתיים היום השני שלי ב־GUADEC, כנס משתמשי ומפתחי GNOME באירופה. הכנס החל יומיים לפני שהגעתי.

אגלה שכבר מסוף השבוע שעבר קיוויתי שהטיסה שלי (לא שלי ממש, זו שאני טס בה) תבוטל עקב המלחמה בארץ. מעט לפני כניסת השבת היו דיווחים על על החזרת איסור הטיסה לישראל על ידי סוכנות הטיסה הפדרלית (ואם טעיתי בשמהּ, או שזו רק המלצה ולא איסור ממש – התנצלותי), מה שהעלה את ציפיותיי לביטול הטיסה, אך כידוע דבר, נתבדתי. ועל כך מתפללים „ואל תכנס לפניך תפילת עוברי דרכים”. מדובר הרי בהפסד של מאות מיליוני דולרים למדינה (ואם הפרזתי או מיעטתי – התנצלותי, שוב).

לא רציתי לטוס, שיש בארץ מלחמה, ומי טס לחו״ל בשעת מלחמה ? אמנם אצלנו שמעו עד כה אזעקות ספורות בלבד, אך בכל זאת. את עצמי אני מנסה לשכנע שאני לא באמת עושה משהו מיוחד בארץ, ובסופו של דבר החמאס לא הצליח לשבש את תכניותיי – ניצחתי אותו. אך אני לא משתכנע כל כך מהר, שהרי חצי מדינה חיה בשגרת חירום. כמה שצמד המילים הללו משקר, במצח נחושה ממש.

ובכן, לעניין ה־GUADEC – טסתי. בינתיים לא ממש נהניתי, בעיקר כי לקח לי המון זמן להגיע, למצוא את המקום וכו׳. ואמנם היום היה פחות רע מאתמול, שהייתי פחות עייף (הטיסה זה סיוט אחד, ארוך ומתמשך), אך בבוקר הסתובבתי שעה ברגל כדי ללכת מרחק הליכה של דקה וחצי. יצא שלא בדיוק הקשבתי להרצאות, ובקושי דיברתי עם אנשים. חבל.

מאוחר יותר היום, לאחר שהלו״ז הסתיים (בשטרסבורג השמש שוקעת בסביבות תשע) והייתי בעיר באיזה מקום בו יכולתי לקנות אוכל כשר, החל לרדת גשם זלעפות, זה שרואים בארץ בחודש חשוון (בשנים הברוכות, אם להיות כן), ואני מוצא את עצמי בחולצה קצרה וסנדלי שורש. אז נרטבתי קצת, כיאה לישראלי שלא יודע מה זה מזג אוויר באירופה. יום אחד קייצי, יום לאחר מכן חורפי. היום באופן מיוחד היה זה קיץ וחורף באותו היום.

במהלך היום קראתי קצת ברוטר. היה לי מוזר לקרוא מחו״ל על החיילים שנהרגו. ועכשיו שמות ארבעת הנותרים גם הם הותרו לפרסום. הי״ד.

ובכל זאת, אני צריך להוסיף ולציין, שאני ממומן על ידי קרן GNOME. אמנם יש פה מן האירוניה, אך אני צריך בכל זאת לומר תודה, ולבקשתם המיוחדת, אוסיף לכאן סמליל מיוחד. תקוותי  שמחר איהנה יותר, שבאמת ארצה לומר תודה :-)

sponsored-badge-simple

נסיעה ל־GUADEC שבצרפת בצל המלחמה

ערב טוב.

רציתי לכתוב שאני נוסע ל־GUADEC, הכנס השנתי של מפתחי ומשתמשי GNOME באירופה, כמה שיהיה נחמד וכו׳. אך מי רושם בריש גלי שהוא טס לחו״ל כאשר בארץ מלחמה ? עוד אוסיף שהכנס יערך בשטרסבורג, צרפת, ובימים אלה די מסוכן להסתובב כיהודי ברחובות צרפת.

במקום זאת, אחזק את ידי צה״ל וחייליו, אשר עמהם נמנים גם כמה ממשפחתי – שיחזרו לשלום; את תושבי הדרום, שלא תמיד יכולים לישון ברציפות מחוץ למקלטים, ואף את תושבי המרכז, ירושלים ועוטף ירושלים, הצפון, את תושבי יו״ש המתמודדים עם פח״ע תמידי, ובעצם את כל תושבי מדינת ישראל באשר הם.

אך תושבי הדרום וחיילי צה״ל בראש. כעת בשעה 1:00 אזעקה במ״א בני שמעון, וחמש דקות מוקדם יותר, ב־00:55 נשמעו אזעקות בקריית גת ובמ״א חוף אשקלון, יואב, לכיש ושפיר. כך זה בדרום – מי שלא ישן במקלט, יאלץ להתעורר לאורך הלילה ולרוץ למקלט.

אצטט את דברי מח״ט הצנחנים, אל״מ אליעזר טולדנו, אמש לחייליו:

צנחנים!

עוד זמן קצר נתקוף את מרחב העיר חאן יונס. נעשה זאת עם צנחנים מעולים וכוחות נוספים. לוחמים אמיצים מלומדי קרב.

בעוד פנינו להתקפה נביט לאחור ונשאב את כוחנו מאור היישובים הישראליים המפריחים את מערב הנגב, נביט לאשקלון ובאר שבע, תל אביב, חיפה וירושלים הנמצאים כבר שמונה ימים תחת ירי בלתי פוסק. לוחמיי, הגיע תורנו לעמוד על המשמר – כמו הצנחנים ששעטו לעיר עזה במבצעי התגמול ובמלחמת ששת הימים, כמו אלה שכתבו לנו את מורשת הצנחנים.

לוחמים!

הסירו דאגה מלבכם, בטחו זה בזה, בטחו במפקדים מעולים ומנוסים, ובעיקר בטחו בצדקת הדרך!

מדינת ישראל איננה עוד אפשרות, מדינת ישראל היא האפשרות היחידה!

הצנחנים יילחמו בעוז, במקצועיות ולאור ערכי צה"ל. נעקור את שערי עזה ובריחיה. נאתר את מנהרות התופת המכוונות למיטת התינוק של אחינו וילדינו ונשוב לביתנו בידיעה שפעלנו על פי צו מורשת הצנחנים.
לוחמים!

הכו באויב, חזור והכה.
אל תניחו לו להרים את הראש!

שמרו זה על זה – צמד הברזל הוא הערובה להבטחה!
שמרו על רווחים גדולים, הירח עומד בשמיים ומביט בנו, האור יהיה רב.

במקום שבו אתם עומדים יותר מדקות ספורות, התחפרו והיו מוכנים לאויב ולספיגת ארטילריה.

הימנעו מכניסה לבתים בולטים אשר עלולים להיות פתיונות ממולכדים ומטרות נוחות לנ"ט.

טפלו בפצועים אך אל תעצרו!
המשיכו קדימה בכל הכוח!
שמרו על רוח צה"ל והימנעו מפגיעה בבלתי מעורבים, ככל שניתן.

לוחמים,

עם ישראל סומך עלינו, צה"ל סומך עלינו, נרדוף אויבינו ונשיגם ולא נשוב עד כלותם.

כבוד גדול להילחם עמכם.
בהצלחה!

„לוחמים, עם ישראל סומך עלינו, צה"ל סומך עלינו, נרדוף אויבינו ונשיגם ולא נשוב עד כלותם” – אני מבטיח, אנו סומכים עליכם !

אמנם אני לא צנחן, אבל יש איזה סיכוי (לא יודע כמה אמתי) שעוד אהיה.

רציתי להביא דברים שאמר מח״ט גולני, לאחר יום בו נפלו חיילים רבים מחטיבתו, אך לא מצאתי (ואם מישהו ימצא, שיביא ואוסיף).

גולני שלי

1:31 – נשמעה אזעקת צבע אדום במ״א שער הנגב.

לילה טוב לתושבי ישראל, שקט ככל האפשר לתושבי הדרום ולחיילי צה״ל !

בברכה,

יוסף אור

יישום תכנות מונחה עצמים בשפת C – ‏GObject

ערב טוב.

לשם שינוי, לא אכתוב על שינויים ב־GNOME, על אף שיש רבים כאלה, אלא קצת על מה שנמצא מתחת למכסה המנוע בפיתוח GNOME.

יישומי GNOME וספריות התכנה שלה כתובים ברובם בשפת C, ומבוססים כולם על ספרייה בשם GLib, הכתובה גם היא בשפת C.

GLib מחולקת למעשה לשלוש ספריות:

  • GLib – ‏ API למטרות כלליות, כמו מבני נתונים שונים, טיפול ב־UTF-8, טיפול במחרוזות ועוד רשימה ארוכה של כלים
  • GIO – קלט פלט על גבי VFS, למעשה API נוח לשימוש מעל POSIX, או טיפול בתקשורת בין תהליכים (D-Bus וכו׳)
  • GObject – ‏מימוש תכנות מונחה עצמים בשפת C, מספק API מאוד נוח מסביב

ברשומה זו לא אגע ב־API המסופק על ידי GObject או במימוש המדויק בספרייה זו, אלא אביא את הרעיון הכללי.

מימוש תכנות מונחה עצמים בשפת C

שם המשחק הוא שימוש נכון במצביעים.

מצביע הוא משתנה המכיל מספר שלם המייצג כתובת בזיכרון. ככורח יוצא שגודל משתנה זה, גודלו של מצביע, תלוי בזיכרון הקיים (או: במערכת ההפעלה) ולא במשתנה אליו מתייחסת הכתובת. כלומר, מצביע למשתנה מסוג int גודלו כגודל מצביע למבנה זה או אחר כמו למשתנה מסוג double.

struct A
{
        int dum;
};

אין כאן שום דבר מעניין. רק הגדרתי מבנה עם משתנה דמה.

struct A *a;

a = malloc (sizeof (struct A) * 1);
a->dum = 0;

כאן כבר יש קוד מאוד מעניין, גם אם לא כך נראה ממבט ראשון.

a->dum = 0;

כאשר אני מנסה לאתחל את המשתנה dum מהמבנה A, המהדר מחשב מהכתובת המתקבלת (המצביע, המשתנה a) את המקום של המשתנה dum מתחילת המבנה (0, המשתנה מופיע בתחילת המבנה), משם מחשב את הגודל של המשתנה dum (גודל של משתנה int), וכך יודע עד לאיזו כתובת מופיע המשתנה dum. ובקיצור: המהדר מוצא את הכתובת המתחילה והכתובת המסיימת את המשתנה dum, ומאתחל את המקום לערך 0, כפי שהתבקש.

מה אני מנסה להדגיש בשורה פשוטה זו של קוד ? כיוון שהמשתנה dum מופיע בתחילת המבנה, ניתן להתייחס לכתובת של a ככתובת של dum.

*((int *) a) = 5;

בשורה זו ^ התייחסתי למשתנה a כאל מצביע למשתנה מסוג int (במקום למצביע למבנה A), והשמתי את הערך ל־5.

בדיקה קצרה (להלן קוד הניתן להידור) תראה שאכן הכל כאן נכון ו„חוקי”:

#include <stdlib.h>
#include <stdio.h>
 
struct A
{
        int dum;
};
 
int main (int argc, char **argv)
{
        struct A *a;

        a = malloc (sizeof (struct A) * 1);
        a->dum = 0;

        *((int *) a) = 5;

        printf ("%d\n", a->dum);

        free (a);

        return 0;
}

כעת אנסה לעשות משהו מועיל יותר מהקוד הנ״ל.

אגדיר מבנה נוסף, בשם B, בתחילתו אשים מופע של המבנה A, ורק לאחריו משתנה דמה נוסף.

ברור כעת כי למצביע למבנה B ניתן להתייחס גם כמצביע למבנה A, או אף למצביע למשתנה מסוג int.

להלן הקוד המשחק עם זה.

#include <stdlib.h>
#include <stdio.h>
 
struct A
{
        int dum;
};
 
struct B
{
        struct A a;
        int dum;
};
 
int main (int argc, char **argv)
{
        struct A *a;
        struct B *b;

        b = malloc (sizeof (struct B) * 1);
        b->a.dum = 1;
        b->dum = 2;

        a = (struct A *) b;

        printf ("b->dum: %d\n", b->dum);
        printf ("a->dum: %d\n", a->dum);
        printf ("a.dum: %d\n\n", *((int *) b));

        printf ("a-pointer: %p\n", a);
        printf ("b-pointer: %p\n", b);
        printf ("int-pointer: %p\n", (int *) b);

        free (b);

        return 0;
}

מכאן הדרך ליישום מלא של תכונת ההורשה, יחד עם הסתרת משתנים פרטיים, קצרה מאוד.

להלן קוד שכתבתי במיוחד לכך, מחולק לקבצים.

#ifndef ___A___
#define ___A___

typedef struct _A               A;
typedef struct _APrivate        APrivate;

struct _A
{
        APrivate *priv;
};

A *     a_new     ();
void    a_init    (A    *a);
void    a_free    (A    *a);

int     a_get_dum (A    *a);
void    a_set_dum (A    *a,
                   int   dum);

#endif
#ifndef ___B___
#define ___B___

#include "a.h"

typedef struct _B               B;
typedef struct _BPrivate        BPrivate;

struct _B
{
        A parent;
        BPrivate *priv;
};

B *     b_new     ();
void    b_init    (B    *b);
void    b_free    (B    *b);

int     b_get_dum (B    *b);
void    b_set_dum (B    *b,
                   int   dum);

#endif
#ifndef ___C___
#define ___C___

#include "b.h"

typedef struct _C               C;
typedef struct _CPrivate        CPrivate;

struct _C
{
        B parent;
        CPrivate *priv;
};

C *     c_new     ();
void    c_init    (C    *c);
void    c_free    (C    *c);

int     c_get_dum (C    *c);
void    c_set_dum (C    *c,
                   int   dum);

#endif

המימוש:

#include <stdlib.h>
#include <stdio.h>

#include "a.h"

struct _APrivate
{
        int dum;
};

A *
a_new ()
{
        A *a;

        a = malloc (sizeof (A) * 1);
        a_init (a);

        printf ("a_new\n");

        return a;
}

void
a_init (A *a)
{
        if (!a)
                return;

        a->priv = malloc (sizeof (APrivate) * 1);
        a->priv->dum = -1;

        printf ("a_init\n");
}

int
a_get_dum (A *a)
{
        return (a ? a->priv->dum : -1);
}

void
a_set_dum (A *a,
           int dum)
{
        if (a)
                a->priv->dum = dum;
}

void
a_free (A *a)
{
        if (!a)
                return;

        free (a->priv);

        printf ("a_free\n");
}
#include <stdlib.h>
#include <stdio.h>

#include "b.h"

struct _BPrivate
{
        int dum;
};

B *
b_new ()
{
        B *b;

        b = malloc (sizeof (B) * 1);
        b_init (b);

        printf ("b_new\n");

        return b;
}

void
b_init (B *b)
{
        if (!b)
                return;

        a_init (&(b->parent));
        b->priv = malloc (sizeof (BPrivate) * 1);
        b->priv->dum = -1;

        printf ("b_init\n");
}

int
b_get_dum (B *b)
{
        return (b ? b->priv->dum : -1);
}

void
b_set_dum (B *b,
           int dum)
{
        if (b)
                b->priv->dum = dum;
}

void
b_free (B *b)
{
        if (!b)
                return;

        a_free (&(b->parent));
        free (b->priv);

        printf ("b_free\n");
}
#include <stdlib.h>
#include <stdio.h>

#include "c.h"

struct _CPrivate
{
        int dum;
};

C *
c_new ()
{
        C *c;

        c = malloc (sizeof (C) * 1);
        c_init (c);

        printf ("c_new\n");

        return c;
}

void
c_init (C *c)
{
        if (!c)
                return;

        b_init (&(c->parent));
        c->priv = malloc (sizeof (CPrivate) * 1);
        c->priv->dum = -1;

        printf ("c_init\n");
}

int
c_get_dum (C *c)
{
        return (c ? c->priv->dum : -1);
}

void
c_set_dum (C *c,
           int dum)
{
        if (c)
                c->priv->dum = dum;
}

void
c_free (C *c)
{
        if (!c)
                return;

        b_free (&(c->parent));
        free (c->priv);

        printf ("c_free\n");
}

וכן תכנית קצרה העושה שימוש בקוד הנ״ל:

#include <stdlib.h>
#include <stdio.h>

#include "c.h"

int main (int argc, char **argv)
{
        C *c;
        B *b;
        A *a;

        c = c_new ();
        c_set_dum (c, 15);

        b = (B *) c;
        b_set_dum (b, 10);

        a = (A *) b;
        a_set_dum (a, 5);

        printf ("c: %d\n", c_get_dum (c));
        printf ("b: %d\n", b_get_dum (b));
        printf ("a: %d\n", a_get_dum (a));

        c_free (c);
        free (c);
        
        return 0;
}

נראה לי שההסבר למעלה מסביר מה בדיוק עושה הקוד (אם כי הוא כתוב בצורה רצינית ומסודרת יותר :-)).

את הקוד ניתן להדר באמצעות מהדרים שונים, אך אני תמיד מעדיף להדר עם valac, זה פשוט חוסך העברה של דגלים מיותרים:

valac main.c a.c b.c c.c && ./main

ברשומה הבאה אכתוב על מימוש ניהול זיכרון בשפת C, בשיטה פשוטה של ספירת הפניות, ובזו שאחריה אכתוב על השימוש ב־API של GObject.
אציין שהמימוש ב־GLib/GObject משוכלל ומסובך לאין ערוך מזה המוצג פה, המציג את הרעיון הכללי מאחור.

בברכה,

יוסף אור

GNOME Developer Experience Hackfest, 2014

בוקר טוב.

בבוקר יום שלישי האחרון טסתי לברלין, גרמניה, להאקתון פיתוח של GNOME, ‏Developer Experience, ‏2014.

זו לי הפעם הראשונה מחוץ לישראל, כמו גם הטיסה הראשונה בכלל.

דבר אחד על ברלין – יש שם תחבורה ציבורית מדהימה, חלומית בקנה מידה של מה שיש לנו כאן.

ההאקתון עצמו נועד לימים רביעי, חמישי ושישי, ואילו אני הגעתי ביום שלישי, מה שהתברר כנכון (לקח לי זמן למצוא את המקום), וכן חזרתי ביום שישי בבוקר ובכך הפסדתי את היום האחרון (לא רציתי לשהות בשבת בחו״ל, כל שכן בברלין).

בשבילי הימים הללו היו בעיקר כדי לפגוש את האנשים. לעבור מכינויים ב־IRC לפרצופים ולאנשים. לראות שאותם אנשים קיימים גם במציאות, לדבר ולהכיר.

ואמנם ביום הראשון כלל לא כתבתי קוד. במחשב ה־Chromepixel (אחד משישה שנתרמו לקרן GNOME, כדי לאפשר פיתוח תמיכה במסך מגע ובהבחנה גבוהה) שעמנואלה בשיא הביא לי לשימוש בכנס, הייתה מותקנת מערכת Chrome OS (מערכת שנראית מגניבה ממבט ראשון, אך חסרת כל שימושיות לאחד דקה או שניים – מערכת שהיא כולה דפדפן), מה שהביא אותי להתקין את פדורה 20, דבר שארך זמן כיוון שקצת מסובך להפעיל תמונה חיה במחשבים אלה. לאחר ששדרגתי ל־Rawhide המערכת נשברה, מה שגרר בזבוז נוסף של זמן בניסיון לתיקון המערכת.

ביום השני התקנתי מחדש את פדורה 20, ולאחר מכן התקנתי את GNOME 3.12 מהמאגרים של ריצ׳רד, במקום לשדרג ל־Rawhide. כך יכולתי לכתוב קוד ויחד עם זאת להשתמש בסביבה לא מיושנת מדי.

יצא שכתבתי טלאי אחד (קטן ופשוט) והכנסתי טלאי אחר ל־Git. כלומר לא באמת כתבתי קוד.

למעשה, בעיקר דיברתי עם אנשים, היו דיונים על עיצובים, מצאתי המון באגים יחד עם ג׳ון (חלקם קשורים למסך מגע ותמיכה בהבחנה גבוהה), וכן דיברתי עם אלן על הבעיות בעיצוב הנוכחי של הצגת פריטים ביישומים השונים, כאשר מוצגים יותר מדי פריטים, מה גם שלחיצה על „טעינת נוספים” או גלילה מטה אלו דרכים לא נוחות במיוחד להצגת פריטים נוספים וכו׳. הצעתי גישה אחרת של דפים כרעיון כללי.

גם דיברתי עם ג׳ון וג'ייקוב על עיצוב לניהול לשוניות (בדפדפן GNOME), אך זה האחרון לא מעוניין שננסה לנהל לשוניות, זה לא יעבוד הוא אומר.

דבר מעניין נוסף הוא ניהול הורדות בדפדפן GNOME. ג׳ון טוען כי התיקייה „הורדות” צריכה להיעלם, היא פשוט עיצוב שגוי. הרעיון העיצובי (שקיים כבר זמן רב) הוא שהמשתמש יראה תצוגה מקדימה של מסמך, ואם ירצה יוכל לשמור אותו איפה שירצה, בצורה מסודרת. אני בהחלט מסכים אתו – תיקיית ההורדות שלי מכילה אוסף של קבצים שהורדתי ומיד שכחתי מהם – אני לא יודע מה איפה וכו׳. לאחר שאני מוריד קובץ וגם רוצה שהוא ישמר לי, אני טורח להעביר אותו מהתיקייה „הורדות” למקום מסודר. כלומר בשבילי תיקייה זו כתיקיית „אשפה”.

מעבר לזה היו כמובן דיונים נוספים, הרבה שכתבתו קוד, אך על אלה ניתן לקרוא ב־Planet GNOME :-)

בסוף היום השני, כשניגשתי להחזיר את ה־Chromepixel לעמנואלה, אלן הציע לי לקחת את המחשב איתי ולהחזיר אותו ב־GUADEC, אם אגיע, כיוון שעמנואלה לא משתמש בו. משום מה עניתי „כן”, לא לפני שווידאתי שאכן אף אחד אחר לא צריך את המחשב.

ביום שישי נסעתי לשדה התעופה, וכך מספר שעות לפני שבת נחתתי בישראל. נורא נהניתי מהתזמון בו נחתתי – מספר ימים לפני יום העצמאות, כך שהכל מקושט בדגלי ישראל :-)

כך ישראל נראית מהמטוס:

אסיים בתודה לקרן GNOME, שמממנת את הטיסה שלי ושהותי במלון, כמו של חברים נוספים שהגיעו להאקתון זה. גם ה־Chromepixel שהשתמשתי בו במהלך הכנס, ושלקחתי איתי, שייך לקרן GNOME.

בברכה,

יוסף אור
sponsored-badge-simple

GNOME 3.13 – תחילת הפיתוח

צהריים טובים.

חודש לאחר שחרור GNOME 3.12.0 ושבוע לאחר שחרור 3.12.1, בעוד מספר ימים תשוחרר גרסת הפיתוח הראשונה במחזור פיתוח 3.13/3.14.

אסקור השינויים שכבר נכנסו ל־Git, וחלק שעוד ממתינים ב־Bugzilla (כלומר קיימים טלאים אותם ניתן לנסות).

GTK+‎

כבר ב־Git

הדבר הראשון שהוכנס הוא הוספת תמיכה בבחירה מרובה ביישומון GtkListBox, תכונה שיישומים רבים ממתינים לה (למשל לקוח הדוא״ל Geary). הקוד הועתק פחות או יותר מ־GtkFlowBox. נכתב על ידי ‏Matthias Clasen.

ממש באותו היום נוספה תמיכה במצב המתנה ליישומון GtkSwitch, מצב המציג GtkSpinner (טווה ?) במשך זמן מוגדר בין מעבר ממצב אחד לשני. כך זה נראה (מתוך הבאג):

כמו כן, אמש הוכנסו שינויים של William Jon McCann ליישומון בחירת הקבצים GtkFileChooserWidget, תחילת עבודה לעיצוב חדש של דו שיח לפתיחת קבצים (כלומר העבודה עוד לא הסתיימה). הדבר הבולט הוא שבסרגל הצדי הוחלפו התוויות במפרידים:

new-file-chooser-dialog-recent

new-file-chooser-dialog-home

new-file-chooseer-dialog-enter-location

טלאים ממתינים ב־Bugzilla

כחלק מהעיצוב המתעתד להחליף את כל התפריטים (כך נראה) בתפריטים דמויי בועה (GtkPopover) עם פריטים מורכבים יותר, ‏Matthias Clasen כתב מימוש אפשרי. כך זה נראה (הסרטה מתוך הבאג) ניסיתי את זה בעצמי – זה די מדהים:

דבר נוסף, אותו ראיתי אתמול, הוא הוספת תמיכה להוספת יישומוני פעולה (כפתורים) ביישומוני דו שיח (GtkDialog), או בשורת הכותרת (GtkHeaderBar) או בתחתית תיבת הדו שיח, בהתאם להגדרות המשתמש (או: בהתאם להגדרות הסביבה). כך ב־Xfce כפתורי הפעולה יופיעו בתחתית תיבת הדו שיח, ואילו ב־GNOME 3 הכפתורים יופיעו בשורת הכותרת.

עד כה הדבר התאפשר באופן ידני ולא נוח, בקוד בלבד, וכעת הוא מתאפשר ישירות מקובץ ה־‎.ui ללא צורך לבדוק באופן ידני את ההגדרות בקוד.

פרטים ניתן למצוא בבאג 728846. גם תיקונים אלה נכתבו על ידי ‏Matthias Clasen.

מוקשים

עבודה רבה נעשתה על משחק זה, במטרה להביא למראה חדיש ויפה. זה נראה פשוט מדהים:

מעטפת

הדבר העיקרי שבוצע הוא מיזוג הענף wayland לתוך ענף הפיתוח הראשי (master) במנהל החלונות mutter, מספר ימים לאחר מיזוג הקוד של Xwayland לתוך ענף הפיתוח הראשי של xserver. טרם הצלחתי להפעיל את GNOME על גבי Wayland.

דבר נוסף שראיתי הוא דווקא מאלעד אלפסה, הוספת צירופי מקשים (Supr+Home ו־Super+End) למעבר לשולחן העבודה הראשון והאחרון, בהתאמה.

יתכן ופספסתי דברים שהוכנסו ל־Git, ובטח דברים שממתינים ב־Bugzilla, אך כאן אנו בהחלט רואים רק את ההתחלה :-)

Developer Experience Hackfest – 2014

בשבוע הבא אטוס ביום שלישי לברלין, גרמניה, למשך שלושה ימים (אחזור ביום שישי) כדי להשתתף בהאקתון פיתוח. אני מקווה שיהיה מעניין. אשתדל (אני לא מבטיח) לעדכן במהלך ההאקתון.

בברכה,

יוסף אור