الجانب المظلم من الفسيفساء (III): XMonad

يبدو أنني فعلت الكثير من التسول وحتى اليوم لم أضع ملليمترًا من التكوينات. كما كنت واعدًا منذ فترة طويلة بعض الوقت اليوم سأقوم بتمزيق xmonad.hs الخاص بي الذي أعددته خصيصًا لهذه المناسبة. هذا وملفات التكوين الأخرى موجودة في اللصق ، على وجه التحديد ألوان وحدة التحكم, إعدادات النافذة y الشريط العلوي.

يمكنك تنزيلها من هناك وفتحها في محرر النصوص المفضل لديك.

قبل

في حال كنت تتساءل ، كان سطح المكتب الخاص بي عبارة عن Openbox صغير على إسطبل Debian. تجاوز عملية تثبيت التوزيع في الوقت الحالي ، يجب عليك التحقق من وجود الحزم الضرورية في المستودعات. لنفعل هذا (مع تذكر أنني موجود على دبيان):

Sudo aptitude تثبيت ghc xmonad xmobar gmrun dmenu

و مستعد. لقد قمنا للتو بالتثبيت ، بترتيب الظهور ؛ مترجم جلاسكو هاسكل المسؤول عن ترجمة وتفسير هاسكل ؛ XMonad ، مدير النوافذ ، XMobar هو شريط يقدم معلومات حول النظام وبعض قاذفات البرامج ، dmenu و gmrun ؛ التي تم تكوينها من فضلك بالفعل بحيث يقوم XMonad بتشغيلها باستخدام Mod + P و Mod + Shift + P.

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

لا شيء مميز

لكن المفاجأة. XMonad يستقبلنا مثل هذا. في لقطة الشاشة ، فتحت بالفعل gmrun ، لذا يمكنك أن ترى أنه لم يتم كسره:

لا شيء مذهل

ونريده أن يبدو هكذا ، مهيأ بالفعل وكل شيء:

إذن أجل

تظهر لقطة الشاشة محطة تقوم بتشغيل ncmpcpp ، وهو عميل MPD للمحطة ؛ وجلسة GVim ، كلاهما مع ألوان اللوحة ضوء شمسي. لم يكن تحقيق ذلك أمرًا صعبًا حقًا ، وحتى Vim و urxvt كانا جاهزين بالفعل على نظامي.

xmonad.hs ، كم هو مخيف!

مُطْلَقاً. التكوين الذي توشك على رؤيته بسيط للغاية وأساسي. يجب أن يعمل على جميع الأنظمة التي تعمل بـ XMonad 0.9.1 ، حتى لو كان 0.10 متاحًا بالفعل. حسنًا ، كن خائفًا ، خائف جدًا:

- تكوين Xmonad - كما ترى ، من السهل جدًا استيراد XMonad استيراد XMonad.Util.EZConfig استيراد XMonad.Util.Run wrk = ["A"، "C"، "G"، "T"] main = do xmproc <- spawnPipe "xmobar" spawn "nitrogen --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask، terminal = "urxvtc"، borderWidth = 2، normalBorderColor = "# fdf6e3 "، focusBorderColor =" # 002b26 "، workspaces = wrk}` extraKeys` [((mod4Mask، xK_v)، spawn "gvim")، ((mod4Mask، xK_c)، spawn "mpc toggle")، ((mod4Mask، xK_a) ، spawn "mpc prev")، ((mod4Mask، xK_s)، spawn "mpc next")] - نهاية التكوين. بسيطة وسهلة ونظيفة.

ما الذي حدث هنا؟

إذا تعافوا بالفعل من الصدمة ، يمكننا أن نرى أن تكويننا بالكاد يصل إلى 30 سطرًا من التعليمات البرمجية. سأشرح جزءًا تلو الآخر لماذا إذا قمت بنسخ هذا ولصقه ، فإن XMonad ستقوم بتجميع البرنامج الذي كتبناه للتو. مستعد؟

قسم التبعيات

بالقرب من بداية الملف هناك ثلاثة أسطر تبدأ بالكلمة الأساسية استيراد. كما هو الحال في لغات البرمجة الأخرى ، فإنك تخبر المترجم بالعثور على الوحدة التي تريدها ، ويقدم وظائف وحدة الحظ. لننظر إليه مرة أخرى:

استيراد XMonad استيراد XMonad.Util.EZConfig استيراد XMonad.Util.Run

يستخدم برنامجنا ثلاث تبعيات. الأول يجلب لنا وظائف XMonad الخاصة ، وسيساعدنا الثاني والثالث لاحقًا على تحديد اختصارات لوحة المفاتيح وتشغيل البرامج. لنستمر.

