הנחיות ממשק אנוש – 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

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

בברכה,

יוסף אור

GNOME 3.12 – סקירה

ערב טוב.

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

מעטפת

  • נוסף מצב חיבור קווי לרשת, עם אפשרות להחליף בין פרופילי רשתות שונים
  • ניתן להוסיף פריטים לתפריט הנפתח, באמצעות קובץ התג „Actions” בקבצי ‎.desktop, להלן דוגמה מ־geary.desktop:

    Actions=Compose;
    [Desktop Action Compose]
    Name=Compose Message
    ...
    Name[he]=יצירת הודעה
    ...
    Exec=geary mailto:
    OnlyShowIn=X-Messaging Menu;Unity;

    gnome-shell-3-12-jumplist-geary
  • ניתן ליצור תיקיות מותאמות עם יישומים נבחרים באמצעות gsettings או באמצעות הממשק ב־GNOME Software. כיוון שבארץ׳ היישום אינו פועל, רק אפנה לרשומה של Matthias Clasen בנושא, וצילום מסך קטן (בכל זאת ניתן ניתן להתאמה באמצעות gsettings גם בארץ׳):
    gnome-shell-apps-folders
  • תמיכה בהבחנה גבוהה (ב־3.10 נוספה תמיכה ליישומים בלבד, לא למעטפת)
  • הפעלה מהירה יותר, עקב טעינת קובץ בינרי אחד במקום קבצי JavaScript רבים, כמו גם מעבר ל־mosjs24 והתייעלויות נוספות
  • הנפשה עם ריצוף חלונות:
  • הנפשה במעבר בין „הכול” ו”תדיר” בסקירת יישומים והנפשה בהתחברות (התקרבות)
  • ניווט בין חלונות בסקירה באמצעות המקלדת
  • התקדמות רבה בתמיכה ב־Wayland

יישומונים

  • עיצוב חדש ללשוניות (הצילום מרשומה קודמת):
  • שורת כותרת משולבת פקדים בתיבות דו־שיח (יישומון GtkHeaderBar):
    color-chooser-dialog-headerbarfont-chooser-dialog-headerbarfile-chooser-dialog-with-headerbar
  • תיבות דו־שיח המכילות הודעה בלבד עוצבו מחדש:
    new-message-dialog-hewaderbar
  • תמיכה בהדפסה דרך Google Cloud Print
  • תפריט דמוי בלון (GtkPopover):
    gedit-popover
  • גובה זהה לשורת כותרת משולבת פקדים (GtkHeaderBar) בכל היישומים
  • סמלים של מספר יישומים עודכנו. ראה הדף בוויקי. אצרף כאן אחד (512 × 512):

שיפור התמיכה בכיווניות

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

יישומים

סרטונים – עיצוב חדש של Totem

עיצוב כולל חדש לסגנון GNOME 3, יחד עם אפשרות לסייר ולחפש סרטונים שבתיקיית הבית או במספר ערוצים נתמכים (YouTube, Vimeo, Blip, קדימוני סרטי אפל ועד). ניתן ליצור רשימת השמעה מהסרטונים. להלן שני צילומים (מרשומה קודמת):

totem-overview

totem-watch-video-from-youtube

Gedit – עיצוב חדש

עיצוב כולל חדש לסגנון GNOME 3, הכולל שילוב פקדים בשורת הכותרת (GtkHeaderBar), שימוש ב־GtkPopover במספר מקומות, תפריט צד בכותרת, סרגל צד חדש וכן פתיחת מסמכים שנסגרו באמצעות צירוף המקשים Ctrl+Shift+T יחד עם שינוי צירוף המקשים למסמך חדש מ־Ctrl+N ל־Ctrl+T. נוסף לזה, ניתן לשנות גודל האותיות בתפריט הנפתח (אותיות רישיות, אותיות קטנות, החלפה, אות רישית בראש מילה) ועוד שיפורים רבים.

gedit-new-design-3-12

תמונות

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

