سؤال

أريد إنشاء مدير نافذة تكديس بسيط (في C) للاستخدام الخاص ، لا سيما لغرض التعلم والتحدي نفسي.

لقد نظرت من خلال twmرمز المصدر الذي يحتوي على عدد قليل نسبيًا من الأجراس وصفارات ولكنه يبدو منخفضًا للغاية لأنه لا يعتمد على مجموعة أدوات عنصر واجهة مستخدم.1 هل من الأفضل استخدام مجموعة أدوات مثل GTK+؟ أخشى أن بعض الكود والمكتبات في twm قد يكون قديمًا جدًا (تعديل: تم إهماله) وأريد أن يستخدم مدير النافذة المكتبات الحديثة نسبيًا. من أجل الفهم ، سأكون مهتمًا أيضًا بالاقتراحات كيفية بدء تشغيل مدير نافذة من نقطة الصفر - لا يوجد العديد من البرامج التعليمية لهذا الغرض.

تحديث: لأولئك الذين يفكرون في مشاريع مماثلة: انتهى بي الأمر باستخدام LISP المشترك و مكتبة CLX. tinywm-lisp خدم كأساس ورائع CLFSWM و Stumpwm كانت مساعدة كبيرة. للإشارة ، استخدمت CLX - واجهة Lisp X الشائعة (تحذير PDF) و #xlib على Freenode.

هل كانت مفيدة؟

المحلول

مهما فعلت ، استخدم XCB وليس Xlib. إنه حديث وغير متزامن وأبسط ويمنحك الوصول المباشر إلى بروتوكول X11.

نصائح أخرى

WM الحد الأدنى هو جدا WM2. لم أقرأ الكود المصدري ، وبالتالي لا أعرف ما إذا كان مثالًا تعليميًا. بالطبع يمكنك استخدام المكتبات التي تقوم بالفعل بالكثير من التجريد ورسم العمل من أجلك GDK و GTK. ولكن نظرًا لأن هذا المشروع مخصص للتعلم الشخصي فقط ، سأذهب بالطريقة الصعبة وأستخدم XLIB مباشرة.

فيما يلي بعض الروابط التي قد تكون مفيدة لك:

ألقِ نظرة على الكود DWM. قاعدة الشفرة جميلة وسهلة الفهم. كل شيء هو حوالي 2000 سطر.

لقد كتبت سلسلة تعليمية متعمقة توضح لك كيفية كتابة مدير نافذة X11 في C ++:

بالإضافة إلى ذلك ، يمكنك الاطلاع

تم التعليق بشدة لأغراض تربوية.

على XLIB vs XCB - أوصي بـ XLIB عبر XCB إذا كنت قد بدأت لأول مرة. XCB أكثر كفاءة ، لكنه أكثر من ذلك بكثير من المستوى المنخفض وأكثر مطوّلة (فكر في لغة التجميع في واجهة المستخدم الرسومية). أنت لا تريد أن تثقل على عبء التحسين المبكر حتى يكون لديك بالفعل نموذج أولي.

http://code.google.com/p/partiwm/ هي محاولة لكتابة مدير نافذة (بلاغة ، وليس تكديس) من نقطة الصفر ، قد يكون من المفيد لك قراءة الكود.

يستخدم Metacity GTK لبعض عناصر واجهة المستخدم. رؤية القرصنة و readme.

أنظر أيضا أين هي بعض أدلة البرمجة XLIB الجيدة؟

من أجل الفهم ، سأكون مهتمًا أيضًا بالاقتراحات حول كيفية بدء مدير نافذة من الصفر

قد ترغب في إلقاء نظرة على مدير نافذة AEWM. الكود صغير ويقوم بالأساسيات بشكل جيد. إنه مكتوب في C ويستخدم xlib.

http://www.red-bean.com/decklin/aewm/

Xmonad قد يكون مكانًا جيدًا للبدء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top