المتغيرات

هذا الشيء WRK وما هو؟ دعنا نقدر الكود عن كثب:

wrk = ["A"، "C"، "G"، "T"]

WRK هو متغير ، وهو ما يعادل قائمة من أربعة عناصر ، كل السلاسل ؛ لأن قوائم هاسكل تقبل نوعًا واحدًا فقط من العناصر. إذا كنت تتساءل لماذا اخترت هذه الأحرف الأربعة لمكاتبي ، فتذكر أربع قواعد نووية من الحمض النووي.
الاسم هو مجرد اختصار ، ويمكننا تسميته myWorkspaces أو PepitoRojo أو أيًا كان ، طالما أنه يبدأ بحرف صغير ونحدده في القسم التالي.
هذا هو المكان الذي يبدأ فيه الشيء الجيد في امتلاك لغة برمجة كاملة تحت تصرفنا ، لأنه يمكننا تحديد لون النافذة من خلال متغير:

windowColor = "#FFFFFF"

أو حتى إنشاء وظيفة تُرجع لونًا وفقًا لمزاجنا:

مودكولور م | م == "حزين" = "# b0c4f6" - شيء مثل الأزرق | m == "Angry" = "# ba3f3f" - شيء مثل الأحمر | م == "سعيد" = "# 8bff7e" - شيء مثل الأخضر | على خلاف ذلك = "#FFFFFF" - أبيض ، للأيام المحايدة

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

القسم الرئيسي

من السطر الذي يقول رئيسي = فعل بدأنا في تحديد سلوك XMonad. دعنا نراها بهدوء.

انطلاق الأمور في البداية

يمكن تحقيق ذلك بعدة طرق ، ولكن للبقاء قصيرًا في التبعيات وجعل الكود أكثر نظافة ، إذا كان من الواضح أنه يشبه الكهف ، فقد ذهبت مع هذا:

xmproc <- spawnPipe "xmobar" spawn "nitrogen - استعادة" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

يبدأ السطر الأول XMobar ، الذي سنرى ملف التكوين الخاص به لاحقًا.
ثم بدأنا بعض الأشياء الأساسية بالنسبة لي ، خلفية جميلة (مثل تلك الموجودة في لقطة الشاشة الأولى) ، شيطان يجعل urxvt يعمل مثل الريح ، شيطان mpd - الذي يشغل موسيقاي منذ البداية ولم أغلق أبدًا - والتحكم في مستوى الصوت. نعم هذا هو. بناء الجملة هو نفسه إذا كنت تريد أن تبدأ ما تحتاجه.

التعديلات النهائية

نحدد هنا بعض الأشياء التي عادة ما تكون مجرد تفضيلات شخصية. على سبيل المثال ، أحب استخدام مفتاح Super عديم الفائدة (في الواقع ، المفتاح الموجود في windows) بدلاً من Alt ، ولكن هذا هو المفضل لدي. إذا كنت تريد العودة إلى Super ، فقم بإزالة السطر الأول.

- ... xmonad $ defaultConfig {modMask = mod4Mask، terminal = "urxvtc"، borderWidth = 2، normalBorderColor = "# fdf6e3"، focusBorderColor = "# 002b26"، workspaces = wrk} - ...

ثم نحدد المحطة الخاصة بنا ، com.urxvtc، لأن هذا ما أطلقنا عليه اسم عميل البرنامج الخفي الذي قمنا بتشغيله سابقًا. أشياء أخرى ، مثل قائمة مساحات العمل ، والتي كان بإمكاننا وضعها في أشياء مثل:

، مساحات العمل = ["H" ، "O" ، "L" ، "A"] ، مساحات العمل = ["A" ، "R" ، "C" ، "H" ، "L" ، "I" ، "N "،" U "،" X "]، workspaces = [" 1: web "،" 2: music "،" 3: useless space "،" 4: Ufff "]

وأشياء أخرى تتيح لنا معالجة قائمة سلاسل هاسكل.
سمك الحد هو مجرد عدد صحيح وإذا أردنا تغيير لون النافذة التي تركز على الوظيفة المزاج الذي أنشأناه للتو ، لأننا نترك المتغير مثل هذا:

--...، focusBorderColor = moodColor "Happy" - ...

$ على الخط xmonad ... إنها مجرد وظيفة ارتباطية صحيحة ، أي أننا نحفظ بضعة أقواس. 😀

اختصارات لوحة المفاتيح