מסוף

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

מוזיקה

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

דפדפן

עבודה רבה נעשתה בדפדפן GNOME (נקרא Web, בעבר גם Epiphany). להלן בתמצות:

  • תהליך נפרד לכל לשונית. ניתן לשנות בחזרה לתהליך אחד לכל הלשוניות באמצעות gsettings (לפני שבוע שונה בררת המחדל לתהליך נפרד לכל לשונית !).
  • שורת כותרת חדשה המשלבת את כותרת הדף ואת תיבת הכתובות.
  • הדף „הנצפים ביותר” הפך לדף HTML, עם לא מעט שיפורים. בוצע על ידי Loren. הדבר מאפשר התאמה קלה של ערכת הנושא, שבוצע על ידי Jakub Steiner.
  • מרבית תיבות דו־שיח עוצבו מחדש, בשילוב פקדים בשורת הכותרת (GtkHeaderBar). מדובר בהיסטוריה, ססמאות, העדפות, עוגיות, ססמאות, ניקוי מידע אישי, הוספת קידודים, הוספת סימניה ושמירה דף כיישורם רשת. אולי פספסתי משהו. בוצע על ידי William Jon McCann.
  • מצב גלישה בסתר קיבל מראה חדש. במקום שימוש בערכת נושא כהה, נעשה שימוש בערכת נושא מיוחדת. דומני גם זה עבודה של ג׳ון.
    epiphany-incognito-mode
  • נוסף ממשק לשינוי מנוע החיפוש (עד כה היה ניתן לעשות את זה באמצעות gsettings בלבד).
  • סרגל ההורדות עודכן, כמו גם עדכון לעיצוב דפי about: – גם אלה על ידי ג׳ון.
  • ספק החיפוש פוצל לקובץ בינרי נפרד.
  • מנועה החיפוש בברירת מחדל (DuckDuckGo) כעת גם משתמש ב־HTTPS בברירת מחדל.
  • סרגל חיפוש נפרד לכל לשונית. בוצע על ידי.

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

הגדרות

לוח Bluetooth חדש ואפשרות לקבוע רק מתמונות מ־Flickr.

משחקים

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

gnome-chess

יישום חדש – רשמקול

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

gnome-sound-recorder

יישום חדש – יומנים

מציג יומני systemd (בשונה מ־gnome-system-log). נקרא gnome-logs.

gnome-logs

יישם חדש – לקוח IRC חדש – Polari

לקוח IRC חדש, הכולל בין השאר:

  • השלמה אוטומטית
  • ממשק חדיש בעיצוב GNOME 3
  • תמיכה בהודעות פרטיות והצגת מידע על משתמשים
  • תמיכה בהדבקת טקסט גדול דרך fpaste (נראה לי הוסרה לפני כמה ימים מאיזו סיבה)
  • הצגת היסטוריה עם גלילה כלפי מעלה
  • שילוב עם המעטפת (gnome-shell)
  • תמיכה במספר פקודות בסיסיות

polari

תכנה

GNOME Software קיבל הרבה תכונות חדשות, אך כיוון שהיישום לא פועל על ארץ׳, רק אקשר לרשומה של Richard Hughes.

הגדרה ראשונית – gnome-initial-setup – עוצב מחדש

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

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

gnome-initial-setup-welcome-page

gnome-initial-setup-layout-page

gnome-initial-setup-region-page

gnome-initial-setup-new-user-page

gnome-initial-setup-password-page

gnome-initial-setup-online-accounts-page

gnome-initial-setup-ready-for-use-page

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

ממשק ברור, פשוט, יפה, חדיש, מסודר. כל זה פשוט נראה טוב, יחד עם כל GNOME 3, כעת 3.12 :-)

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

אחרית דבר – פתח דבר

GNOME 3.12 כבר זמין במאגר gnome-unstable של ארץ׳, וככל הנראה יגיע בשבוע הקרוב ל־testing ובהמשך ל־core.

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

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

יוסף אור