الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تصميم سطح مكتب نظام تشغيل

بدأه h23 في 29 مايو 2010 · 23 رد · 1,926 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال ان امكن تم بناء نواة نظام بالسي و عملنا كل الملفات المطلوبة مثل ملف boot

ولكن واجهتني مشكلة كيف يتم بناء سطح المكتب طبعاً السي لا تدعم الواجهات الرسومية فكيف

نصمم سطح المكتب سمعت عن مكتبة gtk+ ولكن لا اعرف شيء عنها كيف ربطها بالسي

وكيف العمل بها و الخ اتمنى لوشرح كامل من الاف الى الياء عن المكتبة

اتمنى لكم التوفيق

#2

gtk (او المكتبات الرسومية لليونكسيات ) لا تبنى على النواة . تبنى على X Window System وهو محدود وبسيط جدا لذلك تزداد قدراتة (مثل الminimize و التحريك والخ حتى الخصائص المتقدمة مثل drag and drop و advanced selection ) عن طريق طبقة اخرى تسمى windowing manager ( فى حالة جنوم فهى metacity ) ومن ثم المكتبات الرسومية (التى باعتقادى وظيفتها الرسم بالاعتماد على امكانيات x ) (وهى ليست بالشرط تعتمد على windowing manager بل لكل منهما وظيفتة ) (لكن بدون الwindowin manager ستفقد كثير من functionality الwindows ).

ابحث عن كيفية نقل x server اولا .

تم تعديل هذه المشاركة بواسطة apex في 29 مايو 2010 في 04:06

1

name : mohamedyosry

#3
apex كتب:

gtk (او المكتبات الرسومية لليونكسيات ) لا تبنى على النواة . تبنى على X Window System وهو محدود وبسيط جدا لذلك تزداد قدراتة (مثل الminimize و التحريك والخ حتى الخصائص المتقدمة مثل drag and drop و advanced selection ) عن طريق طبقة اخرى تسمى windowing manager ( فى حالة جنوم فهى metacity ) ومن ثم المكتبات الرسومية (التى باعتقادى وظيفتها الرسم بالاعتماد على امكانيات x ) (وهى ليست بالشرط تعتمد على windowing manager بل لكل منهما وظيفتة ) (لكن بدون الwindowin manager ستفقد كثير من functionality الwindows ).

ابحث عن كيفية نقل x server اولا .

:cry: عذارا لم افهم شيئ ارجو الايضاح :hot:

#4
اقتباس

ابحث عن كيفية نقل x server اولا .

#5

دعني اعرف ماهو الـ x server :P

#6

باختصار

عندما تبرمج برنامج بالجافا فانت تحتاج الى تستطيب java run time حتى تستطيع تشغيل هذا البرنامج .

عندما تبرمج جرافيك بالopengl فانت تحتاج انت يدعم التعريف الرسومى امتدادات opengl .

معروف هذا المبداء فى البرمجة بالاعتمادية . اى برنامج يعتمد على اخر .

بكونك تريد تشغيل مكتبة رسومية على نواة بسيطة كمحاولة وضع فيل على ابرة . لان الواجهة الرسومية لها الكثير من الاعتماديات وكثير من اعتمادياتها لها اعتماديات اخرى .

اى هو هرم لابد ان تبناة من اسفلة .

السيناريو المتوقع ولا استطيع ان ادرس لك كيفية نقل واجهة رسومية لان عمل مرهق و ليس لدى الوقت حاليا .

desktop -> gtk -> windowing manager ( metacity) ->X Window System - > libc

وربما يكون هناك عشرات الاعتماديات دون ذلك .

يالنسبة لx server هو X Window System وهو باختصار protocol that provides a graphical user interface

رابطي

وهناك عدة implementation لة مفتوحة المصدر مثل XFree86 وحتى هذا البروتوكول لة العديد من extensions لدعم اشياء اضافية مثل الشفافية و opengl و الخ (قد تتطلب الواجهات الرسومية بعضها )

