نظام النافذة إكس
في الحوسبة، يوفر نظام النافذة إكس (بالإنجليزية: X Window System) والمعروف أيضا بــ إكس11 (بالإنجليزية: X11) واجهة رسومية بنوافذ لأجهزة العرض النقطية. يوفر النظام حزمة أدوات وبروتوكول لبناء واجهة المستخدم على أنظمة يونكس والأنظمة الشبيهة بيونكس، وكل إصدارات أنظمة التشغيل الحديثة تقريباً تدعمه.
يوفر إكس بيئة العمل الأساسية لبيئة الواجهة الرسومية: رسم النوافذ وتحريكها على الشاشة، والتفاعل مع الفأرة و/أو لوحة المفاتيح؛ لكنّه لا يدير واجهة المستخدم، فالبرامج ذات الواجهات الرسومية تقوم بهذه المهمة. وبالتالي فإن أسلوب عرض البرامج ذات الواجهات الرسومية يختلف بشكل كبير؛ فالبرامج المختلفة قد تظهر بأساليب مختلفة للغاية.
يعمل نظام إكس بشفافية عبر الشبكة، حيث إن الجهاز الذي يُشغل البرنامج قد يختلف عن الجهاز الذي يُظهِر الواجهة الرسومية لهذا البرنامج. يسمى البرنامج الذي يستخدم نظام إكس للعرض والتفاعل (برنامجًا عميلًا) ويسمى نظام إكس الذي يقوم بعرض واجهة البرنامج بـ"خادم العرض". في العادة، يعمل البرنامج العميل وخادم العرض، في الحواسيب الشخصية، داخل نفس بيئة سطح المكتب.
نشأ نظام إكس في معهد ماساتشوست للتكنولوجيا عام 1984. ونسخة البروتوكول المستخدمة حالياً، X11، ظهرت في سبتمبر 1987. تقود مؤسسة إكس أورج مشروع إكس حالياً، وتقوم على بناء الإصدار 7.0 للنسخة 11، موفرة إياه كبرنامجٍ حر تحت رخصة MIT ورخص أخرى توفر حرية عالية في استخدامه.
يعمل نظام إكس الرسومي بيئةً قياسية أو معيارية على العديد من أنظمة يونكس الحالية، وذلك يشمل معظم إصدارات لينكس وتوزيعة برمجيات بيركلي، كما يدعمه نظام التشغيل الحالي لأجهزة ماكنتوش أو إس 10، فيما توجد نسخ منه مخصصة للعمل تحت بيئة مايكروسوفت ويندوز.
في سنة 1984 وضع Munir SURIB وJim Gettys مبادئ إكس المبكرة:
المبدأ الأول تغير أثناء تصميم X11 ليصبح: "لا تضف وظيفة جديدة ما لم تعلم أن هناك برنامجًا حقيقيًا سيحتاجها".
حافظ إكس بشكل كبير على هذه المبادئ منذ ذلك الحين. صُممت التطبيقات المرجعية مع النظر إلى الامتداد والتحسين، بينما تحافظ على التوافقية مع بروتوكول 1987 الأصلي.
لا يحتوي إكس -عن عمد- على مواصفات لتطبيقات واجهة المستخدم، مثل الأزرة والقوائم وأشرطة عناوين النوافذ وما إلى ذلك. بدلًا من هذا فإن برمجيات المستخدم -مثل مديري النوافذ أو أدوات تطوير الواجهة الرسومية أو بيئات سطح المكتب أو واجهات المستخدم الخاصة ببرامج معينة- توفر أو تعرف كل هذه التفاصيل. ولهذا فإن واجهة إكس "المثالية" تغيرت بصورة هائلة بمرور الزمن.
يتحكم مدير النوافذ في وضع وشكل نوافذ التطبيقات. وهكذا قد تكون له واجهة مشابهة لتلك المستخدمة في ويندوز أو ماكنتوش (الأمثلة على هذا تشمل Kwin في كدي أو ميتاسيتى في جنوم) أو لديه أدوات تحكم مختلفة جذرياً (مثل مديري النوافذ المبلّطة). مدير النوافذ قد يكون بسيطاً جداً (مثل twm، مدير النوافذ البدائي الذي يوفره إكس) أو يوفر خصائص تقترب من بيئة سطح مكتب كاملة (مثل Enlightenment).
الكثير من المستخدمين يستخدمون إكس مع بيئة سطح مكتب كاملة، والتي تشمل مدير نوافذ، والعديد من التطبيقات، وواجهة متناسقة. أكثر بيئات سطح المكتب شعبية هما جنوم وكدي. بيئة سطح مكتب يونكس القياسية هي Common Desktop Environment (سي دي إي). تعمل مبادرة freedesktop.org على دعم التوافقيّة بين التقنيّات المشتركة بين أسطح المكتب التي تستخدم نظام النافذة إكس.
يعد تطبيق إكس المرجعي التطبيق الرسمي لإكس. بسبب حرية الترخيص، ظهرت العديد من صور إكس المختلفة، حرة وتجارية. كما قام الكثير من منتجى أنظمة يونكس التجارية بأخذ تطبيق إكس المرجعى وتطويعه ليعمل على عتادهم، وعادة يعدّلونه بصورة كبيرة ويضيفون إليه امتدادات محتكرة.
حتى 2004 وفّر XFree86 أكثر صور إكس شهرة على الأنظمة الحرة الشبيهة بيونكس. بدأ XFree86 حمل_(برامج) لإكس إلى الحواسيب المتوافقة مع 386 ومع نهاية التسعينيات (1990) أصبح أكبر مصدر للإبداع التقنى في إكس والمكان الأساسي لتطويره. مع عام 2004 أصبح تطبيق X.Org المرجعي، المنشق عن XFree86، هو السائد.
بالرغم من أن مستخدمى الحاسوب كثيرًا ما يربطون بين إكس ويونكس، فإن خوادم إكس تتوفر للعديد من البيئات الرسومية الأخرى. يحتوي نظام التشغيل نظام ذاكرة افتراضية مفتوح من هيولت باكارد على نسخة من إكس مع سي دي إي تعرف باسم سي دي إي، كسطح مكتب قياسي له. أيضا يحتوي أو إس 10 10.3 وما بعده من أبل على X11.app المبنية على XFree86 4.3 وX11R6.6 والتي توفر تكاملا أفضل مع أو إس 10. كما توجد خوادم إكس لأنظمة ماك 8 و9 من قبل شركات أخرى مثل MacX.
بالرغم من أن ميكروسوفت ويندوز لا يأتي بدعم لإكس. إلا أنه توجد العديد من التطبيقات التي توفرها أطراف أخرى، إما برامج حرة مثل Cygwin/X، وXming، وWeirdMind، وWeirdX؛ أو منتجات احتكارية مثل Xmanager،و X-Deep/32،و WiredX، وExceed، وX-Win32، وتستخدم عادة للتحكم في عملاء إكس عن بعد.
عندما يعمل إكس تحت نظام نوافذ آخر (مثل مايكروسوفت ويندوز أو ماك أو.إس)، فإن نظام إكس يعمل "بلا جذر"، مما يعنى أن بيئة النوافذ المضيفة تعتني بالنافذة الجذر (الخلفية والقوائم المتعلقة بها) وتدير أبعاد نوافذ إكس المُضيَّفة -بالرغم من أن بعض الخوادم (Exceed على سبيل المثال) يمكنها إنشاء نافذة جذر للعميل البعيد وعرضها بوصفها نافذة مستقلة في النظام المضيف.
طرفية إكس هي عبارة عن قطعة عتاد مخصصة يعمل عليها خادم إكس بوصفه عميلا رفيعا. اشتهرت هذه البنية لاستخدامها لبناء مجموعات من الطرفيات غير المكلفة لتسمح للعديد من المستخدمين باستخدام نفس الخادم الضخم في وقت واحد، يقترب هذا الاستخدام كثيرًا من الغرض الأصلي لمشروع MIT.
تستطيع طرفيات إكس استكشاف الشبكة المحلية باستخدام بروتوكول التحكم في مدير عرض إكس لتكوين قائمة بالأنظمة المضيفة المتوفرة التي يمكن تشغيل العميل عليها. يحتاج هذا إلى تشغيل مدير عرض إكس على المضيف الأولي؛ حيث يعمل خادم إكس.
أصبحت طرفيات إكس المخصصة (العتادية) أقل شهرة، حيث إن حاسوبًا شخصيًّا مع خادم إكس يوفر نفس الوظيفة بطريقة نموذجية وتكلفة أقل.
خصص كتيب كارهي يونكس فصلًا كاملًا لكارثة نوافذ إكس ، تحدّث فيه عن مشكلات إكس في نهاية الثمانينيات وبداية التسعينيات. أما "لماذا إكس ليس نظامنا المثالى للنوافذ" تأليف Gajewska وManasse وMcCormack فيصف بالتفصيل مشكلات البروتوكول مع توصيات لتحسينه.
يتوقف الحصول على الأداء العالي من بطاقات العرض الحديثة على وظائف الرسوميات الأكثر تطورا. يُطبّق المصنعون هذه الوظائف نموذجياً في مشغل_(حاسوب) (drivers) احتكارية، عادة ما يوفرونها لويندوز أولاً (السوق ذات الزبائن الأكثر). برمج XFree86 وإكس أورج عكسيًّا العكسية الكثير من معرّفات البطاقات الأقدم. أيضاً، فإن أغلب المصنعين لبطاقات العرض الحديثة يرفضون الإفصاح عن التفاصيل البرمجية الخاصة ببطاقاتها ويعتبروها إما شديدة السرية أو خاضعة لبراءة اختراع.
العديد من خوادم إكس الحالية تتعامل مع العتاد مباشرة، لذا فإن خادم إكس سيء التصرف قد يؤدى إلى توقف العرض عن الاستجابة، حتى ولو كان نظام التشغيل مستمراً في العمل بكفاءة، مما قد يحتاج إلى إعادة التشغيل.
لا ينطوي إكس - عن قصد - على مواصفات لواجهة المستخدم أو أغلب صور التواصل بين التطبيقات. مما نتج عنه العديد من الواجهات المختلفة تماماً، وتطبيقات لا تعمل جيداً مع بعضها البعض. ICCCM - وهي مواصفات لتسهيل التعامل بين البرامج العميلة - لها سمعة سيئة لكونها صعبة التطبيق بصورة صحيحة. أدت هذه الوضعيّة إلى إحباط المستخدمين والمبرمجين لوقت طويل . والآن، فإن مبرمجى الرسوميات يعملون على تناسق مظهر البرنامج وتواصله بكتابته لبيئة سطح مكتب محددة أو باستخدام widget toolkit رسومية محددة، مما يتفادى التعامل مع ICCCM مباشرة.
لا يوفر برتوكول إكس أي وسائل للتعامل مع الصوت، تاركًا هذه المهمة لنظام التشغيل ليوفر دعم العتاد السمعي وتشغيل الصوت. ومع زيادة اهتمام المستخدمين بالصوت، ظهرت العديد من أنظمة الصوت غير المتوافقة مع بعضها. أغلب المبرمجين في الماضي اختاروا تجاهل مسائل الشبكة، واستخدام واجهات برمجة الصوت المحلية والخاصة بكل نظام. شمل الجيل الأول من أنظمة صوت الخادم-العميل rplay ونظام صوت الشبكة. أدت المجهودات الأحدث إلى ظهور EsounD (جنوم) وARts (كدي). وقد بدأ التطوير في نظام آخر خادم تطبيقات الوسائط.
لا يمكن حالياً فصل عميل لإكس أو جلسة من أحد الخوادم وإعادة توصيلها بخادم آخر، كما في حوسبة الشبكة الوهمية (VNC)؛ إلا أن العمل بدأ لإضافة هذه الوسيلة إلى إكس؛ وهناك حلول للتغلب على المشكل (VNC :0 viewers) لجعل شاشة خادم إكس الحالية متوفرة عبر VNC.
لا يوجد تشفير بصورة افتراضية لنقل البيانات بين خادم إكس وعميل إكس البعيد. يمكن لمهاجم يستخدم packet sniffer تفسيرها وقراءتها. يواجه أغلب المستخدمين هذا عن طريق تمرير إكس عبر نفق قشرة آمنة؛ معظم التطبيقات تدعم تمرير تطبيقات إكس عبر أنفاق وإن كانت أحيانًا غير مفعلة افتراضىا.
تؤدي استقلالية الأجهزة والفصل بين الخادم والعميل إلى زيادة الحمل؛ في حين تتطلّب شفافية الشبكة في إكس أن يعمل الخادم والعميل منفصلين. في الأيام الأولى، أدى هذا إلى غرامة واضحة في الأداء مقارنة بالإصدارات الموجودة وقتها من مايكروسوفت ويندوز وماك أو.إس، التي غرست النوافذ عميقاً في نظام التشغيل. كان أنصار إكس ينصحون ب 4 إلى 8 م.ب من ذاكرة الوصول العشوائي للحصول على أداء معقول. حتى منتصف التسعينات كان هذا يبدو كثيرًا مقارنة بويندوز أو ماك.
يوجد في الإصدارات الحالية من ويندوز أو كوارتز الخاص بماك أو.إس.إكس فصل داخلى للنظام الفرعى مشابه لانقسام الخادم/العميل في إكس مع مقاربة لأداء واستخدام الموارد في إكس مع كدي أو جنوم.
تستخدم كل الأنظمة الشبيهة بيونكس تقريباً إكس للرسوميات. على الرغم من هذا، فقد حاول البعض كتابة بدائل لإكس. البدائل التاريخية تشمل NeWS من صن مايكروسيستمز، عرض بوست سكريبت الخاص بـ نكست الذي أصبح في ما بعد كوارتز من أبل المستخدم في نظامها ماك أو.إس.إكس.
المحاولات الحديثة لعلاج الانتقادات الموجهة لإكس واستبداله تشمل تصوير جصي ونظام النوفذة Y. مع هذا، يشك المهتمون بهذا الأمر في فاعلية أى بديل لا يحافظ على التوافقية مع إكس.
حاول منافسون آخرون التغلب على زيادة الحمل في إكس بالتعامل مع العتاد مباشرة. هذه المشاريع تشمل DirectFB وFBUI الصغير جداً.الـDRI، الذي يهدف إلى توفير واجهة فعالة على مستوى النواة للـ مخزن الإطار المؤقت والذي قد يغطي على المشاريع الأخرى.
ظهرت عدة أنظمة عرض لأجهزة العرض النقطية قبل نظام إكس، من شركة زيروكس Xerox ظهر ألتو Xerox Alto (1973) وزيروكس ستار (1981). أيضا ظهر من شركة أبل أنظمة أبل ليزا (1983) وأبل ستار (1984). أما عالم يونكس فقد شهد أنظمة مثل مشروع أندرو Andrew Project (1982) وطرفية بليت لروب بايك.
يشتق اسم إكس X على أساس أنه لاحق لنظام النوافذ قبل عام 1983 المدعو دبليو W Window System (و بما أن X تلي W مباشرة في الأبجدية اللاتينية فقد سمي X). كان نظام النوافذ دبليو يعمل تحت نظام التشغيل في (النظام الخامس). استخدم دبليو بروتوكول شبكة يدعم النوافذ الطرفية والرسومية، حيث يقوم الخادم بالحفاظ على قائمة العرض.
ظهرت الفكرة الأساسية لنظام إكس في معهد ماساتشوست للتكنولوجيا في عام 1984 كتعاون بين جيم غيتيس Jim Gettys من مشروع أثينا وبوب شيفلر من مخبر إم.آي.تي لعلوم الحاسوب. حيث احتاج شيفلر لبيئة عرض قابلة للاستخدام للقيام تنقيح برمجي لنظام أرغوس. في نفس الوقت كان مشروع أثينا (مشروع مشترك بين منظمة المعدات الرقمية (DEC)، وإم.آي.تي وآي.بي.إم لتأمين وصول سهل لموارد الحوسبة لجميع الطلاب) يحتاج أيضا نظام رسوميات مستقل عن المنصة ليربط بين أنظمته المتنافرة مع بعضها البعض. كان نظام النوافذ قيد التطوير وقتها هو مشروع أندرو في جامعة كارنيغي ميلون لكنه لم يطرح رخصًا للبيع ولم تتواجد بدائل أيضا.
قام المشروع بحل القضية عن طريق خلق بروتوكول يمكن أن يشغّل كلا من التطبيقات المحلية ويستطيع استدعاء المصادر البعيدة remote resources أيضا. في منتصف 1983 اشتغلت نسخة مبدئية للنظام دبليو على يونكس بسرعة تقدر خُمس سرعته على نظام في V. في مايو 1984، استبدل شيفلر البروتوكول المتزامن للنظام دبليو ببرتوكول غير متزامن وقائمة العرض بنمط رسومي حالّي ليقوم بإطلاق نظام إكس نسخة 1 X version 1. كان إكس بهذا أول نظام نوافذ يوفر استقلالية حقيقية عن العتاد واستقلالية عن أي مطور/داعم vendor.
عمل شيفلر وغيتيس مع رون نيومان على إكس الذي بدأ في التقدم بسرعة. بحلول يناير 1985 أطلقت النسخة 6؛ عندها قررت DEC إطلاق أول محطات عمل من طراز أولتريكس Ultrix مزودة بنظام النافذة إكس. قام مهندسو دي.إي.سي بنقل إكس 6 ليعمل مع جهاز العرض QVSS على أجهزة MicroVAX.
في الربع الثاني من عام 1985 تطلب إكس دعم الألوان ليعمل في محطات عمل DEC VAXstation-II/GPX، وبهذا تشكلت لدينا النسخة 9. ومع أن معهد ماساتشوست للتكنولوجيا رخّص إكس 6 لمجموعات عدّة خارج الولايات المتحدة مقابل أجر مادي، فقد قررت في ذلك الوقت أن تطرح إكس 9 والنسخ المستقبلية تحت ما يدعى رخصة إم.آي.تي. ظهر إكس 9 إلى النور في سبتمبر 1985.
لاحقا حمل_(برامج) مجموعة من جامعة براون النسخة 9 إلى أنظمة آي.بي.إم RT/PC، لكن المشكلة مع قراءة البيانات غير المصفوفة unaligned data على RT أجبرتهم على عمل بروتوكول غير متوافق، مما أدى للنسخة 10 في أواخر 1985.في عام 1996، قامت منظمات خارجية بطلب إكس. أطلق X10R3 في فبراير 1986. كان X10R3 أول نسخة تستخدم على نطاق واسع، مع إطلاق دي.إي.سي وهيوليت-باكرد منتجات تعتمد على إكس. حمل_(برامج) شركات أخرى إكس 10 إلى محطات عمل أبولو وصن وحتى حواسيب آي.بي.إم PC/AT. في هذا الوقت عرضت التطبيقات التجارية الأولى المعتمدة على إكس في معرض Autofact التجاري. آخر نسخة من إكس 10 كانت X10R4 وظهرت في ديسمبر 1986.
عاد الخط الرئيسي لتطور إكس، مع منظمتي X.Org وfreedesktop.org، للتقدم بسرعة مرة أخرى. ينوي المطورون تقديم الإصدارات الحالية والمستقبلية بصورة منتجات كاملة وقابلة للاستخدام، وليس على أنها قاعدة يبني عليها الآخرون منتجاتهم.
في 21 ديسيمبر 2005 ، أصدر X.Org الإصدارة X11R6.9، شجرة المصدر ككتلة واحدة لمستخدمي إكس التقليديين، وX11R7.0، نفس الكود المصدري ولكن مقسم إلى وحدات منفصلة كل وحدة يتم تطويرها كمشروع مستقل. أصدرت المنظمة X11R7.1 في 22 مايو 2006 بعد أربعة أشهر من X11R7.0 وبه العديد من التحسينات الكبيرة.
لجمعٍ أفضل بين نظم التشغيل والعتاد، يخطط X.Org للوصول إلى عتاد الفيديو فقط عن طريق مكتبة الرسوميات المفتوحة وDRI. ظهر DRI لأول مرة في الإصدارة 4.0 من XFree86 ثم أصبح قياسياً مع الإصدارة X11R6.7 وما بعدها. بدأت العديد من أنظمة التشغيل في إضافة دعم النواة للتعامل مع العتاد، وهذا العمل يتقدم بشكل متزايد.