חבילת wayland-protocols גרסה 1.48 שוחררה, והיא מכילה סט של פרוטוקולים והרחבות המשלימים את פרוטוקול Wayland הליבה ומספקים את היכולות הדרושות לבניית שרתים מורכבים וסביבות משתמש.
בגרסה החדשה:
- פרוטוקול xdg-session-management נוסף לקטגוריית staging, ומספק את היכולת לשחזר את המצב והמיקום של חלונות מהפעלה שהופרעה בסביבות מבוססות Wayland, לדוגמה לאחר קריסת שרת מורכב או יישום.
- פרוטוקול קלט הטקסט הורחב, מה שמאפשר לשרתים מורכבים ליישם שיטות קלט ולשלוח טקסט ליישומים. לדוגמה, נוסף דגל no_emoji לקלט ללא אימוג'י, יושמה תמיכה בפעולות נוספות מעבר להכנסת טקסט, נוסף דגל שפה להעברת מידע שפה, נוספו בקשות להצגה והסתרה של לוח הקלט, ודגל preedit_hint נוסף להתאמה אישית של סגנון טרום העריכה.
- נוסף פרוטוקול ניסיוני של xx-cutouts לקבלת מידע על חיתוכים על המסך (לדוגמה, האזור שמתחת למצלמה הקדמית על מסך הטלפון החכם).
- פרוטוקול ניסיוני של xx-zones נוסף ליצירה והוספה של חלונות ברמה העליונה ל"אזורים" - סביבות עם מרחב קואורדינטות משלהן. פרוטוקול זה מאפשר סידור לוגי של חלונות, כאשר כל חלון ממוקם יחסית לכל חלון אחר.
- נוסף פרוטוקול ניסיוני, xx-keyboard-filter, כדי לאפשר ללקוח ליירט אירועי מקלדת נבחרים, לשנות אירועי קלט או לחסום העברת אירועים מסוימים למשטח Wayland הממוקד.
כל הפרוטוקולים עוברים ברצף שלבי פיתוח, בדיקה וייצוב. לאחר השלמת שלב הפיתוח (הקטגוריה "לא יציבה"), פרוטוקול ממוקם בענף "staging" ונכלל רשמית בחבילת wayland-protocols. לאחר השלמת הבדיקה, הוא מועבר לקטגוריה היציבה. לאחר מכן ניתן להשתמש בפרוטוקולים בקטגוריית "staging" בקומפוזיטים. שרתים ולקוחות הדורשים פונקציונליות קשורה. בניגוד לקטגוריה "לא יציבה", "staging" אוסרת שינויים שמפרים תאימות. עם זאת, אם מתגלות בעיות או ליקויים במהלך הבדיקה, לא ניתן לשלול החלפה בגרסת פרוטוקול חדשה ומשמעותית או בהרחבה אחרת של Wayland.
כדי להאיץ את אספקת הפרוטוקולים למפתחים ולעודד הטמעה מוקדמת של פרוטוקולים בפרויקטים קיימים, החל מהמהדורה הקודמת, נוסף שלב "ניסיוני", המאפשר שינויים השוברים תאימות והוספת פרוטוקולים "גולמיים" שניתן להביאם בהדרגה לרמה הראויה. בעוד פרוטוקול צריך ליצור צוות תמיכה ולקבל מספר מסוים של אישורים (ACKs) מסוקרים כדי להיכנס לשלב השלב, הוא רק צריך לא לקבל התנגדויות (NACKs) במהלך תקופת הביקורת של שבועיים כדי להיכנס לשלב הניסוי.
חבילת פרוטוקולי wayland כוללת כרגע את הפרוטוקולים היציבים הבאים, התואמים לאחור:
- viewporter" - מאפשר ללקוח לבצע פעולות של קנה מידה וחיתוך קצוות המשטח בצד שרת.
- "זמן מצגת" - מספק תצוגת וידאו.
- "xdg-shell" הוא ממשק ליצירה ואינטראקציה עם משטחים כחלונות, המאפשר לך להזיז אותם על המסך, לכווץ, להרחיב, לשנות גודל וכו'.
- "linux-dmabuf" - מספק יכולות ליצירת wl_buffers על בסיס DMA-BUF.
- "טאבלט" - ארגון קלט מטאבלטים גרפיים.
פרוטוקולים שנבדקו בענף "סטייגינג":
- drm-lease - מספק את המשאבים הדרושים ליצירת תמונת סטריאו עם חוצצים שונים לעין שמאל וימין בעת הפלט לאוזניות מציאות מדומה.
- "ext-session-lock" - מגדיר אמצעי לנעילת ההפעלה, למשל, בזמן ששומר המסך פועל או הצגת תיבת הדו-שיח של האימות.
- "חוצץ פיקסל בודד" - מאפשר ליצור מאגרים של פיקסל בודד הכוללים ארבעה ערכי RGBA של 32 סיביות.
- "xdg-activation" - מאפשר לך להעביר פוקוס בין משטחים שונים ברמה הראשונה (לדוגמה, באמצעות xdg-activation, אפליקציה אחת יכולה להחליף מיקוד לאחרת).
- סוג תוכן - מאפשר ללקוחות להעביר קוד מורכב שרת מידע על התוכן המוצג שניתן להשתמש בו כדי לייעל התנהגות מודעת תוכן, כגון הגדרת מאפייני DRM ספציפיים כגון "סוג תוכן". תמיכה בסוגי התוכן הבאים מוצהרת: ללא (ללא מידע על סוג נתונים), תמונה (פלט תמונה דיגיטלית הדורש עיבוד מינימלי), וידאו (וידאו או אנימציה, הדורשים סנכרון מדויק יותר כדי למנוע גמגום), ומשחק (הפעלת משחק, הדורשת פלט עם השהייה מינימלית).
- ext-idle-notify - מאפשר לשרתים מרוכבים לשלוח הודעות ללקוחות על חוסר פעילות משתמש, שניתן להשתמש בהן כדי להפעיל מצבי חיסכון נוספים בחשמל לאחר זמן מסוים של חוסר פעילות.
- בקרת קריעה - מאפשרת לבטל סנכרון אנכי (VSync) עם דופק שיכוך אנכי ביישומי מסך מלא, המשמשים להגנה מפני קריעה בפלט. ביישומי מולטימדיה, חפצים עקב קריעה הם אפקט לא רצוי, אך בתוכניות משחק ניתן לסבול חפצים אם הטיפול בהם גורם לעיכובים נוספים.
- ext-foreign-toplevel-list - מאחזר מידע על משטחים הממוקמים ברמה העליונה, המאפשרים לך לארגן חלונות לעגינה על גבי תוכן אחר, למשל, לצרף לוחות ומתגי חלונות משלך.
- security-context - מאפשר לך לזהות לקוחות באמצעות בידוד ארגז חול. לקוח יכול לרשום חיבור חדש לשרת מורכב מבוסס Wayland ולצרף אליו הקשר אבטחה, שלאחריו יגביל המנהל המרוכב את היכולות הזמינות לחיבור שנוצר בהתבסס על הקשר האבטחה שצוין.
- cursor-shape היא דרך חלופית להתאים אישית את מראה הסמן, המבוססת על העברת סדרה של תמונות סמן במקום הצמדה למשטח (wl_surface).
- "ext-transient-seat" - נועד ליצור הפעלות (מושבים) עצמאיות זמניות המיועדות לשימוש עם התקני קלט וירטואליים. לדוגמה, בעת הטמעת היכולת להתחבר לשולחן עבודה מרוחק, הפרוטוקול מאפשר ליצור הפעלה נפרדת לכל משתמש עם מקלדת ועכבר וירטואליים.
- "xdg-toplevel-drag" - מרחיב את מנגנון "גרור ושחרור" עם יכולת לצרף חלונות ברמה העליונה לפעולת גרירה, שניתן להשתמש בה, למשל, לארגון גרירה של סרגלי כלים או לשוניות דפדפן עם העכבר. הפרוטוקול החדש מאפשר ליצור חלקים ניתנים להסרה של חלון שכאשר נגררים מאותו חלון, הופכים לחלונות חדשים וניתן להזיז אותם על גבי החלון הקיים לפני חיבורם מחדש.
- "xdg-dialog" - מאפשר לך להקצות תכונות ספציפיות לדיאלוג למשטחים ברמה העליונה, למשל, אתה יכול ליצור דיאלוגים מודאליים שחוסמים אינטראקציה של המשתמש עם שאר הממשק.
- "linux-drm-syncobj" - מספק כלים לסנכרון מאגר מפורש באמצעות אובייקטי סנכרון DRM (Direct Rendering Manager). ההנחה היא שבהקשר של סנכרון בעת רינדור למאגר, הפרוטוקול המוצע ישפר את העבודה עם מנהלי התקנים המבוססים על ה-API הגרפי של Vulkan ו-OpenGL (היישום מבוסס על מטפלים בדרייברים). הפרוטוקול החדש מאפשר להבטיח שפעולת ציור למאגר תושלם לפני שמנהל החיבור יציג את המאגר הזה.
- alpha-modifier, המאפשר ללקוחות לשנות את רמת השקיפות של פני השטח ולהעביר פעולות כדי להבטיח שקיפות לצד השרת המרוכב, אשר בתורו יכול להפנות את הפעולות הללו ל-KMS.
- xdg-toplevel-icon - קושר את הסמל לחלון ברמה העליונה.
- ext-image-capture-source ו-ext-image-copy-capture - ארגון לכידת התוכן המוצג על המסך.
- xdg-system-bell - מאפשר לך להוציא אות מערכת, שיכול לשמש, למשל, כאזהרה באמולטור מסוף. צורת פלט האות נקבעת לפי שיקול דעתו של המנהל המרוכב, זה יכול להיות לא רק צליל, אלא תגובה ויזואלית.
- fifo - מיישמת מנגנון FIFO (כניסה ראשונה, יוצאת ראשונה) לעיבוד תור עדכון התוכן של המשטח המוצג. בפן הפרקטי, הפרוטוקול מאפשר לפלט להמתין לסריקה אנכית (vblank) במקום להשתמש בקריאות התקשרות חוזרות בכל פעם שהוא מוכן להציג מסגרת חדשה, מה שפותר את בעיית העומס הגבוה של GPU בעת שימוש ב-VSync.
- commit-timing - מאפשר להגביל מגבלת זמן לתוכן השטח (השרת המרוכב צריך לשקף את שינוי התוכן אם אפשר לאחר הזמן שצוין, אך לא קודם לכן).
- ext-data-control - מאפשר ללקוחות בעלי זכות לשלוט בעיבוד נתונים, למשל ליישם מנהלי לוח.
- מרחב עבודה חיצוני - מיישם את הקונספט שולחנות עבודה וירטואליים ומציע אירועים עם מידע על מצב שולחנות העבודה, כמו גם אפשרות להפעיל ולבטל שולחנות עבודה. ניתן להשתמש בפרוטוקול כדי ליצור לוחות מחוונים ומחוונים המציגים רשימה של שולחנות עבודה וירטואליים זמינים ומאפשרים מעבר ביניהם.
- ניהול צבעים - מספק יכולות לניהול צבעים ותמיכה בטווח דינמי גבוה (HDR). הרחבה זו מאפשרת ליישומי לקוח לקבל מידע על מאפייני הצבע של התקני פלט ולהעביר נתונים על מאפייני הצבע של התוכן שלהם לשרת המורכב. במצב מורכב, שרת ניתן להשתמש במידע זה לניהול צבעים אוטומטי בעת הצגת תוכן במגוון התקני פלט, לדוגמה, כדי להמיר תוכן למצגת המתאימה לתצוגה על גבי מסכי HDR. פרופילי ICC משמשים לתיאור מרחבי צבע.
- xdg-toplevel-tag — מאפשר ללקוחות Wayland לצרף תגים למשטחים ברמה העליונה שבהם שרת הקומפוזיציה יכול להשתמש כדי לזהות חלונות לאחר הפעלה מחדש של היישום (לדוגמה, יישום עשוי להגדיר תגים של "main window" ו-"settings" עבור החלון הראשי וחלון ההגדרות). זיהוי כזה שימושי לשחזור המיקום, הגודל והמאפיינים של חלונות לאחר הפעלה מחדש, ולהגדרת כללים מיוחדים עבור סוגים בודדים של חלונות.
- ייצוג-צבע - מגדיר את ייצוג הצבע של משטח Wayland. לקוחות Wayland יכולים להעביר מטא-נתונים הדרושים להגדרת שקיפות, מודל צבע, תת-דגימה וטווח כימות, ומשמשים בעת המרת מאגר עם נתונים התואמים למודל הצבע YCbCr לייצוג RGB.
- ext-background-effect - מחיל אפקטים על חלקים שקופים למחצה של משטח Wayland, כגון טשטוש רקע.
- pointer-warp - מאפשר לאפליקציה להזיז את המצביע באופן מיידי למיקום מסוים.
פרוטוקולים הנמצאים בפיתוח בענף הניסויים:
- xx-session-management - משחזר את מצב החלונות עבור הפעלות שהופסקו (לדוגמה, לאחר קריסה של מנהל הקומפוזיציה).
- xx-input-method - מאפשר ליישומים ליישם שיטות קלט טקסט עבור קבצים מורכבים שרתים וליצור את הטקסט שהוזן, שניתן להשתמש בו, למשל, כדי ליצור מקלדות וירטואליות ושכבות IME (עורך שיטות קלט) לעיבוד קלט.
- xx-text-input — מאפשר לשרתים מורכבים ליישם שיטות קלט ולשלוח טקסט ליישומים. הפרוטוקול מתקן את האינטראקציה בין קוד מורכב. שרת ויישומים, ומאפשר לך לנהל יכולות כגון שידור טקסט קלט, טיפול באירועי שינוי מיקוד קלט והתחשבות בספציפיים של שדות קלט (שפה, בחירת טקסט, סוג תוכן).
פרוטוקולים המפותחים בענף "לא יציב":
- "מסך מלא" - שליטה בעבודה במצב מסך מלא.
- "שיטת קלט" - שיטות עיבוד קלט.
- "מעכב סרק" - חסימת השקת שומר המסך (שומר מסך).
- "input-timestamps" - חותמות זמן לאירועי קלט.
- "מקלדת-קיצורי-מעכב" - שולט בצירוף קיצורי מקלדת ומקשי קיצור.
- "linux-explicit-synchronization" ספציפי ל Linux מנגנון לסנכרון חוצצים ביחס לפני השטח.
- "תנועות מצביע" - שליטה ממסכי מגע.
- "אילוצי מצביע" - אילוצי מצביע (חסימה).
- "בחירה ראשונית" - באנלוגיה ל-X11, היא מבטיחה את פעולת הלוח הראשי (בחירה ראשונית), מידע שממנו בדרך כלל מוכנס באמצעות לחצן העכבר האמצעי.
- "אירועי מצביע יחסיים" - אירועי מצביע יחסיים.
- "קלט טקסט" - ארגון של קלט טקסט.
- "xdg-foreign" הוא ממשק לאינטראקציה עם המשטחים של הלקוח "השכן".
- "xdg-decoration" - עיבוד קישוטי חלונות בצד השרת.
- "xdg-output" - מידע נוסף על פלט הווידאו (משמש לשינוי קנה מידה חלקי).
- "xwayland-keyboard-grab" - לכידת קלט ביישומי XWayland.
מקור: OpenNet.ru