اعطيتك فكرة فقط عن كيفية اعتماد البرامج على بعضها ولكن ليس لدى الوقت لاقوم بدراسة دقيقة لذلك (خاصة ايام الامتحانات) .

name : mohamedyosry

#7
اقتباس
طبعاً السي لا تدعم الواجهات الرسومي

كلام فاضي .. او بالعراقي (ماكو هيجي حجي)

الواجهة الرسومية لا تأتي من لغة بل تأتي من الفديو كارد او كرت الشاشة كما يسمونه،

يجب ان يكون هناك جزء من النظام يستطيع التخاطب مع كرت الشاشة، الذي هو ليس سوى جهاز يقوم بمهمة اظهار الصور على الشاشة. فاذا استطعت التخاطب معه و ارسال الاوامر له فسيكون بامكانك اظهار صور على الشاشة

و طبعا هذا كله ممكن بلغة السي

مثلا نظام لينوكس مع سطح مكتب جنوم او اكفسي:

النواة - لينوكس - لغة سي

نظام نوافذ X - لغة سي

مكتبة الادوات gtk - لغة سي

في انظمة يونكس و لينوكس هناك نظام يعد بمثابة معيار موحد لرسم النوافذ على الشاشة، و هو X Window System و هو نظام معقد، low level، و يمكنه العمل عبر الشبكة (يعني ممكن تكون في جهاز و تظهر النوافذ على جهاز آخر).

للتعامل بفعالية مع هذا النظام تحتاج ان تدرس بنيته و لا اظن انه امر سهل (مع ان الكود مفتوح). http://www.x.org

مكتبات gtk+ و qt تستخدام نظام X لرسم الازرار و القوائم و الاشياء الاخرى widgets يعني.

إذا كنت تطور نظام مصغر و تعليمي يمكنك ان تقوم ببناء نظامك الخاص للتعامل مع الشاشة .. لكن سيكون عليك ايضا ان تصمم مكتبة لرسم الـ widgets خاصة بك او ان تقوم بتعديل احد المكتبات الموجودة لكي تكون قادرة على التعامل مع نظامك الجديد.

انظمة ماك مثلا مع انها تعتبر انظمة يونكس الا انها لا تستخدم X لرسم بيئة سطح المكتب بل نظام خاص على ما اظن (لا اعرف ما هو)

#8
hasan_aljudy كتب:

كلام فاضي .. او بالعراقي (ماكو هيجي حجي)

الواجهة الرسومية لا تأتي من لغة بل تأتي من الفديو كارد او كرت الشاشة كما يسمونه،

يجب ان يكون هناك جزء من النظام يستطيع التخاطب مع كرت الشاشة، الذي هو ليس سوى جهاز يقوم بمهمة اظهار الصور على الشاشة. فاذا استطعت التخاطب معه و ارسال الاوامر له فسيكون بامكانك اظهار صور على الشاشة

و طبعا هذا كله ممكن بلغة السي

مثلا نظام لينوكس مع سطح مكتب جنوم او اكفسي:

النواة - لينوكس - لغة سي

نظام نوافذ X - لغة سي

مكتبة الادوات gtk - لغة سي

في انظمة يونكس و لينوكس هناك نظام يعد بمثابة معيار موحد لرسم النوافذ على الشاشة، و هو X Window System و هو نظام معقد، low level، و يمكنه العمل عبر الشبكة (يعني ممكن تكون في جهاز و تظهر النوافذ على جهاز آخر).

للتعامل بفعالية مع هذا النظام تحتاج ان تدرس بنيته و لا اظن انه امر سهل (مع ان الكود مفتوح). http://www.x.org

مكتبات gtk+ و qt تستخدام نظام X لرسم الازرار و القوائم و الاشياء الاخرى widgets يعني.

إذا كنت تطور نظام مصغر و تعليمي يمكنك ان تقوم ببناء نظامك الخاص للتعامل مع الشاشة .. لكن سيكون عليك ايضا ان تصمم مكتبة لرسم الـ widgets خاصة بك او ان تقوم بتعديل احد المكتبات الموجودة لكي تكون قادرة على التعامل مع نظامك الجديد.

