النقاط الرئيسية
Wayland هو نظام بديل لتوزيعات Linux. وهو يحل محل معيار X11 القديم. ولأنه يتطلب تعديل التطبيقات للعمل معه، فقد كان التبني بطيئًا حتى الآن. وفي وقت كتابة هذا المقال، فإن زيادة الأمان هي الميزة الرئيسية مقارنةً بمعيار X11.
يتيح لك نظام X11، أو نظام X Window، عرض النوافذ والتحكم فيها في بيئة سطح المكتب الرسومية. يعد Wayland بديلاً لنظام X11. وهو مصمم ليكون أسرع وأكثر أمانًا. إليك ما تحتاج إلى معرفته عنه.
ما هو وايلاند؟
وايلاند يعد Wayland بديلاً حديثًا لـ X11، الذي كان نظام النوافذ الافتراضي على Linux لعقود من الزمان. Wayland هو بروتوكول اتصال يحدد المراسلة بين خادم عرض X Window وتطبيقات العميل. يوفر مشروع Wayland مكتبات العميل والخادم التي تمكن التطبيقات من استخدام البروتوكول.
تم البدء في مشروع Wayland بواسطة القبعة الحمراء مطور في عام 2008.
الأسماء العديدة لـ X
نظام X Window هو نظام نوافذ تم إصداره لأول مرة لنظام التشغيل Unix بواسطة معهد ماساتشوستس للتكنولوجيا في عام 1984. يمكن للتطبيقات البناء على الوظائف التي يوفرها نظام النوافذ لإنشاء واجهات المستخدم.
بحلول عام 1987، وصل نظام X Window إلى الإصدار 11، وأصبح معروفًا باسم X11. وهو الآن تحت إدارة مؤسسة X.Orgلا يزال الإصدار 11 موجودًا، على الرغم من وجود العديد من الإصدارات الأصغر حجمًا منذ عام 1987. وحتى وقت كتابة هذا المقال، الإصدار المستقر الحالي هو اكس11 ار7.7.
لا يشير الحرف “X” في الاسم إلى الرقم عشرة بالأرقام الرومانية، ولا يشير إلى “Xtra” أو “Xtended” أو أي شيء من هذا القبيل. كان نظام النوافذ السابق يسمى “W”، وهو اختصار لكلمة “windows”، وكانوا ببساطة ينتقلون إلى الحرف التالي في الأبجدية عندما بدأوا المشروع الجديد.
ستسمع أن نظام X Window يُشار إليه باسم “X”، و”X11″، و”Xorg”، و”X Windows”، و”نظام X Window”.
كيف يعمل X11
يتعامل نظام X Window مع الأحداث والعناصر الأولية منخفضة المستوى، مثل التفاعل مع الماوس ورسم النوافذ وتحريكها. وتتعامل التطبيقات مع العناصر المرئية وتصميم الواجهة. ويتخذ مبرمج التطبيق خيارات تتعلق بمظهر النوافذ والأزرار التي تحتوي عليها ومكان وجود هذه الأزرار. ويرسم نظام X Window التصميم الناتج على الشاشة.
يوفر X11 تعريفًا للاتصال الذي يجب أن يمر بين المكونات المختلفة لنظام X Window System العامل. هذا الاتصال مطلوب لأن الكود الذي يستخدمه تطبيق X-End لرسم النوافذ وعناصر الواجهة ليس داخل التطبيق. تتم مشاركة هذا العمل بين خادم X ومدير النوافذ.
التطبيقات هي عملاء لخادم X. مدير النوافذ هو نوع خاص من العملاء. خادم X مسؤول عن إدارة الموارد وتنفيذ طلبات الرسم وتجميع الأحداث مثل ضغطات المفاتيح ونقرات الماوس للتطبيقات المناسبة.
كما يعمل كوسيط في الاتصال بين مدير النوافذ والتطبيقات، حيث يقوم بتبادل الرسائل فيما بينهما. ويحتفظ مدير النوافذ بقائمة بالنوافذ المفتوحة للتطبيقات، ومكانها على الشاشة، وحجمها، وما إذا كانت متداخلة، وما إلى ذلك.
يحتفظ مدير النوافذ المركب بمخزن مؤقت خارج الشاشة لكل نافذة. ويقوم بتركيب هذه المخازن المؤقتة في صورة واحدة تمثل النافذة العلوية ـ والتي تمثل سطح المكتب بالكامل ـ والتي يتم كتابتها على الشاشة.
تستخدم جميع بيئات سطح المكتب الرسومية الحديثة، بما في ذلك GNOME وKDE، مديري النوافذ المركبة.
كيف يعمل Wayland
تم تصميم Wayland لحل مشاكل X11. تتطلب بنية X11 قدرًا كبيرًا من الرسائل. يقع خادم X بين العملاء ومدير النوافذ. كما يقع بين كل شيء و—عبر النواة—أجهزة الرسومات. يمكن أن يؤدي حجم الرسائل إلى تأخير وتجربة بصرية متقطعة ومتقطعة.
توجد أيضًا قاعدة بيانات كبيرة. فهناك تطبيق الخادم، وتطبيق Window Manager، ومكتبة X11 التي يستخدمها العملاء. وكلما كانت قاعدة البيانات الخاصة بك أكبر (وأقدم)، كلما كان من الصعب صيانتها، وكلما واجهت صعوبة أكبر في التعامل مع التعليمات البرمجية القديمة.
من خلال تغيير البنية التحتية، قامت Wayland بتحديث وتبسيط قاعدة التعليمات البرمجية، مما يوفر فوائد الأداء والأمان المحسن.
في الواقع، قاموا بدمج الخادم ومدير النوافذ في تطبيق واحد. لقد قاموا بإزالة أي كود يقوم بأداء وظائف يتم تنفيذها الآن بواسطة النواة. وبدلاً من تكرار الجهد، قاموا بالاستفادة من وظائف النواة.
باستخدام Wayland، يتواصل برنامج التركيب مع تطبيق العميل بشكل مباشر. ويحافظ برنامج التركيب على تعيينه الداخلي للنوافذ الموجودة على سطح المكتب وحجمها وحالتها. كما يتولى إدارة أحداث تغيير لوحة المفاتيح والفأرة والنوافذ، ويرسلها إلى التطبيقات التي تمتلك تلك النوافذ.
تقوم التطبيقات بتحديث واجهة المستخدم وفقًا لذلك. والفرق الرئيسي هو أن عملية العرض تتم داخل التطبيقات نفسها، باستخدام مكتبات Wayland المرتبطة.
يقوم التطبيق إما بتحديث المخزن المؤقت المستخدم لحفظ النافذة، أو بإنشاء مخزن مؤقت جديد وتجاهل المخزن المؤقت القديم. ثم يرسل تطبيق العميل إشعارًا إلى الملحن، يطلب منه تحديث تعيين النافذة واستخدام مخزن الفيديو المؤقت الجديد أو المحدث.
يوفر هذا التصميم المعماري المبسّط وتصميم الكود الحديث تحسينات في الأداء، مع ظهور عمليات تغيير حجم النوافذ وسحبها على وجه الخصوص بسلاسة وسلاسة.
اعتماد Wayland البطيء من قبل التطبيقات
Wayland هو نظام النوافذ الافتراضي في Debian 10 والإصدارات الأحدث، وFedora 34 والإصدارات الأحدث، وUbuntu 18.04 والإصدارات الأحدث، والتوزيعات الأخرى مثل Arch Linux. وعلى الرغم من ذلك، ففي أغلب الأحيان، يقوم Wayland بتشغيل تطبيقات X11.
توجد طبقة توافقية تسمى XWayland تسمح لتطبيقات X11 بالعمل ضمن Wayland. وكان هذا مطلوبًا لأن غالبية تطبيقات X11 لم يتم تعديلها ونقلها إلى Wayland.
في بيئات سطح المكتب التي توفر برامج تركيب Wayland، مثل GNOME، فإن التطبيقات الرسمية مثل محرر نصوص GNOME والخرائط والملفات والتقويم هي كلها تطبيقات أصلية من Wayland. ولكن الغالبية العظمى من تطبيقات X11 لا تزال تطبيقات أصلية من X11 لم يتم المساس بها.
عادةً ما يعمل برنامج XWayland الوسيط بشكل جيد، ولكن قد تكون هناك مشكلات مع بعض تطبيقات X11 التي تؤدي وظائف ذات مستوى منخفض متعلقة بالشاشة مثل تسجيل الشاشة. قد يكون استخدام Wayland مع NVIDIA مزعجًا بنفس القدر كما هو الحال مع X11، على الرغم من أنني لم أواجه أي مشكلات في برنامج التشغيل اليومي الخاص بي باستخدامه مع وحدة معالجة الرسوميات NVIDIA GeForce GT 1030.
من المرجح أن يأمل بعض مؤلفي تطبيقات X11 أن تعمل تطبيقاتهم بشكل جيد مع XWayland، ويمكنهم تجنب الحاجة إلى إعادة صياغتها في تطبيقات Wayland. لا تتفاجأ إذا كان الاستيعاب والهجرة إلى Wayland طويلين وبطيئين، مع تبني التطبيقات الجديدة لها ولكن غالبية تطبيقات X11 الحالية تظل كما هي، وتعلق آمالها على XWayland.
هل تستخدم Wayland أو X11؟
إذا كنت تستخدم أحد توزيعات Linux الرئيسية، فمن المحتمل أنك تستخدم Wayland بالفعل. يمكنك التحقق من ذلك عن طريق إصدار الأمر التالي.
echo $XDG_SESSION_TYPE
في النظام الذي يستخدم Wayland، سيكون الناتج:
وعلى نظام يعمل بنظام X Window، ستشاهد:
نادرا ما، XDG_SESSION_TYPE
لم يتم تعيين متغير البيئة. في هذه الحالة، يمكنك استخدام هذا الأمر بدلاً من ذلك:
loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value
الداخلية المتداخلة loginctl
يستخدم الأمر show-user
أمر لإظهار خصائص المستخدم المسمى. whoami
يعطينا الأمر اسم المستخدم الحالي. -p
يقيد خيار (الخاصية) الإخراج من loginctl
للحصول على معلومات حول إعداد “العرض”، نستخدم --value
خيار إرجاع القيمة فقط. لا نريد أن يكون لدينا السلسلة “Display=” في الاستجابة من loginctl
كل ذلك يعطينا معرف الجلسة.
نقوم بتمرير معرف الجلسة إلى الطرف الخارجي loginctl
، واستخدم show-session
أمر لعرض سمات الجلسة. نستخدم الأمر -p
خيار (الخاصية) لتقييد الإخراج بالمعلومات حول نوع الجلسة، واستخدام --value
خيار لإظهار القيمة بدون علامة “النوع=”.
على جهاز كمبيوتر يستخدم Wayland، ستشاهد:
إذا كنت تقوم بتشغيل نظام X Window، فستشاهد:
هل يجب عليك استخدام Wayland أو X11؟
ما لم تكن تواجه مشكلات، فمن الأفضل أن تلتزم بما تستخدمه بالفعل. ولكن إذا لاحظت عدم استقرار أو تحديثات متقطعة للشاشة، فيمكنك محاولة الانتقال إلى أيهما لا تستخدمه.
في GNOME، إذا كنت تريد التبديل وتجربة النظام الآخر، في شاشة تسجيل الدخول انقر فوق اسم المستخدم الخاص بك، ثم انقر فوق رمز عجلة الترس في الزاوية اليمنى السفلية من الشاشة.
ستُظهر لك القائمة إصدارات مختلفة من GNOME. الخيارات التي تذكر “Xorg” تستخدم نظام X Window وتلك التي لا تستخدم Wayland.