Latura întunecată a mozaicului (III): XMonad

Se pare că am făcut multe rugăciuni și este că până astăzi nu pun un milimetru de setări. Așa cum am promis un timp astăzi îmi voi rupe xmonad.h-urile pe care le-am pregătit special pentru această ocazie. Acest fișier și alte fișiere de configurare se află în Lipire, mai exact culorile consolei, setările ferestrei y bara de sus.

Le puteți descărca de acolo și le puteți deschide în editorul de text preferat.

Înainte

În cazul în care vă întrebați, desktopul meu era un mic Openbox pe stabilul Debian. Omitând procesul de instalare a distribuției pentru moment, ar trebui să verificați dacă pachetele necesare se află în depozite. Să facem acest lucru (amintindu-mi că sunt pe Debian):

sudo aptitude install ghc xmonad xmobar gmrun dmenu

Și gata. Tocmai am instalat, în ordinea apariției; Glasgow Haskell Compiler care se ocupă de compilarea și interpretarea lui Haskell; XMonad, managerul de ferestre, XMobar este o bară care prezintă informații despre sistem și unele lansatoare de programe, dmenu și gmrun; care, gentil, vin deja configurate astfel încât XMonad să le lanseze cu Mod + P și Mod + Shift + P.

Și așa arăta desktopul meu. Am pus-o astfel încât să avem un punct de comparație și să imităm câteva dintre lucrurile pe care le-am configurat deja într-un mediu mai minimalist.

Nimic special

Dar surpriză. XMonad ne întâmpină astfel. În captură am deschis deja gmrun, astfel încât să puteți vedea că nu este rupt:

Nimic spectaculos

Și vrem să arate așa, deja configurat și totul:

Deci da

Captura de ecran arată un terminal care rulează ncmpcpp, un client MPD pentru terminal; și o sesiune GVim, ambele cu culorile paletei Lumină Solarizată. Obținerea acestui lucru nu a fost chiar dificilă și chiar Vim și urxvt erau deja gata pe sistemul meu.

Xmonad.hs, ce înfricoșător!

Deloc. Configurația pe care urmează să o vedeți este extrem de simplă și de bază. Ar trebui să funcționeze pe toate sistemele cu XMonad 0.9.1, chiar dacă 0.10 este deja disponibil. Ei bine, frică, foarte frică:

- Configurare Xmonad - După cum puteți vedea, este destul de simplu să importați XMonad importați XMonad.Util.EZConfig importați 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" , focusedBorderColor = "# 002b26", workspaces = wrk} `additionalKeys` [((mod4Mask, xK_v), spawn" gvim "), ((mod4Mask, xK_c), spawn" mpc toggle "), ((mod4Mask, xK_a), spawn "mpc prev"), ((mod4Mask, xK_s), spawn "mpc next")] - Sfârșitul configurării. Simplu, ușor și curat.

Ce s-a intamplat aici?

Dacă s-au recuperat deja de la sperietură, putem vedea că configurația noastră abia atinge 30 de linii de cod. Voi explica părți cu părți, de ce dacă ați copiat și lipit acest lucru, XMonad va compila programul pe care tocmai l-am scris. Gata?

Secțiunea dependențe

Aproape de începutul fișierului există trei linii care încep cu cuvântul cheie import. Ca și în alte limbaje de programare, trimite compilatorul să caute modulul pe care îl dorește și îi oferă funcțiile modulului norocos. Să-l vedem din nou:

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

Programul nostru folosește trei dependențe. Primul ne aduce funcțiile XMonad, al doilea și al treilea ne vor ajuta ulterior să definim comenzile rapide de la tastatură și să rulăm programe. Sa continuam.

variabile

Chestia asta este lucrare și la ce servește? Să apreciem mai atent codul:

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

lucrare este o variabilă, care este echivalentă cu o listă de patru elemente, toate șirurile; deoarece listele Haskell acceptă un singur tip de articol. Dacă vă întrebați de ce am ales aceste patru litere pentru desktop-urile mele, mi-am amintit de patru baze nucleice de ADN.
Numele este doar o abreviere și am putea să-l punem myWorkspaces, pepitoRojo sau orice altceva, atâta timp cât începe cu o literă mică și îl specificăm în secțiunea următoare.
Aici începe lucrul bun despre a avea la dispoziție un limbaj de programare complet, deoarece am putea defini culoarea ferestrei dintr-o variabilă:

windowColor = "#FFFFFF"

Sau chiar creați o funcție care returnează o culoare în raport cu starea noastră de spirit:

moodColor m | m == "Trist" = "# b0c4f6" - Ceva ca albastru | m == "Angry" = "# ba3f3f" - Ceva ca roșu | m == "Fericit" = "# 8bff7e" --Ceva ca verde | altfel = "#FFFFFF" - Alb, pentru zile neutre