انظمة ماك مثلا مع انها تعتبر انظمة يونكس الا انها لا تستخدم X لرسم بيئة سطح المكتب بل نظام خاص على ما اظن (لا اعرف ما هو)

تخاطبوني وكأني محترف جميع لغات البرمجة بل الكمبيوتر باكمله يااخوان انا مبتدأ لا تعتقدون اني غبي كيف تكتبون لي اشياء جديدة او كلمات لا اعرفها ارجو التوضيح صدقوني تحيرت صأصبح مجنون عما قريب

وسوف اذهب الى مستشفى الطب النفسي و يشخصني الدكتور ويقول مجنون برمجمة كمبيوترات ايعجبكم هذا :unsure:

apex كتب:

باختصار

عندما تبرمج برنامج بالجافا فانت تحتاج الى تستطيب java run time حتى تستطيع تشغيل هذا البرنامج .

عندما تبرمج جرافيك بالopengl فانت تحتاج انت يدعم التعريف الرسومى امتدادات opengl .

معروف هذا المبداء فى البرمجة بالاعتمادية . اى برنامج يعتمد على اخر .

بكونك تريد تشغيل مكتبة رسومية على نواة بسيطة كمحاولة وضع فيل على ابرة . لان الواجهة الرسومية لها الكثير من الاعتماديات وكثير من اعتمادياتها لها اعتماديات اخرى .

اى هو هرم لابد ان تبناة من اسفلة .

السيناريو المتوقع ولا استطيع ان ادرس لك كيفية نقل واجهة رسومية لان عمل مرهق و ليس لدى الوقت حاليا .

desktop -> gtk -> windowing manager ( metacity) ->X Window System - > libc

وربما يكون هناك عشرات الاعتماديات دون ذلك .

يالنسبة لx server هو X Window System وهو باختصار protocol that provides a graphical user interface

رابطي

وهناك عدة implementation لة مفتوحة المصدر مثل XFree86 وحتى هذا البروتوكول لة العديد من extensions لدعم اشياء اضافية مثل الشفافية و opengl و الخ (قد تتطلب الواجهات الرسومية بعضها )

اعطيتك فكرة فقط عن كيفية اعتماد البرامج على بعضها ولكن ليس لدى الوقت لاقوم بدراسة دقيقة لذلك (خاصة ايام الامتحانات) .

نعم / ماذا تقول ؟

؟؟؟؟ نعم نعم صحيح نعم صح صح :happy: انا لم افهم حرف ههههه

#9

يعني انت تسأل عن نظام التشغيل و النواة و تقول فرضا بنيت نواة كيف سابني سطح المكتب؟؟

ماذا تتوقع ان تكون الاجابة يعني؟

#10
hasan_aljudy كتب:

يعني انت تسأل عن نظام التشغيل و النواة و تقول فرضا بنيت نواة كيف سابني سطح المكتب؟؟

ماذا تتوقع ان تكون الاجابة يعني؟

قلت هكذا لأضرب مثال انا ماالذي اريديه كيف تبرمج سطح مكتب بالسي يعني ماهي الطريقة فضرب مثال اني صممت نواة فقط باقي صطح المكتب

المحير ان السي لغة تعتمد على الدوز يعني لا يوجد بها رسوم فكيف يمكن ان ابرمج سطح مكتب بهذه اللغة هل من الممكن ام لا و اذا كان ممكن كيف ؟ :cool:

و الان اقول تسلم على المتابعة للموضوع و اتمنى لك التوفيق و اتمنى الاجابه على السؤال :blush:

#11
اقتباس
المحير ان السي لغة تعتمد على الدوز يعني لا يوجد بها رسوم فكيف يمكن ان ابرمج سطح مكتب بهذه اللغة هل من الممكن ام لا و اذا كان ممكن كيف ؟

