מערכת חלונות

[ממוזער|300x300 פיקסלים|אלמנטים אופייניים של '''[חלון (מחשוב)|חלון**. מסגרת החלון מוגדרת על ידי [[מנהל חלונות|מנהל החלונות]] או על ידי הלקוח. תוכן החלון הוא המשימה של הלקוח.]]
ב[[מחשוב|תחום המחשוב]], **מערכת חלונות** (ב[[אנגלית]]: **Windowing system**) היא [[תוכנה]] המנהלת בנפרד חלקים שונים של [[צג|מסכי]] תצוגה. זהו סוג של [[ממשק משתמש גרפי]] (GUI) המיישם את פרדיגמת WIMP ([[חלון (מחשוב)|חלונות]], [[צלמית (סמל חזותי)|אייקונים]], תפריטים, [[סמן|מצביע]]) עבור ממשק משתמש.

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

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

== שרת תצוגה ==
[[קובץ:Schema_of_the_layers_of_the_graphical_user_interface.svg|ממוזער|300x300 פיקסלים|הרכיבים הבסיסיים של ממשק משתמש גרפי: **שרת התצוגה** מיישם את מערכת החלונות. [[מנהל חלונות]] פשוט מצייר רק את מסגרת החלון, אבל מנהלי חלונות מורכבים עושים יותר.]]
**שרת תצוגה** או **שרת** **חלון*' הוא תוכנית שהמשימה העיקרית שלה היא לתאם את הקלט והפלט של היישומים אל שאר מערכת ההפעלה והחומרה. שרת התצוגה מתקשר עם היישומים באמצעות פרוטוקול שרת התצוגה, פרוטוקול [[פרוטוקול תקשורת|תקשורת]].

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

== פרוטוקולי תקשורת של שרתי תצוגה ==
=== X11 ===
[[קובץ:X11_display_server_protocol.svg|ממוזער|350x350 פיקסלים|שרת X.Org מתקשר עם האפליקציות, למשל Amarok, על פרוטוקול X11]]
<div class="tright" style="clear:none">[[קובץ:X11.svg|טקסט=X Window System logo|שמאל|60x60 פיקסלים| לוגו מערכת חלונות X]]</div>דוגמה בולטת לשרת תצוגה היא שרת X.Org, שרץ על גבי הליבה (בדרך כלל ליבה דמוית [[Unix]], כגון [[לינוקס]] או [[BSD]]). הוא מקבל נתוני קלט משתמש (למשל מ evdev בלינוקס) ומעביר אותם לאחת האפליקציות הלקוחות שלו. שרת התצוגה מקבל גם נתונים מלקוחותיו; הוא מעבד את הנתונים, הוא מבצע את [[הרכבת שכבות|הרכבת השכבות]] ובלינוקס הוא מעביר את הנתונים לאחד משלושה רכיבי ליבה – DRM, gem או Driver KMS. הרכיב כותב את הנתונים לתוך ה-[[אוגר שקופיות|framebuffer]] ותוכן ה-framebuffer מועבר למסך המחובר ומוצג למשתמש.

אחד המימושים של קונספט שרת התצוגה הוא[[מערכת החלונות X|X Window System]], במיוחד הגרסה שבה נעשה שימוש בפועל – X.Org Server וספריות צד לקוח Xlib ו-XCB. שרת X.Org הוא שרת תצוגה, אבל במימוש הנוכחי שלו הוא מסתמך על תוכנית שנייה, מנהל החלונות המרכיב, כגון [[Mutter (מנהל חלונות)|Mutter]] או [[KWin]], לביצוע ההרכבה.

=== Wayland ===
[[קובץ:Wayland_display_server_protocol.svg|ממוזער|375x375 פיקסלים|פרוטוקול שרת התצוגה של Wayland]]
<div class="tright" style="clear:none">[[קובץ:Wayland_Logo.svg|טקסט=Wayland logo|שמאל|60x60 פיקסלים| הלוגו של Wayland]]</div>שרתי תצוגה המיישמים את פרוטוקול שרת התצוגה של Wayland נקראים מרכיבי (או קומפוזיטורי) Wayland. כמו כל שרת תצוגה, רכיב Wayland אחראי לטיפול בקלט ופלט עבור הלקוחות שלו, ובניגוד ל-X11 - אחראי גם על ההרכבה. דוגמאות הן Weston, [[Mutter (מנהל חלונות)|Mutter]], [[KWin]] או [[Enlightenment]].

מרכיבי Wayland מתקשרים עם לקוחות Wayland באמצעות פרוטוקול שרת התצוגה של Wayland. פרוטוקול זה מגדיר שלקוחות יכולים לכתוב נתונים ישירות לתוך ה-framebuffer באמצעות ה-API לעיבוד EGL. שרת התצוגה עדיין יכול להחליט איזה חלון נמצא למעלה ולכן גלוי למשתמש וגם עדיין אחראי להעברת נתונים לגבי התקני קלט מ-evdev ללקוחותיו.

Wayland משמש במידה מסוימת בהפצות שולחן העבודה של לינוקס, כגון [[פדורה (הפצת לינוקס)|פדורה]] ו[[אובונטו (לינוקס)|אובונטו]]. היא מתאימה גם למחשוב נייד ואומצה, למשל, על ידי הפרויקטים הממוקדים בסמארטפונים וטאבלטים [[טייזן|Tizen]], Sailfish OS ו-AsteroidOS.

מימוש של Wayland זמין תחת [[רישיון MIT]], הספריות libwayland-client ו-libwayland-server.

ישנו מאמץ מתמשך להוסיף תמיכה ב-Wayland במערכת ההפעלה [[Chrome OS]].

=== Mir ===
[[Mir|שרת התצוגה של Mir]] מגיע עם פרוטוקול שרת תצוגה משלו, השונה מאלה המשמשים את X11 ו-Wayland. עם זאת, Mir תומך בנוסף בפרוטוקול X11. הוא פותח על ידי [[קנוניקל]] ונועד להיות שרת התצוגה המועדף עבור [[אובונטו (לינוקס)|אובונטו]]. החל משנת 2017, הוא הוחלף בשרת התצוגה של Wayland עבור מהדורות שולחן העבודה של אובונטו.

ישנם מימושים חופשיים של שרת התצוגה של Mir, הספריות libmir-server ו-libmir-client זמינות תחת הרישיון החופשי [[הרישיון הציבורי הכללי של גנו|GPLv3]].

=== SurfaceFlinger ===
[[גוגל (חברה)|גוגל]] פיתחה שרת תצוגה בשם SurfaceFlinger עבור [[אנדרואיד (מערכת הפעלה)|אנדרואיד]] (מערכת הפעלה מבוססת ליבת לינוקס בעיקר למכשירים ניידים):

הכל באנדרואיד מוצג אל "משטח"; "משטחים" מיוצרים על ידי אפליקציות וממוקמים בתור המנוהל על ידי SurfaceFlinger.

=== קומפוזיטור קוורץ ===
עבור משפחת מערכות ההפעלה [[macOS]] של אפל, Quartz Compositor ממלא את המשימות של שרת תצוגה ושל מנהל חלונות במערכת החלונות.

=== מנהל חלונות שולחן העבודה ===
עבור [[Microsoft Windows]], מ-[[Windows Vista]] ואילך, Desktop Window Manager מאפשר שימוש בהאצת חומרה לעיבוד ממשק המשתמש הגרפי. הוא נוצר במקור כדי לאפשר חלקים מחוויית המשתמש החדשה של "Windows Aero", שאפשרה אפקטים כמו שקיפות, החלפת חלונות תלת־ממדית ועוד. הוא כלול גם ב-Windows Server 2008, אך דורש התקנת התכונה "חוויית שולחן עבודה" ומנהלי התקנים גרפיים תואמים. מ-חלונות 8 ואילך לא ניתן להשבית את DWM והוא מבצע עיבוד גרפי באמצעות תוכנה אם לא מותקן כרטיס גרפי מתאים.

== רשימת מערכות חלונות ==
=== למערכות הפעלה [[מערכת הפעלה דמוית יוניקס|דמויות יוניקס]] ===
*  ו-rio עבור [[Plan 9 from Bell Labs|תוכנית 9]]
* FramebufferUI – מערכת חלונות בתוך הליבה
* *HP Windows/9000'' (בגרסאות מוקדמות של HP-UX)
* ספיר עבור מחשבי PERQ
* ManaGeR (MGR)
* Metisse
* Mir
* NeWS / OpenWindows
* NeXT DPS
* Orbital
* Qt מורחב
* קומפוזיטור קוורץ (Mac OS X)
* SunView
* Twin (Text WINdows)
* מערכת החלונות W
* wayland
* מערכת החלונות X
* XFast
* Xynth

### עבור מערכות הפעלה [[Windows NT|ממשפחת Windows NT]]
* מנהל חלונות שולחן העבודה (DWM) ב-Microsoft Windows (Vista ואילך)
* ReactOS Explorer
* Classic Shell
* Pokki
* RetroUI
* טליסמן דסקטופ

### מערכות חלונות [[World Wide Web|אינטרנט]]
* דוג'ו
* ExtJS
* TIBCO

## ראו גם
* ערכת כלים של ווידג'טים
* סביבת שולחן עבודה

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

## הערות שוליים

קטגוריה:פרוטוקולי תקשורת
קטגוריה:ממשקי משתמש במחשב
קטגוריה:תוכנות מערכת