في نهاية الملف ، لدينا قائمة من المجموعات التي تحتوي على بعض الاختصارات ، في هذه الحالة ، يقومون بتشغيل GVim ، وإيقاف الموسيقى مؤقتًا أو تشغيلها ، وتقدمها أو تأخيرها. هذا هو. تأتي وظيفة المفاتيح الإضافية في الوحدة الثانية التي نستوردها وتجعلها العلامات الخلفية تنفذ بأسلوب وظيفة div (/) مثل 1/2 وليس div 1 2 ، مما يسهل القراءة. اذا هي كذلك:

- ...} "مفاتيح إضافية" [((mod4Mask، xK_v)، spawn "gvim")، ((mod4Mask، xK_c)، spawn "mpc toggle")، ((mod4Mask، xK_a)، spawn "mpc prev") ، ((mod4Mask، xK_s)، spawn "mpc next")]

xmobarrc

تكوين {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - *"، bgColor = "# fdf6e3"، fgColor = "# 657b83"، position = Top ، LowerOnStart = False، commands = [Run Com "echo" ["$ USER"] "username" 864000، Run Com "hostname" ["-s"] "hostname" 864000، Run Com "mpc current" [""] "mpd" 10 ، تاريخ التشغيل "٪ a٪ b٪ d" "التاريخ" 36000 ، تاريخ التشغيل "٪ H:٪ M" "الوقت" 10 ، تشغيل StdinReader] ، sepChar = "'" ، alignSep = "} {" ، template = "'username' @ 'hostname'} {'mpd' | 'date' - 'time'"

هذا يجب أن يعمل ، وهو كذلك. بناء الجملة أكثر تعقيدًا قليلاً ومن الأفضل أن تقوم بتحليله بنفسك لفهمه. لذلك سأقتصر على إخبارك أننا نصف الأوامر وخياراتها وبعض الإعدادات الإضافية ، والتي سيتم عرضها في XMobar.
يحتوي سطر القالب على كل الإجراءات وقد توصلت إلى خدعة لجعلها تُظهر الأغنية التي أستمع إليها. تتطلب هذه الحيلة والأخرى لتغيير الأغنية باستخدام اختصارات لوحة المفاتيح mpc ، وهو عميل mpd قابل للتنفيذ من الجهاز.

استنتاجات

هذا كل شيء ، على ما أعتقد. لقد مررنا بالفعل بملف XMonad الرئيسي وبدأنا في تعلم Haskell سواء أردنا ذلك أم لا. إذا كنت ترغب في المتابعة ، فهناك دليل جيد جدًا لتبدأ به.
في الدفعة التالية سوف نستكشف برامج التشغيل غير القابلة للبرمجة ، على وجه التحديد Spectrwm / Scrotwm. أرك لاحقًا.


22 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   ايفانوفنيغرو قال

    !رائع!

    Spectrwm في المرة القادمة؟ !نعم سيدي!

  2.   86 قال

    دليل جيد جدًا ، يبدو ممتعًا للغاية ، لدي الرغبة في إلقاء نظرة عليه ، على الرغم من أنني مرتاح أكثر مع Openbox الخاص بي.

  3.   مكافحة قال

    عفوًا ، لقد نسيت تحديد مكان هذه الملفات ، ولكن عندما أقوم بتحرير المنشور ، فإنه يرسل إليّ رسالة خطأ:
    خطأ فادح: استدعاء دالة غير محددة get_header () في /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php على الإنترنت
    إذا كان بإمكان شخص ما تعديله ، فسيذهبون على النحو التالي:

    ملف التكوين الرئيسي: ~ / .xmonad / xmonad.hs
    ملف Xmobarrc: ~ / .xmobarrc
    ملف تكوين وحدة التحكم: ~ / .X الافتراضات
    <img draggable="false" class="emoji" alt="" src="https://s.w.org/images/core/emoji/2.2.1/svg/1f600.svg">

    1.    مكافحة قال

      لا يمكنني تعديل مشاركاتي الخاصة. لا يمكنني العثور على الخيار في أي مكان على سطح المكتب أيضًا. لدي بعض الأخطاء ، هذا كل شيء ، إصلاحات طفيفة.

  4.   نانو قال

    حسنًا ، أجده ممتعًا للغاية لأنه أكثر إنتاجية عندما يتعلق الأمر بالبرمجة. أريد العبث مع Awesome لأنني أريد حقًا تعلم LUA.

    إنه موجود لأولئك منا الذين يبرمجون في Python Qtile ، لكن الحقيقة هي أنني لا أستطيع تشغيله ، فأنا أستخدم Ubuntu وقمت بتثبيته عبر PPA وأيضًا من المصادر ولكن الشيء المؤسف لا يريد ذلك xD العمل

    على أي حال ، LUA شيء يجب أن أتعلمه وليس أفضل من رؤية وجوهك بهذا النوع من البلاط.

    Sigue así anti, vas en camino a convertirte en Autor dentro de DesdeLinux

    1.    نانو قال

      ونعم ، أنا في الكلية وفي هذا القرف ليس لديهم Linux xD

      1.    مكافحة قال

        شكرا نانو. لكن ، هل يمكنك مساعدتي في تحرير المقالات بعد نشرها؟ لا أستطيع.

        1.    نانو قال

          نعم ، اهدأ ، اتركهم كما هم أفضل من إصلاحهم

  5.   xykyz قال

    شكرًا لك ، سأحاول بالتأكيد XMonad. أرى أنه يستخدم أشياء Haskell الأساسية دون الحاجة إلى الكثير من التعقيد ، مثل الحراس ومشغل التطبيق ومن الواضح استخدام القوائم (وإلا فلن يكون Haskell xD).

    دعونا نرى كيف يبدو! 🙂

  6.   فرناندو قال

    لقد كنت أستخدم مدير نوافذ التبليط لبعض الوقت ، رائع. عندما يكون لدي وقت ، سأقوم بعمل برنامج تعليمي آمل أن أتمكن من شرح العملية برمتها ، من تثبيت رائع إلى تكوين مجموعة من البرامج خفيفة الوزن وإنشاء موضوعنا الخاص.

    إذا كان الأمر على ما يرام معك ، يمكنني إخبارك عندما أحصل عليه حتى تتمكن من نشره هنا.

    بالمناسبة وبعد إذنك ، أقوم ببعض الدعاية لموقعي الصغير ، إذا كنت ترغب في ذلك ، يمكنك إلقاء نظرة عليه ، في حال كنت مهتمًا بأي منشور:

    http://niferniware.sytes.net

    تحياتي!

    1.    MSX قال

      إذا كانت رائعة 3 فأنا بالتأكيد مهتم بها.

  7.   فرناندو قال

    أحد التفاصيل ، قسم الويب حيث قمت باستضافة المدونة هو:
    http://niferniware.sytes.net/blog/

    أنا آسف على الخطأ.

    ابتهاج!

    1.    إيلاف قال

      لقد أحببت حقًا مدونتك… ^ ^

      1.    فرناندو قال

        شكرا جزيلا إيلاف ، نحن على اتصال!

        La verdad es que en cierto modo DesdeLinux me incitó a crear mi propio blog. Tanto tiempo usando Linux hace que uno se plantee aportar algo a cambio ^^

        تحياتي!

  8.   MSX قال

    "إذا كنت تتساءل لماذا اخترت هذه الأحرف الأربعة لمكاتبي ، فتذكر القواعد النووية الأربعة للحمض النووي."
    حلو ، +1

    1.    مكافحة قال

      حسنًا ، أنا حقًا أحب فكرة وضع الحمض النووي على مكتبي.

  9.   هالونسوف قال

    دليل ممتاز ، بفضلها أحاول فقط xmonad ، ولا يمكنني إلا أن أقول شيئًا واحدًا عنه ، لقد وقعت في حب xmonad ، ما زلت لم أضع يدي عليه ، ومع ذلك يبدو أنه ممتاز بالنسبة لي ، شكرًا انت كثيرا

    1.    MSX قال

      ممتاز ، نتمنى أن نرى تقدمك يتحول إلى منشور! =)

  10.   فيكتور سالميرون قال

    ملاحظة صغيرة للدرس التعليمي ، في الوقت الحالي ، أستخدم Debian المستقر (Squeeze) ، ولتثبيت dmenu ، لا يتم ذلك باستخدام aptitude install dmenu ، ولكن باستخدام حزمة أدوات suckless ، للباقي ، برنامج تعليمي ممتاز

    1.    مكافحة قال

      نفس الكفاءة تصححها. بالإضافة إلى ذلك ، يتم فهم الترتيب بشكل أفضل بهذه الطريقة.

  11.   تارانتونيو قال

    يفترض هذا الدليل أن لديك x مثبتة.
    في حالتي ، أبدأ من وحدة تحكم دبيان فقط ، والتي اضطررت إلى تثبيت xorg. سيكون الأمر جيدًا ، نظرًا لأن ما نبحث عنه هو بيئة مبسطة ، بدءًا من Debian بدون بيئات رسومية ، وتثبيت xmonad في الوضع البسيط وإضافة أدوات وبرامج وحدة التحكم ، مثل mutt و irssi وما إلى ذلك.

    1.    مكافحة قال

      نعم ، كان X يعمل بالفعل. يوضح المنشور نفسه أنني بدأت مع الحد الأدنى من Debian الذي تم إنشاؤه بالفعل باستخدام Openbox.