لغة السى لا تعتمد على الدوس (دوس هو اسم نظام تشغيل خاص بمايكروسوفت و التسمية الصحيحة هى command line ) . لغة البرمجة هى مجموعة من الاوامر تترجم للغة الالة ليتم تشغيلها (اى برنامج يدخل للمعالج هو عبارة عن 0 و 1 ويتم اختصار عرضها بالانظمة hexadecimal ) واذا اردت روية كامل قدرات الحاسب فانظر للassembly language فستعرف ان لكل امر منها نظير عن امر من لغة الاله (0 و 1 ) والقدرات الرسومية تتوقف على قدرة الالة واذا كانت الالة تملك قدرات رسومية فيمكنها برمجتها (باكواد منخفضة المستوى كاسمبلى و استعمال الاسمبلى من السى) بقدارت الinterrupt الخاصة بقدراتها الرسومية , ومن هنا المنطلق ويمكن برمجة انظمة العرض سواء command line او gui .

اذا كان سوالك اريد ان ابرمج واجهات رسومية بالسى ؟

فتجاهل كل ذلك وهناك مكتبات رسومية تبرمج بالسى ومنها gtk+ ,استخدمها .

name : mohamedyosry

#12
apex كتب:

لغة السى لا تعتمد على الدوس (دوس هو اسم نظام تشغيل خاص بمايكروسوفت و التسمية الصحيحة هى command line ) . لغة البرمجة هى مجموعة من الاوامر تترجم للغة الالة ليتم تشغيلها (اى برنامج يدخل للمعالج هو عبارة عن 0 و 1 ويتم اختصار عرضها بالانظمة hexadecimal ) واذا اردت روية كامل قدرات الحاسب فانظر للassembly language فستعرف ان لكل امر منها نظير عن امر من لغة الاله (0 و 1 ) والقدرات الرسومية تتوقف على قدرة الالة واذا كانت الالة تملك قدرات رسومية فيمكنها برمجتها (باكواد منخفضة المستوى كاسمبلى و استعمال الاسمبلى من السى) بقدارت الinterrupt الخاصة بقدراتها الرسومية , ومن هنا المنطلق ويمكن برمجة انظمة العرض سواء command line او gui .

اذا كان سوالك اريد ان ابرمج واجهات رسومية بالسى ؟

فتجاهل كل ذلك وهناك مكتبات رسومية تبرمج بالسى ومنها gtk+ ,استخدمها .

شكراً لقد حملت المكتبة ويجد عدد كبير من ملفات بصيغة h. فكيف استخدم هذه المكتبة لو مثال بسيط او كتاب بالعربي اي شيئ لتعليم المكتبة

سلمت يداك

#13

اذا كنت على منصة ويندوز فتركيب بيئة التطوير يطول نوعا ماء (ابحث عن ولكن يتضمن تركيب مترجمات والخ)

اما فى لينكس فهو مثبت افتراضيا

بعض الدروس

http://library.gnome.org/devel/gtk-tutorial/stable/

مثال مبدئى من جهازى

http://img36.imageshack.us/f/screenshotpj.png/

#include <gtk/gtk.h>
int main (int argc,
          char *argv[])
{
  GtkWidget *window;
  /* Initialize GTK+ and all of its supporting libraries. */
  gtk_init (&argc, &argv);
  /* Create a new window, give it a title and display it to the user. */
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window), "Hello World");
  gtk_widget_show (window);
  /* Hand control over to the main loop. */
  gtk_main ();
  return 0;
}

تم تعديل هذه المشاركة بواسطة apex في 29 مايو 2010 في 17:19

name : mohamedyosry

#14
apex كتب:

اذا كنت على منصة ويندوز فتركيب بيئة التطوير يطول نوعا ماء (ابحث عن ولكن يتضمن تركيب مترجمات والخ)

اما فى لينكس فهو مثبت افتراضيا

بعض الدروس

http://library.gnome.org/devel/gtk-tutorial/stable/

مثال مبدئى من جهازى