Și mult mai mult. Simțiți deja puterea pe degete? Un lucru. Dacă nu înțelegeți ce s-a întâmplat, credeți-vă că aceasta este o structură proprie a lui Haskell pe care o numim Guarda și este în esență ca un copac dacă altceva, dar mai organizat și mai frumos. Și nu vă faceți griji, codul a fost scris de mine și funcționează bine.

Secțiunea principală

Din rândul care spune principal = face am început să specificăm comportamentul XMonad. Să vedem calm.

Începând lucrurile la început

Acest lucru poate fi realizat în mai multe moduri, dar pentru a rămâne departe de dependențe și a face codul mai curat, deși în mod clar mai cavernist, am optat pentru acest lucru:

xmproc <- spawnPipe "xmobar" spawn "nitrogen - restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

Prima linie pornește XMobar, al cărui fișier de configurare îl vom vedea mai târziu.
Apoi am început câteva lucruri esențiale pentru mine, un tapet frumos (același cu cel din prima captură de ecran), un demon care face ca urxvt să ruleze ca vântul, demonul mpd -care îmi cântă muzica de la început și nu închid - și un control al volumului. Da, asta e. Sintaxa este aceeași dacă doriți să începeți ceea ce aveți nevoie.

Ajustări finale

Aici definim câteva lucruri care sunt de obicei doar preferințe personale. De exemplu, îmi place să folosesc tasta Super în mod normal inutilă (efectiv cea Windows) în loc de Alt, dar asta este preferința mea. Dacă doriți să reveniți la Super, eliminați prima linie.

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

Apoi ne definim terminalul, urxvtc, pentru că așa numim un client al demonului pe care l-am fugit mai devreme. Alte lucruri, cum ar fi lista spațiilor de lucru, pe care le-am fi putut pune în lucruri precum:

, spații de lucru = ["H", "O", "L", "A"], spații de lucru = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], spații de lucru = [" 1: web "," 2: muzică "," 3: spațiu neutilizat "," 4: Ufff "]

Și alte lucruri pe care le permite procesarea listei de șiruri a lui Haskell.
Grosimea chenarului este doar un număr întreg și dacă vrem să schimbăm culoarea ferestrei focalizată de funcție moodColor pe care tocmai l-am creat, pentru că lăsăm variabila astfel:

--..., focusedBorderColor = moodColor "Happy" - ...

$ Pe linie xmonad ... este doar o aplicație a funcțiilor asociative corecte, adică salvăm câteva paranteze. 😀

Comenzi rapide de la tastatură

La sfârșitul fișierului avem o listă de tupluri care conțin câteva comenzi rapide, în acest caz, lansează GVim, întrerup sau redă muzica și o avansează sau o întârzie. Asta e. Funcția additionalKeys vine în al doilea modul pe care îl importăm, iar accentele din spate o fac să se execute în stilul funcției div (/) ca 1/2 și nu div 1 2, ceea ce face mai ușor de citit. Deci este:

- ...} `additionalKeys` [((mod4Mask, xK_v), spawn" gvim "), ((mod4Mask, xK_c), spawn" mpc toggle "), ((mod4Mask, xK_a), spawn" mpc prev "), ((mod4Mask, xK_s), generează „mpc next”)]

.Xmobarrc

