Тъмната страна на мозайката (III): XMonad

Изглежда, че съм направил много молитви и е, че до днес не съм поставил милиметър настройки. Както обещавам Известно време днес ще разкъса моите xmonad.hs, които подготвих специално за този повод. Този и други конфигурационни файлове са в Paste, по-специално цветовете на конзолата, настройки на прозореца y горната лента.

Можете да ги изтеглите от там и да ги отворите в любимия си текстов редактор.

Преди

В случай, че се чудите, работният ми плот беше малка Openbox на Debian стабилна. Пропускайки процеса на инсталиране на разпространението за момента, трябва да проверите дали необходимите пакети са в хранилищата. Нека направим това (като си спомним, че съм в 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 "азот --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e ", focusBorderColor =" # 3b002 ", workspaces = wrk}` AdditionalKeys` [((mod26Mask, xK_v), хвърляне на хайвер "gvim"), ((mod4Mask, xK_c), хвърляне на хапче "mpc toggle"), ((mod4Mask, xK_a) , spawn "mpc prev"), ((mod4Mask, xK_s), spawn "mpc next")] - Край на конфигурацията. Просто, лесно и чисто.

Какво се случи тук?

Ако те вече са се възстановили от страха, можем да видим, че нашата конфигурация едва достига 30 реда код. Ще обясня част по част, защо ако сте копирали и поставили това, XMonad ще компилира програмата, която току-що написахме. Готов?

Разделът за зависимости

Близо до началото на файла има три реда, които започват с ключовата дума внос. Както в другите езици за програмиране, той изпраща компилатора да търси модула, който иска и това му дава функциите на щастливия модул. Нека да го видим отново:

import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run

Нашата програма използва три зависимости. Първият ни предоставя функциите XMonad, вторият и третият ще ни помогнат по-късно да дефинираме клавишни комбинации и да стартираме програми. Да продължим.

Променливи

Това нещо е работа и за какво е Нека разгледаме по-отблизо кода:

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

работа е променлива, която е еквивалентна на списък от четири елемента, всички низове; тъй като списъците на Haskell приемат само един тип артикул. Ако се чудите защо избрах тези четири букви за настолните си компютри, се сетих за четири нуклеинови бази на ДНК.
Името е просто съкращение и бихме могли да го сложим myWorkspaces, pepitoRojo или каквото и да било, стига да започва с малки букви и да го посочим в следващия раздел.
Тук започва хубавото при наличието на пълен език за програмиране, защото можем да определим цвета на прозореца от променлива:

windowColor = "#FFFFFF"

Или дори да създадете функция, която връща цвят по отношение на нашето настроение:

moodColor m | m == "Тъжно" = "# b0c4f6" - Нещо като синьо | m == "Angry" = "# ba3f3f" - Нещо като червено | m == "Happy" = "# 8bff7e" - Нещо като зелено | в противен случай = "#FFFFFF" - бяло, за неутрални дни

И още много. Усещате ли вече силата на пръстите си? Едно нещо. Ако не разбирате какво се е случило, помислете, че това е собствена структура на Haskell, която ние наричаме Guarda и по същество е като дърво, ако тогава, но по-организирано и красиво. И не се притеснявайте, кодът е написан от мен и работи добре.

Основният раздел

От реда, който казва основно = направи започнахме да уточняваме поведението на XMonad. Да го видим спокойно.

Изстрелване на нещата в началото

Това може да се постигне по много начини, но за да избегна зависимостите и да направя кода по-чист, макар и очевидно по-пещерен, избрах това:

xmproc <- spawnPipe "xmobar" spawn "азот --restore" 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} - ...

След това дефинираме нашия терминал, urxvtc, защото така наричаме клиент на демона, който бягаме по-рано. Други неща, като списъка с работни пространства, които бихме могли да включим в неща като:

, работни пространства = ["H", "O", "L", "A"], работни пространства = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], работни пространства = [" 1: уеб "," 2: музика "," 3: неизползвано пространство "," 4: Ufff "]

И други неща, които обработката на списъка с низове на Haskell ни позволява да правим.
Дебелината на границата е само цяло число и ако искаме да променим цвета на прозореца, фокусиран от функцията настроениеЦвят които току-що създадохме, защото оставяме променливата така:

--..., focusBorderColor = moodColor "Happy" - ...

$ На линията xmonad ... това е само приложение на правилни асоциативни функции, т.е. запазваме няколко скоби. 😀

Комбинация от клавиши

В края на файла имаме списък с кортежи, които съдържат някои преки пътища, в този случай те стартират GVim, поставят на пауза или възпроизвеждат музиката и я напредват или забавят. Това е. Функцията AdditionalKeys се предлага във втория модул, който импортираме, а задните акценти я карат да се изпълнява в стила на функцията div (/) като 1/2, а не div 1 2, което улеснява четенето. Така е:

