X Window System protocols and architecture
कम्प्युटिंग में, एक्स विंडो सिस्टम (आमतौर परः एक्स11, या एक्स) बिटमैप डिस्प्ले के लिए एक नेटवर्क-पारदर्शी विंडो सिस्टम है। यह लेख X11 के प्रोटोकॉल और तकनीकी संरचना का विवरण देता है। क्लाइंट-सर्वर मॉडल और नेटवर्क पारदर्शिता एक्स क्लाइंट-सर्वर मॉडल का उपयोग करता है। एक एक्स सर्वर प्रोग्राम एक ग्राफिकल डिस्प्ले के साथ एक कंप्यूटर पर चलता है और विभिन्न क्लाइंट प्रोग्रामों के साथ संवाद करता है। एक्स सर्वर उपयोगकर्ता और ग्राहक कार्यक्रमों के लिए एक मध्यस्थ के रूप में कार्य करता है, क्लाइंट कार्यक्रमों से ग्राफिकल आउटपुट (खिड़कियों) के लिए टीसीपी पोर्ट 6000 पर अनुरोधों को स्वीकार करता है और उन्हें उपयोगकर्ता (प्रदर्शन) को प्रदर्शित करता है, और उपयोगकर्ता इनपुट (कीबोर्ड, माउस) प्राप्त करता है और इसे ग्राहक कार्यक्रमों में प्रेषित करता है। एक्स में, सर्वर उपयोगकर्ता के कंप्यूटर पर चलता है, जबकि ग्राहक दूरस्थ मशीनों पर चल सकते हैं। यह शब्दावली क्लाइंट-सर्वर प्रणालियों की सामान्य धारणा को उलट देती है, जहां क्लाइंट आम तौर पर उपयोगकर्ता के स्थानीय कंप्यूटर पर चलता है और सर्वर दूरस्थ कंप्यूटर पर चलता है। एक्स विंडो शब्दावली इस दृष्टिकोण को लेती है कि एक्स विंडो कार्यक्रम सभी गतिविधियों के केंद्र में है, अर्थात। एक्स विंडो प्रोग्राम अनुप्रयोगों और उपयोगकर्ता के माउस और कीबोर्ड इनपुट से अनुरोधों को स्वीकार करता है और उनका जवाब देता है। इसलिए, अनुप्रयोगों (दूरस्थ कंप्यूटरों पर) को एक्स विंडो सर्वर प्रोग्राम के ग्राहकों के रूप में देखा जाता है। सर्वर और क्लाइंट के बीच संचार प्रोटोकॉल नेटवर्क-पारदर्शी रूप से चलता हैः क्लाइंट और सर्वर एक ही मशीन पर या अलग-अलग पर चल सकते हैं, संभवतः अलग-अलग आर्किटेक्चर और ऑपरेटिंग सिस्टम के साथ। एक क्लाइंट और सर्वर एक एन्क्रिप्टेड कनेक्शन पर कनेक्शन को सुरंग बनाकर इंटरनेट पर सुरक्षित रूप से संवाद कर सकते हैं। डिजाइन सिद्धांत बॉब स्किफ़लर और जिम गेटिस ने एक्स के प्रारंभिक सिद्धांतों को निम्नानुसार निर्धारित किया (जैसा कि स्किफ़लर/गेटिस 1996 में सूचीबद्ध है): नई कार्यक्षमता को तब तक न जोड़ें जब तक कि कोई कार्यान्वयनकर्ता इसके बिना एक वास्तविक अनुप्रयोग को पूरा नहीं कर सकता है। यह तय करना उतना ही महत्वपूर्ण है जितना कि यह तय करना कि एक प्रणाली क्या नहीं है। दुनिया की सभी जरूरतों को पूरा न करें; बल्कि, प्रणाली को विस्तार योग्य बनाएं ताकि अतिरिक्त जरूरतों को ऊपर की ओर संगत तरीके से पूरा किया जा सके। एक उदाहरण से सामान्यीकरण से बदतर एकमात्र चीज बिना किसी उदाहरण के सामान्यीकरण है। यदि किसी समस्या को पूरी तरह से नहीं समझा जाता है, तो शायद कोई समाधान नहीं देना सबसे अच्छा है। यदि आप 10 प्रतिशत काम के लिए वांछित प्रभाव का 90 प्रतिशत प्राप्त कर सकते हैं, तो सरल समाधान का उपयोग करें। (यह भी देखें कि बदतर बेहतर है।) जितना संभव हो सके जटिलता को अलग करें। नीति के बजाय तंत्र प्रदान करें। विशेष रूप से, उपयोगकर्ता इंटरफेस नीति को ग्राहकों के हाथों में रखें। एक्स11 के डिजाइन के दौरान पहले सिद्धांत को संशोधित किया गया थाः नई कार्यक्षमता को तब तक न जोड़ें जब तक कि आप किसी वास्तविक अनुप्रयोग के बारे में न जानते हों जिसकी आवश्यकता होगी। एक्स ने तब से काफी हद तक इन सिद्धांतों का पालन किया है। X.Org फाउंडेशन कार्यान्वयन के विस्तार और सुधार की दृष्टि से संदर्भ कार्यान्वयन को विकसित करता है, जबकि इसे मूल 1987 प्रोटोकॉल के साथ लगभग पूरी तरह से संगत रखता है। सर्वर और ग्राहकों के बीच मुख्य प्रोटोकॉल संचार एक नेटवर्क चैनल पर पैकेटों का आदान-प्रदान करके किया जाता है। ग्राहक पहला पैकेट भेजकर कनेक्शन स्थापित करता है। सर्वर कनेक्शन की स्वीकृति या अस्वीकृति बताते हुए एक पैकेट वापस भेजकर, या आगे प्रमाणीकरण के अनुरोध के साथ जवाब देता है। यदि कनेक्शन स्वीकार कर लिया जाता है, तो स्वीकृति पैकेट में ग्राहक के लिए सर्वर के साथ बाद की बातचीत में उपयोग करने के लिए डेटा होता है। कनेक्शन स्थापित होने के बाद, क्लाइंट और सर्वर चैनल पर चार अलग-अलग प्रकार के पैकेटों का आदान-प्रदान करते हैंः अनुरोधः क्लाइंट सर्वर से जानकारी का अनुरोध करता है या उसे कोई कार्रवाई करने का अनुरोध करता है। जवाबः सर्वर एक अनुरोध का जवाब देता है। सभी अनुरोध उत्तर उत्पन्न नहीं करते हैं। घटनाः सर्वर ग्राहक को एक घटना भेजता है, उदाहरण के लिए, कीबोर्ड या माउस इनपुट, या एक विंडो को स्थानांतरित किया जा रहा है, आकार बदला जा रहा है या उजागर किया जा रहा है। त्रुटिः यदि अनुरोध अमान्य है तो सर्वर एक त्रुटि पैकेट भेजता है। चूंकि अनुरोध कतार में लगे होते हैं, इसलिए अनुरोध द्वारा उत्पन्न त्रुटि पैकेट तुरंत नहीं भेजे जा सकते हैं। एक्स सर्वर बुनियादी सेवाओं का एक समूह प्रदान करता है। क्लाइंट प्रोग्राम सर्वर के साथ बातचीत करके अधिक जटिल कार्यात्मकताओं का एहसास करते हैं। विंडोज जिसे अन्य ग्राफिकल यूजर इंटरफेस आमतौर पर विंडो कहते हैं, वह एक्स विंडो सिस्टम में एक शीर्ष-स्तरीय विंडो है। विंडो शब्द का उपयोग उन खिड़कियों के लिए भी किया जाता है जो दूसरी खिड़की के भीतर होती हैं, यानी मूल खिड़की की उप-खिड़कियाँ। चित्रात्मक तत्व जैसे बटन, मेनू, प्रतीक आदि। सभी खिड़कियों का उपयोग करके प्राप्त किए जाते हैं। एक विंडो को केवल मूल विंडो के उप-विंडो के रूप में बनाया जा सकता है। इसके कारण खिड़कियों को एक पेड़ में पदानुक्रमित रूप से व्यवस्थित किया जाता है। एक्स सर्वर स्वचालित रूप से पेड़ की जड़ बनाता है, जिसे रूट विंडो कहा जाता है। शीर्ष-स्तरीय खिड़कियाँ मूल खिड़कियों की सीधी उप-खिड़कियाँ हैं। स्पष्ट रूप से, रूट विंडो स्क्रीन जितनी बड़ी है, और अन्य सभी खिड़कियों के पीछे स्थित है। पहचानकर्ता एक्स सर्वर खिड़कियाँ, फ़ॉन्ट आदि के बारे में सभी डेटा संग्रहीत करता है। ग्राहक इन वस्तुओं के पहचानकर्ताओं को जानता है-पूर्णांक जो सर्वर के साथ बातचीत करते समय उनके लिए नाम के रूप में उपयोग कर सकते हैं। उदाहरण के लिए, यदि कोई क्लाइंट एक विंडो बनाना चाहता है, तो वह सर्वर से एक बनाने का अनुरोध करता है और (सफलता के मामले में) बदले में एक पहचानकर्ता प्राप्त करता है जो सर्वर नव निर्मित विंडो से जुड़ा होता है। पहचानकर्ता का उपयोग बाद में ग्राहक द्वारा अनुरोध करने के लिए किया जा सकता है, उदाहरण के लिए, खिड़की में खींची जाने वाली एक स्ट्रिंग। पहचानकर्ता सर्वर के लिए अद्वितीय होते हैं, न केवल ग्राहक के लिए; उदाहरण के लिए, किसी भी दो खिड़कियों में एक ही पहचानकर्ता नहीं होता है, भले ही दो अलग-अलग ग्राहकों द्वारा बनाया गया हो। एक ग्राहक किसी भी वस्तु को उसके पहचानकर्ता के रूप में देख सकता है, भले ही किसी अन्य ग्राहक ने वस्तु बनाई हो। विशेषताएँ और गुण प्रत्येक विंडो में विशेषताओं का एक पूर्वनिर्धारित सेट और गुणों का एक सेट होता है, जो सभी एक्स सर्वर में संग्रहीत होते हैं और उपयुक्त अनुरोधों के माध्यम से ग्राहकों के लिए सुलभ होते हैं। विशेषताएँ खिड़की के बारे में डेटा हैं, जैसे कि इसका आकार, स्थिति, पृष्ठभूमि का रंग, आदि। गुण डेटा के टुकड़े हैं जो एक खिड़की से जुड़े होते हैं। विशेषताओं के विपरीत, एक्स विंडो कोर प्रोटोकॉल के स्तर पर गुणों का कोई अर्थ नहीं है। एक ग्राहक एक खिड़की की संपत्ति में मनमाने ढंग से डेटा संग्रहीत कर सकता है। एक संपत्ति की विशेषता एक नाम, एक प्रकार और एक मूल्य है। गुण अनिवार्य प्रोग्रामिंग भाषाओं में चर के समान होते हैं, जिसमें अनुप्रयोग किसी दिए गए नाम और दिए गए प्रकार के साथ एक नई संपत्ति बना सकता है और उसमें एक मूल्य संग्रहीत कर सकता है। गुण खिड़कियों से जुड़े होते हैंः एक ही नाम के दो गुण दो अलग-अलग खिड़कियों पर अलग-अलग प्रकार और मूल्यों के साथ मौजूद हो सकते हैं। गुणों का उपयोग ज्यादातर अंतर-ग्राहक संचार के लिए किया जाता है। उदाहरण के लिए, WM _ NAME नामक संपत्ति खिड़की के लिए नाम संग्रहीत करती है; खिड़की प्रबंधक आमतौर पर इस संपत्ति को पढ़ते हैं और इसके शीर्ष पर खिड़की का नाम प्रदर्शित करते हैं। एक्सप्रोप प्रोग्राम एक विंडो के गुणों को प्रदर्शित कर सकता है। विशेष रूप से, xprop-root रूट विंडो के गुणों को दर्शाता है, जिसमें X संसाधन (कार्यक्रमों के मापदंड) शामिल हैं। घटनाएँ सर्वर द्वारा ग्राहक को भेजे गए पैकेट होते हैं ताकि यह बताया जा सके कि कुछ ऐसा हुआ है जिसमें ग्राहक को दिलचस्पी हो सकती है। एक ग्राहक सर्वर से किसी अन्य ग्राहक को एक कार्यक्रम भेजने का अनुरोध कर सकता है; इसका उपयोग ग्राहकों के बीच संचार के लिए किया जाता है। उदाहरण के लिए, जब कोई ग्राहक वर्तमान में चुने गए पाठ का अनुरोध करता है, तो उस ग्राहक को एक घटना भेजी जाती है जो वर्तमान में उस विंडो को संभाल रहा है जिसमें चयन होता है। एक खिड़की की सामग्री कुछ स्थितियों में "नष्ट" हो सकती है (उदाहरण के लिए, यदि खिड़की ढकी हुई है)। जब भी नष्ट सामग्री का कोई क्षेत्र दिखाई देता है, तो सर्वर क्लाइंट को सूचित करने के लिए एक एक्सपोज़ इवेंट उत्पन्न करता है कि विंडो का एक हिस्सा खींचा जाना है। अन्य कार्यक्रम ग्राहकों को कीबोर्ड या माउस इनपुट, नई खिड़कियों के निर्माण आदि के बारे में सूचित करने का काम कर सकते हैं। कुछ प्रकार के कार्यक्रम हमेशा एक ग्राहक को भेजे जाते हैं, लेकिन अधिकांश प्रकार के कार्यक्रम केवल तभी भेजे जाते हैं जब ग्राहक ने पहले उनमें रुचि दिखाई हो, क्योंकि ग्राहक केवल किसी प्रकार की घटनाओं में रुचि ले सकते हैं। उदाहरण के लिए, एक ग्राहक कीबोर्ड से संबंधित घटना में रुचि ले सकता है लेकिन माउस से संबंधित घटनाओं में नहीं। जिस तरह से एक्स विंडो सिस्टम रंगों को संभालता है, वह कभी-कभी उपयोगकर्ताओं को भ्रमित कर सकता है, और ऐतिहासिक रूप से कई अलग-अलग मोड का समर्थन किया गया है। अधिकांश आधुनिक अनुप्रयोग पूर्ण रंग (24-बिट रंग, लाल, हरे और नीले रंग के प्रत्येक के लिए 8 बिट) का उपयोग करते हैं, लेकिन पुराने या विशेषज्ञ अनुप्रयोगों को एक अलग रंग मोड की आवश्यकता हो सकती है। कई वाणिज्यिक विशेषज्ञ अनुप्रयोग स्यूडोकलर का उपयोग करते हैं। X11 प्रोटोकॉल वास्तव में एक एकल 32-बिट अहस्ताक्षरित पूर्णांक का उपयोग करता है-जिसे पिक्सेल मान कहा जाता है-अधिकांश ग्राफिक संचालन में एक ही रंग का प्रतिनिधित्व करने के लिए। प्राथमिक रंगों की तीव्रता को स्थानांतरित करते समय, प्रत्येक रंग घटक के लिए एक 16 बिट पूर्णांक का उपयोग किया जाता है। रंगों के निम्नलिखित प्रतिनिधित्व मौजूद हैं; उनमें से सभी को एक विशिष्ट उपकरण पर समर्थित नहीं किया जा सकता है। डायरेक्टकलरः एक पिक्सेल मान को अलग-अलग लाल, हरे और नीले उपक्षेत्रों में विघटित किया जाता है। प्रत्येक उपक्षेत्र एक अलग रंग मानचित्र अनुक्रमित करता है। सभी रंगीन मानचित्रों में प्रविष्टियों को बदला जा सकता है। ट्रूकलरः डायरेक्टकलर के समान, सिवाय इसके कि कलरमैप प्रविष्टियाँ हार्डवेयर द्वारा पूर्वनिर्धारित हैं और इन्हें बदला नहीं जा सकता है। आमतौर पर, लाल, हरे और नीले रंगों में से प्रत्येक तीव्रता का एक (निकट) रैखिक रैंप प्रदान करता है। ग्रेस्केलः एक पिक्सेल मान एक एकल रंग मानचित्र को अनुक्रमित करता है जिसमें मोनोक्रोम तीव्रता होती है। रंगीन मानचित्र प्रविष्टियों को बदला जा सकता है। स्टेटिकग्रेः ग्रेस्केल के समान, सिवाय इसके कि कलरमैप प्रविष्टियाँ हार्डवेयर द्वारा पूर्वनिर्धारित हैं और इन्हें बदला नहीं जा सकता है। छद्म रंग (चंकी): एक पिक्सेल मान एक एकल रंग मानचित्र को अनुक्रमित करता है जिसमें रंग की तीव्रता होती है। रंगीन मानचित्र प्रविष्टियों को बदला जा सकता है। स्टैटिककलरः स्यूडोकलर के समान, सिवाय इसके कि कलरमैप प्रविष्टियाँ हार्डवेयर द्वारा पूर्वनिर्धारित हैं और इन्हें बदला नहीं जा सकता है। एक्सलिब और अन्य क्लाइंट पुस्तकालय अधिकांश क्लाइंट प्रोग्राम एक्सलिब क्लाइंट लाइब्रेरी के माध्यम से सर्वर के साथ संवाद करते हैं। एक्सलिब के अलावा, एक्ससीबी लाइब्रेरी एक्स प्रोटोकॉल के अधिक निकटता से काम करती है। विशेष रूप से, अधिकांश ग्राहक ज़ॉ, मोटिफ, जीटीके + या क्यूटी जैसे पुस्तकालयों का उपयोग करते हैं जो बदले में सर्वर के साथ बातचीत करने के लिए एक्सलिब का उपयोग करते हैं। क्यूटी 5 रिलीज के साथ एक्सलिब से एक्ससीबी में बदल गया, लेकिन क्लाइंट प्रोग्राम इस परिवर्तन से लगभग पूरी तरह से अप्रभावित थे। इंटर-क्लाइंट संचार एक्स विंडो कोर प्रोटोकॉल ग्राहकों के बीच संचार के लिए तंत्र प्रदान करता हैः विंडो गुण और घटनाएँ, विशेष रूप से क्लाइंट-टू-क्लाइंट संदेश घटनाएँ। हालाँकि, यह इस तरह की बातचीत के लिए किसी भी प्रोटोकॉल को निर्दिष्ट नहीं करता है। इसके बजाय, अंतर-ग्राहक संचार सम्मेलनों का एक अलग समूह इन प्रोटोकॉल को नियंत्रित करता है। इंटर-क्लाइंट कम्युनिकेशन कन्वेंशन मैनुअल चयन और विंडो मैनेजर के साथ अनुप्रयोगों की बातचीत के माध्यम से डेटा के आदान-प्रदान के लिए प्रोटोकॉल को निर्दिष्ट करता है। कुछ लोगों ने इस विनिर्देश को कठिन और भ्रमित करने वाला माना है; अनुप्रयोग के रूप और अनुभव और संचार की स्थिरता को आम तौर पर किसी दिए गए डेस्कटॉप वातावरण में प्रोग्रामिंग द्वारा संबोधित किया जाता है। इंटर-क्लाइंट एक्सचेंज प्रोटोकॉल (ICE) ग्राहकों के बीच बातचीत के लिए प्रोटोकॉल बनाने के लिए एक रूपरेखा निर्दिष्ट करता है, ताकि प्रोग्रामर इसके ऊपर एक विशिष्ट प्रोटोकॉल का निर्माण कर सकें। विशेष रूप से, एक्स सत्र प्रबंधन प्रोटोकॉल (एक्स. एस. एम. पी.) आई. सी. ई. पर आधारित एक प्रोटोकॉल है जो सत्र प्रबंधक के साथ अनुप्रयोगों के बीच बातचीत को नियंत्रित करता है, जो एक संवादात्मक सत्र के अंत में डेस्कटॉप की स्थिति को संग्रहीत करने और उसी उपयोगकर्ता के साथ एक और सत्र फिर से शुरू होने पर इसे पुनर्प्राप्त करने का ध्यान रखता है। फ्रीडेस्कटॉप विनिर्देशों में ड्रैग-एंड-ड्रॉप कन्वेंशन एक्स. डी. एन. डी. (इसका चयन करके और दूसरी विंडो में खींचने के लिए उपयोग किया जाता है) और एम्बेडेड एप्लिकेशन कन्वेंशन एक्स. एम. बी. डी. (जो विवरण देता है कि एक एप्लिकेशन किसी अन्य एप्लिकेशन के सबविंडो में कैसे चल सकता है) सहित नए कन्वेंशन शामिल हैं। एक्स विंडो सिस्टम में चयन, कट बफर और ड्रैग-एंड-ड्रॉप के तंत्र उपयोगकर्ता को एक विंडो से दूसरी विंडो में डेटा स्थानांतरित करने की अनुमति देते हैं। चयन और कट बफर का उपयोग (आमतौर पर) तब किया जाता है जब कोई उपयोगकर्ता किसी विंडो में पाठ या कुछ अन्य डेटा का चयन करता है और एक अलग विंडो में चिपकाता है। ड्रैग-एंड-ड्रॉप का उपयोग तब किया जाता है जब कोई उपयोगकर्ता विंडो में कुछ चुनता है, फिर चयन पर क्लिक करता है और उसे दूसरी विंडो में खींचता है। चूँकि दो अलग-अलग अनुप्रयोग दो खिड़कियों को संभाल सकते हैं, डेटा हस्तांतरण के लिए एक ही एक्स सर्वर से जुड़े अलग-अलग ग्राहकों को बातचीत करने की आवश्यकता होती है। एक्स विंडो कोर प्रोटोकॉल में कुछ प्रकार के अनुरोध और कार्यक्रम शामिल हैं जो चयन विनिमय के लिए विशिष्ट हैं, लेकिन हस्तांतरण मुख्य रूप से सामान्य क्लाइंट-टू-क्लाइंट इवेंट सेंडिंग और विंडो गुणों का उपयोग करके किया जाता है, जो चयन हस्तांतरण के लिए विशिष्ट नहीं हैं। उपयोगकर्ता ग्राहकों के बीच विभिन्न प्रकार के डेटा को स्थानांतरित कर सकते हैंः यह आमतौर पर पाठ होता है, लेकिन यह एक पिक्समैप, एक संख्या, वस्तुओं की सूची आदि भी हो सकता है। चयन और ड्रैग-एंड-ड्रॉप सक्रिय तंत्र हैंः उपयोगकर्ता द्वारा विंडो में डेटा का चयन करने के बाद, विंडो को संभालने वाले क्लाइंट को उस डेटा को अनुरोध करने वाले एप्लिकेशन में स्थानांतरित करने के लिए एक प्रोटोकॉल का सक्रिय रूप से समर्थन करना चाहिए। इसके विपरीत, कट बफर एक निष्क्रिय तंत्र प्रदान करते हैंः जब उपयोगकर्ता कुछ पाठ का चयन करता है, तो इसकी सामग्री को एक कट बफर में स्थानांतरित कर दिया जाता है, जहां यह तब भी रहता है जब विंडो को संभालने वाला अनुप्रयोग समाप्त हो जाता है और विंडो नष्ट हो जाती है। विंडो प्रबंधक एक ऐसा प्रोग्राम है जो खिड़कियों की सामान्य उपस्थिति और ग्राफिकल यूजर इंटरफेस के अन्य ग्राफिकल तत्वों को नियंत्रित करता है। विभिन्न संस्थापनाओं में एक्स विंडो सिस्टम के रूप में अंतर मुख्य रूप से विभिन्न विंडो प्रबंधकों के उपयोग या विंडो प्रबंधक के विभिन्न विन्यासों से उत्पन्न होते हैं। विंडो मैनेजर खिड़कियों की स्थिति तय करने, उनके चारों ओर सजावटी सीमा रखने, आइकन को संभालने, खिड़कियों के बाहर माउस क्लिक को संभालने ("पृष्ठभूमि" पर), कुछ कीस्ट्रोक को संभालने आदि का ध्यान रखता है। एक्स सर्वर के दृष्टिकोण से, विंडो मैनेजर किसी भी अन्य ग्राहक की तरह एक ग्राहक के रूप में काम करता है। खिड़कियों के आसपास की प्रारंभिक स्थिति और सजावटी सीमाओं को खिड़की प्रबंधक द्वारा निम्नलिखित अनुरोधों का उपयोग करके संभाला जाता हैः एक अनुप्रयोग सर्वर से अनुरोध कर सकता है कि वह किसी दी गई खिड़की के उप-खिड़कियों की मैपिंग (दिखाने) के अनुरोधों को पूरा न करे, और इसके बजाय एक घटना भेजे; एक अनुप्रयोग खिड़की के मूल को बदलने का अनुरोध कर सकता है। विंडो मैनेजर शीर्ष-स्तरीय खिड़कियों (रूट विंडो के बच्चे) के मानचित्रण के लिए किसी भी अनुरोध को रोकने के लिए पहले अनुरोध का उपयोग करता है। जब भी कोई अन्य अनुप्रयोग शीर्ष-स्तरीय विंडो के मानचित्रण का अनुरोध करता है, तो सर्वर ऐसा नहीं करता है, बल्कि इसके बजाय विंडो प्रबंधक को एक कार्यक्रम भेजता है। अधिकांश विंडो प्रबंधक विंडो को पुनर्स्थापित करते हैंः वे एक बड़ी शीर्ष-स्तरीय विंडो बनाते हैं (जिसे फ्रेम विंडो कहा जाता है) और मूल विंडो को उसके बच्चे के रूप में पुनर्स्थापित करते हैं। चित्रात्मक रूप से, यह मूल विंडो को फ्रेम विंडो के अंदर रखने से मेल खाता है। फ्रेम विंडो का वह स्थान जो मूल विंडो द्वारा नहीं लिया जाता है, खिड़की के चारों ओर सजावटी फ्रेम ("बॉर्डर" और "टाइटल बार") के लिए उपयोग किया जाता है। विंडो प्रबंधक फ्रेम विंडो में माउस क्लिक का प्रबंधन करता है। उदाहरण के लिए, यह उपयोगकर्ता को सीमा पर या शीर्षक पट्टी पर क्लिक करके और खींचकर विंडो को स्थानांतरित करने या आकार बदलने की अनुमति देता है। विंडो मैनेजर ग्राफिकल यूजर इंटरफेस के आइकन और संबंधित दृश्य तत्वों को भी संभालता है। एक्स विंडो कोर प्रोटोकॉल के स्तर पर प्रतीक मौजूद नहीं हैं। इन्हें विंडो मैनेजर द्वारा कार्यान्वित किया जाता है। उदाहरण के लिए, जब भी किसी विंडो को "आइकॉनिफाइड" करना होता है, तो एफ. वी. डब्ल्यू. एम. विंडो मैनेजर विंडो को अनमैप करता है, और आइकन नाम के लिए एक विंडो बनाता है और संभवतः आइकन छवि के लिए एक और विंडो बनाता है। इसलिए आइकन का अर्थ और संचालन पूरी तरह से विंडो मैनेजर द्वारा तय किया जाता हैः कुछ विंडो मैनेजर जैसे कि डब्ल्यू. एम. 2 आइकन को बिल्कुल भी लागू नहीं करते हैं। सत्र प्रबंधक मोटे तौर पर, एक सत्र की स्थिति एक निश्चित समय पर "डेस्कटॉप की स्थिति" होती हैः अपनी वर्तमान सामग्री के साथ खिड़कियों का एक समूह। अधिक सटीक रूप से, यह इन खिड़कियों और जानकारी का प्रबंधन करने वाले अनुप्रयोगों का समूह है जो इन अनुप्रयोगों को आवश्यकता पड़ने पर अपनी प्रबंधित खिड़कियों की स्थिति को बहाल करने की अनुमति देता है। एक्स सत्र प्रबंधक के रूप में जाना जाने वाला एक कार्यक्रम सत्रों की स्थिति को बचाता और पुनर्स्थापित करता है। सबसे अधिक ज्ञात रूप से, सत्र प्रबंधक का उपयोग करने से उपयोगकर्ता को एक संवादात्मक सत्र से लॉग आउट करने की अनुमति मिलती है, लेकिन फिर से लॉग इन करते समय ठीक उसी स्थिति में वही खिड़कियां खोजने की अनुमति मिलती है। इसके काम करने के लिए, सत्र प्रबंधक कार्यक्रम लॉगआउट पर चल रहे अनुप्रयोगों के नामों को संग्रहीत करता है और उन्हें लॉगिन पर फिर से शुरू करता है। अनुप्रयोगों की स्थिति को भी बहाल करने के लिए (जो खिड़कियों की सामग्री को पुनर्स्थापित करने के लिए आवश्यक है), अनुप्रयोगों को सत्र प्रबंधक के अनुरोध पर अपने निष्पादन की स्थिति को सहेजने में सक्षम होना चाहिए और जब वे फिर से शुरू करते हैं तो इसे वापस लोड करना चाहिए। एक्स विंडो सिस्टम में एक्स. एस. एम. नामक एक डिफ़ॉल्ट सत्र प्रबंधक शामिल है। विकासकर्ताओं ने विशिष्ट डेस्कटॉप प्रणालियों के लिए अन्य सत्र प्रबंधकों को लिखा है। प्रमुख उदाहरणों में शामिल हैं, और के. डी. ई., एक्स. एफ. सी. ई. और जी. एन. ओ. एम. के लिए क्रमशः। एक्स डिस्प्ले मैनेजर एक्स डिस्प्ले मैनेजर के रूप में जाना जाने वाला प्रोग्राम एक्स विंडो सिस्टम में ग्राफिकल लॉगिन प्रॉम्प्ट दिखाता है। आम तौर पर, एक प्रदर्शन प्रबंधक स्थानीय कंप्यूटर पर एक या अधिक एक्स सर्वर चलाता है या दूरस्थ कंप्यूटर पर चलने वाले एक्स सर्वर से आने वाले कनेक्शन को स्वीकार करता है। स्थानीय सर्वर प्रदर्शन प्रबंधक द्वारा शुरू किए जाते हैं, जो फिर उपयोगकर्ता को लॉगिन स्क्रीन प्रस्तुत करने के लिए उनसे जुड़ता है। दूरस्थ सर्वर प्रदर्शन प्रबंधक से स्वतंत्र रूप से शुरू होते हैं और उससे जुड़ते हैं। इस स्थिति में, प्रदर्शन प्रबंधक एक चित्रमय टेलनेट सर्वर की तरह काम करता हैः एक एक्स सर्वर प्रदर्शन प्रबंधक से जुड़ सकता है, जो एक सत्र शुरू करता है; इस सत्र का उपयोग करने वाले अनुप्रयोग प्रदर्शन प्रबंधक के उसी कंप्यूटर पर चलते हैं लेकिन कंप्यूटर पर इनपुट और आउटपुट होते हैं जहां एक्स सर्वर चलता है (जो उपयोगकर्ता के सामने या दूरस्थ कंप्यूटर हो सकता है)। एक्स विंडो सिस्टम बुनियादी आपूर्ति प्रदर्शन प्रबंधक के रूप में एक्सडीएम के साथ जहाज करता है। अन्य प्रदर्शन प्रबंधकों में जी. डी. एम. (जी. एन. ओ. एम. ई.), के. डी. एम./एस. डी. डी. एम. (के. डी. ई.), डब्ल्यू. डी. एम. (विंडो मेकर में उपयोग किए जाने वाले डब्ल्यू. आई. एन. जी. एस. विजेट सेट का उपयोग करते हुए) और प्रवेश (एनलाइटनमेंट v. 17 में उपयोग की जाने वाली वास्तुकला का उपयोग करते हुए) शामिल हैं। एक्स के लिए उपयोगकर्ता इंटरफेस तत्व प्रारंभिक विजेट टूलकिट में ज़ॉ (एथेना विजेट सेट, 1983), ओ. एल. आई. टी. (ओपन लुक इंट्रिन्सिक्स टूलकिट, 1988), एक्स. वी. यू. (1988), मोटिफ (1980) और टी. के. शामिल थे। ओ. एल. आई. टी. और एक्स. व्यू. सन की विरासत ओपनविंडो के डेस्कटॉप वातावरण के लिए आधार टूलकिट के रूप में कार्य करते हैं। मोटिफ कॉमन डेस्कटॉप एनवायरनमेंट (सी. डी. ई.) के लिए आधार टूलकिट प्रदान करता है, जो व्यावसायिक यूनिक्स प्रणालियों जैसे सोलारिस, ए. आई. एक्स. और एच. पी.-यू. एक्स. पर उपयोग किया जाने वाला डेस्कटॉप वातावरण है। (सोलारिस 10 में सी. डी. ई. और जी. एन. ओ. एम. ई. दोनों शामिल हैं, बाद वाला पसंदीदा डेस्कटॉप वातावरण है।) हाल ही में विकसित किए गए टूलकिटों में क्यू. टी. (1991-, के. डी. ई. द्वारा प्रयुक्त), जी. टी. के. + (1997-, जी. एन. ओ. एम. ई. द्वारा प्रयुक्त), डब्ल्यू. एक्स. विजेट (1992-), एफ. एल. टी. के. (1998-), फॉक्स (1997-) और एफ. पी. जी. यू. आई. (2005-वर्तमान) शामिल हैं। एक्सटेंशन्स स्किफलर और गेटिस ने एक्स सर्वर को सरल लेकिन विस्तार योग्य बनाया। जैसे, बहुत सारी कार्यक्षमता अब प्रोटोकॉल के विस्तार में रहती है। प्रोटोकॉल स्तर पर, प्रत्येक विस्तार को नए अनुरोध/घटना/त्रुटि पैकेट प्रकार सौंपे जा सकते हैं। विस्तार सुविधाओं को क्लाइंट अनुप्रयोगों द्वारा विस्तार पुस्तकालयों के माध्यम से प्राप्त किया जाता है। सर्वर डिजाइन में मॉडुलरिटी की कमी के कारण वर्तमान एक्स सर्वर कार्यान्वयन में एक्सटेंशन जोड़ना कथित तौर पर मुश्किल है। एक्स. सी. बी. परियोजना का यह एक दीर्घकालिक लक्ष्य है कि एक्स. एम. एल. प्रोटोकॉल विवरणों से एक्सटेंशन के क्लाइंट और सर्वर दोनों पक्षों को स्वचालित रूप से उत्पन्न किया जाए। निम्नलिखित तालिका उन विस्तारों की एक आंशिक सूची प्रदान करती है जिन्हें विकसित किया गया है, मोटे तौर पर परिचय की पुनरावृत्ति द्वारा क्रमबद्ध किया गया हैः अप्रचलित विस्तार भी देखें एक्सलिब इंट्रिन्सिक्स (एक्सटी) एक्स विंडो सिस्टम कोर प्रोटोकॉल एक्स तार्किक फ़ॉन्ट विवरण नोट्स संदर्भ archive.org का 1990 संस्करण है। आगे पढ़ने के लिए रॉबर्ट डब्ल्यू. स्किफलर और जेम्स गेटिसः एक्स विंडो सिस्टमः कोर और एक्सटेंशन प्रोटोकॉल, एक्स संस्करण 11, रिलीज़ 6 और 6,1, डिजिटल प्रेस 1996, एक्स विंडोज का परिचय [sic] बाहरी लिंक X.Org फाउंडेशन X.Org फाउंडेशन विकी एक्स विंडो सिस्टम आंतरिक केंटन ली के एक्स विंडो और मोटिफ एक्स 11 एक्सटेंशन ट्यूटोरियल और वास्तुकला अनुप्रयोग परत प्रोटोकॉल रिमोट डेस्कटॉप प्रोटोकॉल एक्स विंडो एक्सटेंशन