Config {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", position = Top ; "mpd" 864000, Data rulării "% a% b% d" "data" 864000, Data rulării "% H:% M" "ora" 10, Run StdinReader], sepChar = "'", alignSep = "} {" , template = "'username' @ 'hostname'} {'mpd' | 'date' - 'time'"

Acest lucru ar trebui să funcționeze și chiar funcționează. Sintaxa este puțin mai complexă și este mai bine dacă o analizați singur pentru a o înțelege. Așa că mă voi limita doar la a vă spune că descriem comenzile, opțiunile lor și câteva setări suplimentare, care vor fi afișate în XMobar.
Linia șablonului are toată acțiunea și am venit cu un truc pentru a afișa melodia pe care o ascult. Acest truc și cel care schimbă melodia prin comenzile rapide de la tastatură necesită mpc, un client MPD executabil de la terminal.

Concluzii

Asta e, cred. Am parcurs deja fișierul principal XMonad și am început să învățăm Haskell indiferent dacă ne place sau nu. Dacă doriți să continuați, există un ghid foarte bun pentru a începe.
În următoarea tranșă vom explora manageri neprogramabili, în special Spectrwm / Scrotwm. Te văd.


22 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   ivanovblack el a spus

    !Fantastic!

    Spectrwm data viitoare? !Da domnule!

  2.   TheSandman86 el a spus

    Ghid foarte bun, arată foarte interesant, vreau să arunc o privire, chiar dacă sunt mai mult decât confortabil cu Openbox-ul meu.

  3.   anti el a spus

    Hopa, am ratat să specific unde se îndreaptă aceste fișiere, dar când editez postarea, îmi trimite un mesaj de eroare:
    Eroare fatală: Apelați la funcția nedefinită get_header () în /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php on line
    Dacă cineva îl poate edita, merge așa:

    Fișierul principal de configurare: ~ / .xmonad / xmonad.hs
    Fișier Xmobarrc: ~ / .xmobarrc
    Fișier de configurare a consolei: ~ / .Xdefaults
    ????

    1.    anti el a spus

      Se pare că nu-mi pot edita propriile postări. Nici opțiunea nu găsesc nicăieri pe desktop. Am câteva bug-uri, asta e tot, remedieri minime.

  4.   Nano el a spus

    Ei bine, mi se pare foarte interesant, deoarece este mai productiv când vine vorba de programare. Vreau să mă încurc cu Awesome pentru că vreau foarte mult să învăț LUA.

    Există pentru cei dintre noi care programăm în Python Qtile, dar adevărul este că nu pot face să ruleze, folosesc Ubuntu și l-am instalat prin PPA și tot din surse, dar nefericitul lucru nu vrea să funcționeze xD

    Oricum, LUA este ceva ce TREBUIE să învăț și nimic mai bun decât să ne vedem fața celuilalt cu acest tip de plăci.

    Ține-o tot așa, ești pe cale să devii un Autor în interior DesdeLinux

    1.    Nano el a spus

      Și da, sunt la facultate și acest rahat nu are Linux xD

      1.    anti el a spus

        Mulțumesc nano. Dar, mă puteți ajuta cu editarea articolelor după publicarea lor? Nu pot.

        1.    nano el a spus

          Da, calmează-te, lasă-le pe măsură ce se potrivesc mai bine decât le repar eu

  5.   xykyz el a spus

    Mulțumesc anti, cu siguranță voi încerca XMonad. Văd că folosește lucruri de bază Haskell fără a fi nevoie de multă complexitate, cum ar fi gardienii, operatorul aplicației și, evident, utilizarea listelor (altfel nu ar fi Haskell xD).

    Să vedem cum arată! 🙂

  6.   Fernando el a spus

    Folosesc de mult un manager de ferestre cu plăci, Awesome. Când voi avea timp, voi face un tutorial în care sper să explic întregul proces, de la instalarea minunată la configurarea unui set de programe ușoare și crearea temei noastre.

    Dacă ți se pare bine, atunci când o voi avea, te pot anunța pentru a o putea publica aici.

    Apropo și cu permisiunea dvs., fac un pic de publicitate pe micul meu site web, dacă doriți, puteți arunca o privire, în cazul în care sunteți interesat de orice publicație:

    http://niferniware.sytes.net

    Salutări!

    1.    MSX el a spus

      Dacă este Awesome 3, cu siguranță mă interesează.

  7.   Fernando el a spus

    Un detaliu, secțiunea web pe care am găzduit blogul este:
    http://niferniware.sytes.net/blog/

    Îmi pare rău pentru greșeală.

    O bucurie!

    1.    plin de viață el a spus

      Mi-a plăcut foarte mult blogul tău ... ^^

      1.    Fernando el a spus

        Mulțumesc mult Elav, suntem în contact!

        Adevărul este că într-un fel DesdeLinux M-a determinat să-mi creez propriul blog. Atât de mult timp folosind Linux face ca cineva să ia în considerare contribuția cu ceva în schimb ^^

        Salutări!

  8.   MSX el a spus

    „Dacă vă întrebați de ce am ales acele patru litere pentru birourile mele, mi-am amintit de cele patru baze nucleice ale ADN-ului”.
    Dulce, +1

    1.    anti el a spus

      Ei bine, îmi place foarte mult ideea de a pune ADN pe birourile mele.

  9.   Halonsov. el a spus

    Ghid excelent, datorită ei doar încerc xmonad și nu pot spune decât un lucru despre asta, m-am îndrăgostit de xmonad, încă nu pun mâna pe el și totuși pare excelent, mulțumesc foarte mult

    1.    MSX el a spus

      Excelent, sperăm să vedem progresul dvs. transformat într-o postare! =)

  10.   Victor Salmeron el a spus

    O mică observație către tutor, în acest moment folosesc Debian stable (Squeeze) și pentru a instala meniul, nu se face cu un meniu aptitude install, ci cu pachetul suckless-tools, altfel, tutorial excelent

    1.    anti el a spus

      Aceeași aptitudine o rezolvă. În plus, ordinea este mai bine înțeleasă astfel.

  11.   tarantonium el a spus

    Acest ghid presupune că aveți x instalate.
    În cazul meu, pornesc doar de la o consolă debian, cu care a trebuit să instalez xorg. Ar fi bine, deoarece ceea ce căutăm este un mediu minimalist, pornind de la un debian fără medii grafice, instalând xmonad în modul simplu și adăugând instrumente și programe de consolă, cum ar fi mutt, irssi etc.

    1.    anti el a spus

      Da, X-urile erau deja pornite. Postarea în sine explică faptul că am început cu un Debian minim deja făcut cu Openbox.