- ...} `AdditionalKeys` [(((mod4Mask, xK_v), хвърляне на хайвер" gvim "), ((mod4Mask, xK_c), поява на" mpc превключване "), ((mod4Mask, xK_a), хвърляне на хапка" mpc пред ") , ((mod4Mask, xK_s), хвърляне на хапка "mpc next")]

.Xmobarrc

Конфигурирайте {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", position = Top , lowerOnStart = False, команди = [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. Ще се видим.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   ivanovblack каза той

    ! Фантастично!

    Spectrwm следващия път? !Да сър!

  2.   The Sandman86 каза той

    Много добро ръководство, изглежда много интересно, искам да погледна, въпреки че съм повече от удобен с моя Openbox.

  3.   анти каза той

    Ами сега, пропуснах да посоча къде отиват тези файлове, но когато редактирам публикацията, тя ми изпраща съобщение за грешка:
    Фатална грешка: Извикване на недефинирана функция get_header () в /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php на линия
    Ако някой може да го редактира, той върви по следния начин:

    Основен конфигурационен файл: ~ / .xmonad / xmonad.hs
    Xmobarrc файл: ~ / .xmobarrc
    Конфигурационен файл на конзолата: ~ / .X по подразбиране
    ????

    1.    анти каза той

      Не мога да редактирам собствените си публикации. Не мога да намеря опцията никъде на работния плот. Имам няколко грешки, това е всичко, минимални поправки.

  4.   Nano каза той

    Е, намирам го за супер интересен, тъй като е по-продуктивен по отношение на програмирането. Искам да се забърквам с Awesome, защото наистина искам да науча LUA.

    Той съществува за тези от нас, които програмират в Python Qtile, но истината е, че не мога да го накарам да използвам, използвам Ubuntu и го инсталирах чрез PPA, а също и от източници, но нещастното нещо не иска да работи xD

    Както и да е, LUA е нещо, което ТРЯБВА да науча и нищо по-добро от това да виждам лицата ви с този тип плочки.

    Продължавай в същия дух, ти си на път да станеш автор отвътре DesdeLinux

    1.    Nano каза той

      И да, аз съм в колеж и в тази глупост те нямат Linux xD

      1.    анти каза той

        Благодаря нано. Но можете ли да ми помогнете с редактирането на статиите след публикуването им? Не мога.

        1.    Нано каза той

          Да, успокойте се, оставете ги така, както се вписват по-добре, отколкото аз ги поправям

  5.   xykyz каза той

    Благодаря анти, със сигурност ще опитам XMonad. Виждам, че използва основни неща на Haskell, без да е необходима много сложност, като охрана, оператор на приложения и очевидно използване на списъци (в противен случай не би било Haskell xD).

    Да видим как изглежда! 🙂

  6.   Fernando каза той

    Отдавна използвам мениджър на прозорци с плочки, страхотно. Когато имам време, ще направя урок, в който се надявам да обясня целия процес, от инсталирането на страхотно до конфигурирането на набор от леки програми и създаването на собствена тема.

    Ако ви се струва добре, когато го имам, мога да ви уведомя, за да можете да го публикувате тук.

    Между другото и с ваше разрешение правя малко реклама на малкия си уебсайт, ако искате можете да разгледате, в случай че се интересувате от някоя публикация:

    http://niferniware.sytes.net

    Поздрави!

    1.    MSX каза той

      Ако е Awesome 3, определено се интересувам от него.

  7.   Fernando каза той

    Един детайл, частта от мрежата, в която съм хоствал блога, е:
    http://niferniware.sytes.net/blog/

    Съжалявам за грешката.

    Приветствие!

    1.    елав каза той

      Наистина харесах вашия блог ... ^^

      1.    Fernando каза той

        Благодаря ви много Елав, ние сме в контакт!

        Истината е, че в известен смисъл DesdeLinux Това ме подтикна да създам собствен блог. Толкова много време, използвано за Linux, кара човек да обмисли да даде нещо в замяна ^^

        Поздрави!

  8.   MSX каза той

    "Ако се чудите защо избрах тези четири букви за бюрата си, спомних си четирите нуклеинови основи на ДНК."
    Сладко, +1

    1.    анти каза той

      Е, много ми харесва идеята да сложа ДНК на бюрата си.

  9.   халонсов каза той

    Отлично ръководство, благодарение на нея просто опитвам xmonad и мога да кажа само едно нещо за това, влюбих се в xmonad, все още не слагам ръка и все пак изглежда отлично, много благодаря

    1.    MSX каза той

      Отлично, надяваме се напредъкът ви да се превърне в публикация! =)

  10.   Виктор Салмерон каза той

    Малко наблюдение за преподавателя, в момента използвам Debian stable (Squeeze) и за да инсталирам dmenu, това не се прави с aptitude install dmenu, а с пакета suckless-tools, иначе отличен урок

    1.    анти каза той

      Същата склонност го оправя. Освен това редът се разбира по-добре така.

  11.   тарантонио каза той

    Това ръководство предполага, че имате инсталирани x.
    В моя случай започвам само от debian конзола, с която трябваше да инсталирам xorg. Би било добре, тъй като това, което търсим, е минималистична среда, започвайки от debian без графични среди, инсталирайки xmonad в прост режим и добавяйки инструменти и конзолни програми, като mutt, irssi и т.н.

    1.    анти каза той

      Да, Xs вече бяха включени. Самата публикация обяснява, че започнах с минимален Debian, вече направен с Openbox.