http://img36.imageshack.us/f/screenshotpj.png/

#include <gtk/gtk.h>
int main (int argc,
          char *argv[])
{
  GtkWidget *window;
  /* Initialize GTK+ and all of its supporting libraries. */
  gtk_init (&argc, &argv);
  /* Create a new window, give it a title and display it to the user. */
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window), "Hello World");
  gtk_widget_show (window);
  /* Hand control over to the main loop. */
  gtk_main ();
  return 0;
}

اما فى لينكس فهو مثبت افتراضيا

يعني لايحتاج الى تثبيت يأتي مع النظام

سؤال1 فقط ولو طولت عليكم بس سامحوني

ويقول السؤال: صممت برنامج hello world كمثال هل بأمكاني دمجة مع النواة هل يحفظ الملفات بصيغة c او cpp

يعني بأمكاني اصمم واجهة المستخدم بهذا البرنامج للنظام الذي صممتة حالياً فقط نواة ولكن الصورة الرسومية لم تجهز نظام يعني كما ذكرت انت command line

فأريد تصميم واجهة مثل هذه التي بالصورة

images-75dc52cdf0.jpg..

تلاحظ لو ان الجهاز مقفل بكلمة مرور راح اول ما تعمل الواجهة الرسومية للنظام راح تظهر هذه الواجهة و من ثم هذه بالتأكيد

images-32acf40c4d.jpg..

فأنا اريد تصميم هذه الواجهات لأن السي ليس بأمكانها رسم الصور رائعة مثل هذه الصور بأختصار اريد برمجة واجهة المستخدم هل بمقدرة المكتبة عمل هذا ودمجها مع النواة طبعاً النواة مكونة من واجهة المستخدم و الاصوات ووووو حتى يكون النظام متكامل جميل و خلاب يعني ليس بقصدي برامج الثيمات لا برمجة الواجهة للمستخدم ثم وضعها في النواة

انا اعلم كثرت في الاسئلة لأنني اريد ان اتعمق في مجال البرمجة الصراحة افدتوني كثيراً رحم الله والديك و والد والديك وكل من ساهم في انشاء هذا المنتدى الغالي وهذا كلام ليس به مجاملة الصراحة

تم تعديل هذه المشاركة بواسطة h23 في 29 مايو 2010 في 20:10

#15
اقتباس
صممت برنامج hello world كمثال هل بأمكاني دمجة مع النواة هل يحفظ الملفات بصيغة c او cpp

يعني بأمكاني اصمم واجهة المستخدم بهذا البرنامج

الكلام عن النواة (كنظام تشغيل جديد انت انشئتة او لا يدعم gtk و) وانت تريد دعم gtk فالسوال يطول (وقد اكون عاجز عن الاجابة بشكل جيد ) وقد كتب الاعضاء فى الردود السابقة اجابة مختصرة .

اما اذا كنت تسال هل يمكن انشاء برامج رسومية بالاعتماد على تلك المكتبة فبرنامج gimp منشى عليها .

name : mohamedyosry

#16
apex كتب:

الكلام عن النواة (كنظام تشغيل جديد انت انشئتة او لا يدعم gtk و) وانت تريد دعم gtk فالسوال يطول (وقد اكون عاجز عن الاجابة بشكل جيد ) وقد كتب الاعضاء فى الردود السابقة اجابة مختصرة .

اما اذا كنت تسال هل يمكن انشاء برامج رسومية بالاعتماد على تلك المكتبة فبرنامج gimp منشى عليها .

تفكيري اصبح مشتت انا من خلال بحثي وجدت ان المكتبة صممت لأنشاء البرامج الرسومية

اخي حمل هذا الملف ستجد نظام تشغيل صغير جداً شغله على برنامج vircual pc الملف iso

هذا نظام تشغيل صغير جداً كيف اطلع عليه واخبرني كيف صممت واجهته الرسومية حسب علمي صممم بالـ ++c والله اعلم

اذا ممكن تتطلع علية وتخبرني كيف برمجة الوجهة الرسومية بأي مكتبة مثلاً و الخ...

