הצד האפל של הפסיפס (III): XMonad

נראה שעשיתי הרבה תפילות וזה שעד היום אני לא שם מילימטר של הגדרות. כפי שהבטחתי בנתיים היום אני אקרע את ה- xmonad.hs שהכנתי במיוחד לאירוע זה. קבצי תצורה זו ואחרים נמצאים בהדבקה, באופן ספציפי את צבעי הקונסולה, הגדרות חלון y הסרגל העליון.

תוכלו להוריד אותם משם ולפתוח אותם בעורך הטקסטים המועדף עליכם.

לפני

אם תהיתם, שולחן העבודה שלי היה Openbox קטן באורווה של דביאן. אם תדלג על תהליך התקנת ההפצה כרגע, עליך לוודא שהחבילות הדרושות נמצאות במאגרים. בואו נעשה זאת (כשאני נזכר שאני ב- Debian):

sudo aptitude להתקין את תפריט. ghc xmonad xmobar gmrun

ומוכן. הרגע התקנו, לפי סדר ההופעה; מהדר גלזגו הסקל שאחראי על הידור ופרשנות של הסקל; 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 "חנקן - שחזר" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumes" xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3 ", focusBorderColor =" # 002b26 ", workspaces = wrk}` נוסף מפתחות '[((mod4Mask, xK_v), שרצים "gvim"), ((mod4Mask, xK_c), שרצים "mpc toggle"), ((mod4Mask, xK_a) , להשריץ "mpc prev"), ((mod4Mask, xK_s), להשריץ "mpc next")] - סוף התצורה. פשוט, קל ונקי.

מה קרה כאן?

אם הם כבר התאוששו מההלם, אנו יכולים לראות שהתצורה שלנו בקושי מגיעה ל -30 שורות קוד. אני הולך להסביר חלק אחר חלק, מדוע אם תעתיק והדבקת את זה, XMonad ירכיב את התוכנית שכתבנו זה עתה. מוּכָן?

סעיף התלות

בסמוך לתחילת הקובץ יש שלוש שורות שמתחילות במילת המפתח לייבא. כמו בשפות תכנות אחרות, הוא שולח את המהדר לחפש את המודול שהוא רוצה וזה נותן לו את הפונקציות של מודול המזל. בואו נראה את זה שוב:

יבוא XMonad ייבוא ​​XMonad.Util.EZConfig ייבוא ​​XMonad.Util.Run

התוכנית שלנו משתמשת בשלוש תלות. הראשון מביא לנו את הפונקציות של XMonad עצמו, השני והשלישי יעזור לנו בהמשך להגדיר קיצורי מקשים ולהפעיל תוכניות. בואו נמשיך.

משתנים

הדבר הזה הוא wrk ולמה זה מיועד? בואו נעריך את הקוד מקרוב:

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

wrk הוא משתנה, שווה ערך לרשימה של ארבעה אלמנטים, כולם מחרוזות; מכיוון שרשימות Haskell מקבלות רק סוג פריט אחד. אם אתה תוהה מדוע בחרתי בארבעת האותיות האלה לשולחן העבודה שלי, נזכרתי ב ארבעה בסיסים גרעיניים של DNA.
השם הוא רק קיצור, ואנחנו יכולים לשים את זה myWorkspaces, pepitoRojo או כל דבר אחר, כל עוד זה מתחיל באותיות קטנות ואנחנו מציינים אותו בסעיף הבא.
כאן מתחיל הדבר הטוב שיש לרשותנו שפת תכנות מלאה, מכיוון שנוכל להגדיר את צבע החלון ממשתנה:

windowColor = "#FFFFFF"

או אפילו ליצור פונקציה שמחזירה צבע ביחס למצב הרוח שלנו:

moodColor m | m == "עצוב" = "# b0c4f6" - משהו כמו כחול | m == "כועס" = "# ba3f3f" - משהו כמו אדום | m == "שמח" = "# 8bff7e" - משהו כמו ירוק | אחרת = "#FFFFFF" - לבן, לימים ניטרליים

ועוד הרבה. האם אתה כבר מרגיש את העוצמה על האצבעות? דבר אחד. אם אינך מבין מה קרה, חשוב שמדובר במבנה של Haskell עצמו שאנו מכנים גארדה וזה בעצם כמו עץ ​​אם-אז-אחר, אבל יותר מאורגן ויפה. ואל דאגה, הקוד נכתב על ידי והוא עובד בסדר.

החלק העיקרי

מהקו שאומר עיקרי = לעשות התחלנו לציין את ההתנהגות של XMonad. בואו נראה את זה בשלווה.

בועט דברים בהתחלה

ניתן להשיג זאת בדרכים רבות, אך כדי להישאר חסר תלות ולהפוך את הקוד לנקי יותר, אם כי ברור יותר איש מערות, בחרתי בכך:

xmproc <- spawnPipe "xmobar" spawn "חנקן - שחזר" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

השורה הראשונה מפעילה את ה- XMobar שאת קובץ התצורה שלו נראה בהמשך.
ואז התחלנו כמה דברים חיוניים עבורי, טפט נחמד (זהה לזה שבצילום המסך הראשון), שד שגורם urxvt לרוץ כמו הרוח, השד של mpd - שמנגן את המוסיקה שלי מההתחלה ואני אף פעם לא סוגר - ובקרת עוצמת קול. כן זה זה. התחביר זהה אם אתה רוצה להתחיל את מה שאתה צריך.

התאמות אחרונות

כאן אנו מגדירים כמה דברים שהם בדרך כלל רק העדפות אישיות. לדוגמא, אני רוצה להשתמש במקש הסופר חסר התועלת הרגיל (למעשה החלונות) במקום Alt, אבל זו ההעדפה שלי. אם אתה רוצה לחזור לסופר, הסר את השורה הראשונה.

- ... xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3", focusBorderColor = "# 002b26", סביבות עבודה = wrk} - ...

ואז אנו מגדירים את הטרמינל שלנו, urxvtcכי זה מה שאנחנו מכנים לקוח של השד שניהלנו קודם. דברים אחרים, כמו רשימת מקומות העבודה, שיכולנו להכניס דברים כמו:

, workspaces = ["H", "O", "L", "A"], workspaces = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], workspaces = [" 1: web "," 2: music "," 3: space unused "," 4: Ufff "]

ועוד דברים שעיבוד רשימת המיתרים של הסקל מאפשר לנו.
עובי הגבול הוא רק מספר שלם ואם אנו רוצים לשנות את צבע החלון הממוקד על ידי הפונקציה מצב רוח צבע שזה עתה יצרנו מכיוון שאנחנו משאירים את המשתנה כך:

--..., focusBorderColor = moodColor "שמח" - ...

הדולר על הקו xmonad ... זה רק יישום של פונקציות אסוציאטיביות נכונות, כלומר אנו שומרים כמה סוגריים. 😀

קיצורי דרך במקלדת

בסוף הקובץ יש לנו רשימה של צמרות המכילים כמה קיצורי דרך, במקרה זה הם מפעילים GVim, מושהים או מנגנים את המוסיקה ומקדמים או מעכבים אותה. זהו זה. הפונקציה additionalKeys מגיעה במודול השני שאנו מייבאים והמבטאים האחוריים גורמים לו לרוץ בסגנון הפונקציה div (/) כמו 1/2 ולא div 1 2, מה שמקל על הקריאה. ככה זה:

- ...} `נוסף מפתחות` [((mod4Mask, xK_v), שרצים" gvim "), ((mod4Mask, xK_c), שרצים" mpc toggle "), ((mod4Mask, xK_a), שרצים" mpc prev "), ((mod4Mask, xK_s), להשריץ "mpc הבא")]

ה- .xmobarrc

תצורה {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", position = למעלה , lowerOnStart = False, commands = [Run Com "echo" ["$ USER"] "username" 864000, Run Com "name host" ["-s"] "host host" 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. נתראה.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   איוונובנגרו דיג'ו

    !פַנטַסטִי!

    Spectrwm בפעם הבאה? !כן אדוני!

  2.   הסנדמן 86 דיג'ו

    מדריך טוב מאוד, זה נראה מאוד מעניין, אני רוצה להעיף מבט, למרות שיותר נוח לי מה- Openbox שלי.

  3.   אנטי דיג'ו

    אופס, התגעגעתי לציין לאן הקבצים האלה עוברים, אבל כשאני עורך את ההודעה, זה שולח לי הודעת שגיאה:
    שגיאה אנושה: התקשר לפונקציה הלא מוגדרת get_header () ב- /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php on line
    אם מישהו יכול לערוך את זה, הוא הולך כך:

    קובץ תצורה ראשי: ~ / .xmonad / xmonad.hs
    קובץ Xmobarrc: ~ / .xmobarrc
    קובץ תצורה של המסוף: ~ / .Xdefaults
    ????

    1.    אנטי דיג'ו

      אני לא מצליח לערוך את ההודעות שלי. אני לא יכול למצוא את האפשרות בשום מקום בשולחן העבודה. יש לי כמה באגים, זהו, תיקונים מינימליים.

  4.   ננו דיג'ו

    ובכן, אני מוצא את זה סופר מעניין מכיוון שהוא יותר פרודוקטיבי בכל מה שקשור לתכנות. אני רוצה להתעסק עם Awesome כי אני באמת רוצה ללמוד LUA.

    זה קיים לאלו מאיתנו שמתכנתים ב- Python Qtile, אבל האמת היא שאני לא מצליחה לגרום לו לפעול, אני משתמש באובונטו והתקנתי אותו דרך PPA וגם ממקורות אבל הדבר האומלל לא רוצה לעבוד xD

    בכל מקרה LUA הוא משהו שאני חייב ללמוד ושום דבר יותר טוב מאשר לראות את פניו של זה עם אריחים מסוג זה.

    תמשיך ככה נגד, אתה בדרך להפוך למחבר בפנים DesdeLinux

    1.    ננו דיג'ו

      וכן, אני בקולג 'ובחרא הזה אין להם לינוקס xD

      1.    אנטי דיג'ו

        תודה ננו. אך האם תוכל לעזור לי בעריכת המאמרים לאחר פרסוםם? אני לא יכול.

        1.    ננו דיג'ו

          כן, תירגע, השאר אותם כשהם מתאימים יותר ממה שאני מתקנת

  5.   קסיקיז דיג'ו

    תודה אנטי, אני בהחלט אנסה ל- XMonad. אני רואה שהוא משתמש בדברים בסיסיים של Haskell ללא צורך במורכבות רבה כמו שומרים, מפעיל היישומים וברור שהשימוש ברשימות (אחרת זה לא יהיה Haskell xD).

    בואו נראה איך זה נראה! 🙂

  6.   פרננדו דיג'ו

    אני משתמש במנהל חלונות רעפים במשך זמן רב, מדהים. כשיהיה לי זמן אעשה הדרכה בה אני מקווה להסביר את כל התהליך, החל מהתקנה מדהימה וכלה בתצורה של קבוצה של תוכניות קלות ויצירת נושא משלנו.

    אם זה נראה לך טוב, כשיש לי את זה אני יכול להודיע ​​לך על מנת שתוכל לפרסם את זה כאן.

    אגב ובאישורך, אני מפרסם מעט באתר הקטן שלי, אם אתה רוצה תוכל להעיף מבט, למקרה שאתה מעוניין בפרסום כלשהו:

    http://niferniware.sytes.net

    ברכות!

    1.    MSX דיג'ו

      אם זה Awesome 3 אני בהחלט מעוניין בכך.

  7.   פרננדו דיג'ו

    פרט אחד, החלק באינטרנט בו מתארח הבלוג הוא:
    http://niferniware.sytes.net/blog/

    אני מצטער על הטעות.

    תרועה!

    1.    אלב דיג'ו

      מאוד אהבתי את הבלוג שלך ... ^^

      1.    פרננדו דיג'ו

        תודה רבה אלב, אנחנו בקשר!

        האמת היא שבמובן מסוים DesdeLinux זה גרם לי ליצור בלוג משלי. כל כך הרבה זמן בשימוש בלינוקס גורם לאדם לשקול לתרום משהו בתמורה ^^

        ברכות!

  8.   MSX דיג'ו

    "אם אתה תוהה מדוע בחרתי בארבע האותיות האלה לשולחנות העבודה שלי, נזכרתי בארבעת בסיסי הגרעין של ה- DNA."
    מתוק, +1

    1.    אנטי דיג'ו

      ובכן, אני מאוד אוהב את הרעיון להניח DNA על שולחנותיי.

  9.   הלונסוב דיג'ו

    מדריך מצוין, בזכותה אני פשוט מנסה xmonad, ואני יכול לומר רק דבר אחד על זה, התאהבתי ב- xmonad, אני עדיין לא שם את היד שלי ואפילו זה נראה מצוין, תודה רבה

    1.    MSX דיג'ו

      מצוין, אנו מקווים לראות את ההתקדמות שלך הופכת לפוסט! =)

  10.   ויקטור סלמרון דיג'ו

    תצפית קטנה אל המורה, כרגע אני משתמשת בדביאן יציב (Squeeze), וכדי להתקין את ה- dmenu, זה לא נעשה בעזרת dmenu להתקנת aptitude, אלא עם חבילת הכלים המצחיקים, אחרת, הדרכה מעולה

    1.    אנטי דיג'ו

      אותה יכולת מתקנת את זה. גם הסדר מובן טוב יותר ככה.

  11.   טרנטוניו דיג'ו

    מדריך זה מניח שהתקנתם x.
    במקרה שלי, אני מתחיל מקונסולת debian בלבד, איתה הייתי צריך להתקין את xorg. זה יהיה בסדר, מכיוון שמה שאנחנו מחפשים הוא סביבה מינימליסטית, החל מדביאן ללא סביבות גרפיות, התקנת xmonad במצב פשוט והוספת כלים ותוכניות קונסולה, כגון mutt, irssi וכו '.

    1.    אנטי דיג'ו

      כן, ה- X כבר היו פועלים. הפוסט עצמו מסביר שהתחלתי עם דביאן מינימלית שכבר יצרה עם Openbox.