תוספי מעטפת¶
שולחן העבודה של OmarOS פועל כתהליך Quickshell ארוך-חיים אחד בשם omaros-shell, וכמעט כל מה שאתם רואים על המסך הוא תוסף בתוכו. השורה היא תוסף. כך גם הפאנלים הנופלים ממנה, שכבות המסך המלא כמו בורר האימוג'י ומנהל הלוח, תפריט OmarOS עצמו, מסך הנעילה, דו-השיח של polkit והשירותים חסרי הראשים הצופים בסוללה שלכם ומחממים את המסך שלכם בלילה.
זה לא רק פרט מימוש. זה אומר שתוכלו לכבות חלקים משולחן העבודה, להחליף אותם, או לכתוב משלכם מבלי לגעת בשורת קוד מקור של OmarOS.
התוספים מהצד הראשון נשלחים עם OmarOS וחיים ב-$OMAROS_PATH/shell/plugins/. כל מה שתוסיפו בעצמכם — ניסויים משלכם, או משהו שמצאתם ב-GitHub — חי ב-~/.config/omaros/plugins/. שניהם מתגלים באותו אופן בהפעלה, אך המובנים מקבלים ממשקי מעטפת מהימנים בעוד תוספי צד שלישי מקבלים ממשק מוגבל התחום לשירות ולמחזור החיים משלהם. שכפולי מובנים שומרים רק על תצורת המקור הספציפית וקריאות ממשק המשתמש הדרושות להתנהגות המקורית.
לראות מה יש לכם¶
זה מדפיס כל תוסף שהתגלה עם המזהה שלו, האם הוא מופעל, האם הוא מהצד הראשון או מהצד השלישי, סוגיו ושם התצוגה שלו. הוסיפו --json אם אתם מזינים אותו למשהו אחר.
מזהי תוספים נמצאים במרחב שמות. המובנים כולם מתחילים ב-omaros. — omaros.clock, omaros.network, omaros.notifications — ומרחב שמות זה שמור, כך שתוסף צד שלישי לעולם אינו יכול לטעון לו.
הפעלה וכיבוי שלהם¶
או השתמשו בתפריט: ל_הגדרה > תוספים_ יש הפעלת תוסף, כיבוי תוסף, הוספת תוסף, שיבוט תוסף והסרת תוסף, כל אחד עם בורר המציע רק את התוספים הגיוניים לאותה פעולה.
מצב מופעל מאוחסן ב-~/.config/omaros/shell.json, והכלל שונה מעט עבור שני סוגי התוספים. תוסף צד שלישי מופעל בדיוק כאשר המזהה שלו מופיע איפשהו בקובץ ההוא — כערך פריסת שורה, כערך ב-plugins[], או כ-bar.id. תוספי צד ראשון שאינם וידג'טים של שורה הם הפוך: הם דלוקים כברירת מחדל ומכבים רק על ידי הופעה ב-disabledPlugins[].
לתוסף שורה מלא אין מצב כבוי כלל. תמיד יש בדיוק שורה אחת, כך שאתם מחליפים אותה על ידי הפעלת אחרת. מיקום וידג'ט שורה מכוסה בשורת תפריט.
הוספת תוסף מ-git¶
תוסף צד שלישי הוא פשוט מאגר git עם manifest.json בשורשו.
לפני שהוא עושה משהו, הוא אומר לכם בבירור שתוספים פועלים כקוד שרירותי, לא בארגז חול בתוך תהליך המעטפת ארוך-החיים שלכם, מראה לכם את ה-URL, ומבקש מכם לאשר. קחו זאת ברצינות. ממשק תוסף צד שלישי אינו חושף ישירות שירותי אימות, ושורת תחליף מקבלת רק יכולות מוגבלות לממשק משתמש שאינו אימות מוגדר. תוספים חזותיים עדיין חולקים את סצנת ה-QML של המעטפת ויכולים ללכת על אובייקטי הורה רגילים, בעוד כל קוד התוסף פועל עם כל מה שחשבון המשתמש שלכם יכול להגיע אליו. מצב האימות מוגן בנפרד על ידי שמירת אותם שירותים מחוץ לגרף אובייקטי המארח הנגישים. הוסיפו רק מאגרים שאתם מוכנים להריץ, וקראו אותם לפני שאתם מפעילים אותם.
שורת תחליף יכולה להציג וידג'טים מותקנים, אך וידג'טים של צד שלישי מגובי שירות עשויים להיות בעלי פונקציונליות מופחתת שם מכיוון שהשורה אינה רשאית לבקש אובייקט שירות חי של תוסף אחר. חזרו ל-omaros.bar המובנית אם וידג'ט כזה זקוק לשירות המלווה שלו.
לאחר מכן הוא משכפל את המאגר לספריית הכנה, מאמת את המניפסט, מסרב להתקנה אם תוסף אחר כבר טוען לאותו מזהה, ומעביר אותו לתוך ~/.config/omaros/plugins/<id>/. ללא --enable הוא שואל אם תרצו אותו דלוק כעת, ותוכלו לומר לא וללכת לקרוא את הקוד קודם. הוא לעולם אינו מריץ דבר מהתוסף, לעולם אינו מבצע וו התקנה, ולעולם אינו מבקש sudo — הוא משכפל קבצים, בודק את המניפסט ומהפך ביט דרך IPC.
עדכון הוא משיכת fast-forward של אותו שכפול:
ללא מזהה הוא מעדכן כל תוסף מנוהל-git שיש לכם. הוא מראה לכם את ה-diff לפני החלתו, מסרב להתעדכן אם יש לכם שינויים מקומיים שהוא אינו יכול לדלג עליהם ב-fast-forward, ומחזיר לאחור אם הגרסה החדשה נכשלת באימות.
הסרה מכבה את התוסף תחילה, ולאחר מכן מוחקת אותו אם הוא שכפול git (המאגר עדיין במעלה הזרם) או מנתקת אותו אם הוא קישור סמלי. תיקיית תוסף בעבודת יד ללא מאגר git מועברת לגיבוי עם חותמת זמן בתוך ספריית התוספים במקום להימחק לחלוטין.
שכפול מובנה כדי לשנות אותו¶
זה החלק האהוב עליי. אם ברצונכם לשנות כיצד וידג'ט מובנה מתנהג, אל תערכו את הקבצים תחת $OMAROS_PATH — אלה שייכים לחבילה והעדכון הבא ידרוס אותם. שכפלו אותו במקום זאת:
זה מעתיק את התוסף כולו לתוך ~/.config/omaros/plugins/omar.clock (שם המשתמש שלכם, לא שלי), משנה את שמו ל"My Clock", מפעיל אותו, ומעביר את המעטפת מהמובנה לעותק שלכם — תוך שמירה על מיקום והגדרות של וידג'ט שורה קיים. הוסיפו --edit כדי לפתוח את הספרייה החדשה ב-$EDITOR שלכם מיד, שזה מה ש_הגדרה > תוספים > שיבוט תוסף_ של התפריט עושה עבורכם.
קידומת שם המשתמש שומרת את מזהה השכפול שלכם כשלהם, כך ששיתוף שלו אינו מתנגש עם של אף אחד אחר. קריאות שנעשו למזהה המובנה המקורי מנותבות לשכפול שלכם, כך ששום דבר שהתייחס ל-omaros.clock אינו צריך להתעדכן. ואם תעשו ממנו בלגן, omaros plugin remove omar.clock מחזיר את המובנה.
שמירת קובץ בכל מקום תחת ~/.config/omaros/plugins/ טוענת מחדש את קוד התוסף באופן אוטומטי, כך שתוכלו להשאיר את העורך פתוח ולצפות בשינויים שלכם נוחתים.
כתיבת משלכם¶
תוסף הוא ספרייה עם manifest.json וקצת QML. המניפסט מכריז על schemaVersion: 1, id, name, version, kinds אחד או יותר, ואובייקט entryPoints המצביע על קובץ ה-QML עבור כל סוג:
| סוג | מה הוא |
|---|---|
bar-widget |
רכיב שהשורה הפעילה יכולה להניח בתוך סעיף |
panel |
חלון צף מתמשך או מוזמן |
overlay |
שכבת מסך מלא |
menu |
משטח תפריט מוזמן |
service |
יחידני חסר ראש ללא ממשק משתמש |
bar |
שורה מלאה המחליפה את המובנית |
תוסף יכול להכריז על כמה סוגים בבת אחת — תוסף המדיה הוא גם service וגם bar-widget. וידג'טים של שורה מקבלים בלוק barWidget נוסף עם שם תצוגה, קטגוריה, defaultSection אופציונלי, ו-allowMultiple, האומר אם הגיוני שיהיה יותר מאחד על השורה. רוב הווידג'טים מגדירים אותו ל-false; מרווחים ומחוונים מגדירים אותו ל-true.
לפני שאתם מפרסמים דבר, בדקו אותו:
זה מריץ את אותן בדיקות שהמעטפת עושה בזמן הטעינה: גרסת הסכמה, השדות הנדרשים, מזהה שאינו שמור, נקודות כניסה שהן נתיבים יחסיים בטוחים וקיימות בפועל, נקודת כניסה עבור כל סוג שטענתם לו, וללא קישורים סמליים בכל מקום בתוך התיקייה.
לפיתוח תוספים, ראו את הפניית המעטפת ואת קטלוג תוספי הצד הראשון.
שיתוף שלכם עם העולם¶
לאחר שיצרתם משהו שאתם אוהבים, שימו אותו במאגר git ציבורי. זה כל מנגנון ההפצה — כל אחד יכול אז להריץ omaros plugin add כנגד ה-URL שלכם ולקבל אותו פועל תוך שניות.