سأرفع الملف بعد قليل

تم تعديل هذه المشاركة بواسطة h23 في 29 مايو 2010 في 21:45

#17

ادخل على هذه الوصلة وحمل الملف بصيغة iso

قم بالضغط على direct link وسوف يبدأ التنزيل

شكرا

#18

اخى اسئلتك جاوب عليها الاخوة والسوال الاخير جاوب علية الاخ حسن الجودى .

فماذا اذا تصفحت كود نظام تشغيل (او موقعهم ) لاعرف ماذا يستخدمون لانشاء واجهة رسومية . (لا اعلم اساسا ما النظام الذى تقصدة وهل هو مفتوح المصدر ام لا ) .

راجع الردود السابقة فهى الاجابة ولا يمكن اختصارها بشكل اكبر من ذلك .

بالتوفيق

تم تعديل هذه المشاركة بواسطة apex في 30 مايو 2010 في 01:20

name : mohamedyosry

#19
apex كتب:

اخى اسئلتك جاوب عليها الاخوة والسوال الاخير جاوب علية الاخ حسن الجودى .

فماذا اذا تصفحت كود نظام تشغيل (او موقعهم ) لاعرف ماذا يستخدمون لانشاء واجهة رسومية . (لا اعلم اساسا ما النظام الذى تقصدة وهل هو مفتوح المصدر ام لا ) .

راجع الردود السابقة فهى الاجابة ولا يمكن اختصارها بشكل اكبر من ذلك .

بالتوفيق

بعد البحث المتواصل لم اجد شيئ انا اتوقع لم تفهم السؤال جيداً او انا لم اقم بالتوضيح :)

اتمنى لو احد من الاخوان لديه الخبرة ليجاوب على السؤال انا اريد ان اصمم صطح مكتب لنظام جديد يعني النواة و كل شيئ جاهز الا الواجهة الرسومية المسمية GUI وهي اختصار كلمة graphical user interface

هذا هو المطلوب اتمنى من الاخوان الذين لديهم الخبرة بالاجابة على السؤال  

#20
h23 كتب:

قلت هكذا لأضرب مثال انا ماالذي اريديه كيف تبرمج سطح مكتب بالسي يعني ماهي الطريقة فضرب مثال اني صممت نواة فقط باقي صطح المكتب

المحير ان السي لغة تعتمد على الدوز يعني لا يوجد بها رسوم فكيف يمكن ان ابرمج سطح مكتب بهذه اللغة هل من الممكن ام لا و اذا كان ممكن كيف ؟ :cool:

و الان اقول تسلم على المتابعة للموضوع و اتمنى لك التوفيق و اتمنى الاجابه على السؤال :blush:

الموضوع كبير و اذا قرأت ردي السابق (اعد قرائته عدة مرات) قد يصبح لديك فكرة مبدئيةعن كيفية عمل ذلك

#21

أخ h23 ,

حسب ما فهمت من الأخوه, وبما لدي من خلفية لينوكسيه, فالموضوع كبير جدا, و أمامك أحد طريقين...

1- الطريق الأولي, هى أن تعتمد على مكتبات أخري كقاعده, مثل X window system

2- الطريق الثانيه, مع نفسك............, من الصفر

#22

يعني يجب تصميم مكتبة خاصة بي و هل تكون الواجهة ممتازة جميلة

#23
اقتباس
يعني يجب تصميم مكتبة خاصة بي و هل تكون الواجهة ممتازة جميلة

على قدر عملك ستجد,,,,

أنا ليس لدي أدني فكره عن هذا الموضوع سوى graphics.h من Borland من أيام TC++

#24

السلام عليكم

ولكن لو صممت مكتبة (h.) هل سيكون بأمكاني تصميم الواجهة وانا اتوقع الواجهات الرسومية تصمم بالمكتبات

ولو عندك طريقة لكيفية برمجة المكتبات مكتبات (h.)

مواضيع مشابهة