El costat fosc de l'mosaic (III): XMonad

Sembla que m'he fet molt de l'pregar i és que fins avui no em posat ni un mil·límetre de configuracions. Com vinc prometent des de fa una estona avui despedazaré meu xmonad.hs que vaig preparar especialment per a aquesta ocasió. Aquest i altres arxius de configuració són al Paste, específicament els colors de la consola, les configuracions de les finestres y la barra superior.

Pots descarregar-des d'aquí i obrir-les en el teu editor de text favorit.

Abans

Per si s'ho preguntaven, el meu escriptori era un petit Openbox a Debian estable. Obviant de moment el procés d'instal·lació de la distribució, has de verificar que els paquets necessaris estiguin en els repositoris. Fem això (recordant que estic a Debian):

suo aptitude install GHC xmonad xmobar gmrun dmenu

I llest. Acabem d'instal·lar, en ordre d'aparició; el Glasgow Haskell Compiler que s'encarrega de compilar i interpretar Haskell; XMonad, el gestor de finestres, XMobar és una barra que ens presenta informació de l'sitema i uns llançadors de programes, dmenu i gmrun; que amablement ja vénen configurats perquè XMonad els llavors feu arrencar amb Mod + P i Mod + Shift + P.

I així és com es veia el meu escriptori. El poso perquè tinguem un punt de comparació i emulemos algunes de les coses que ja tenia configurades en un ambient més minimalista.

Res de l'altre món

Però sorpresa. XMonad ens rep així. A la captura ja he obert gmrun, perquè es vegi que no està descompost:

res espectacular

I nosaltres volem que es vegi així, ja configurat i tot:

així sí

La captura mostra una terminal corrent ncmpcpp, un client de MPD per a la terminal; i una sessió de gvim, totes dues amb els colors de la paleta SolarizedLight. Aconseguir això no va ser realment difícil i fins i tot Vim i urxvt ja estaven llestes en el meu sistema.

El xmonad.hs, ui quina por!

Per res. La configuració que estan a punt de veure és summament senzilla i bàsica. Hauria de funcionar en tots els sistemes que disposin de XMonad 0.9.1, encara que ja estigui disponible la 0.10. Doncs tinguin por, molta por:

- Configuració de Xmonad - Com veuen, és bastant simple import XMonad import XMonad.Util.EZConfig import 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")] - Fi de la configuració. Simple, fàcil i net.

Què va passar aquí?

Si ja es van recuperar de l'ensurt, podem observar que la nostra configuració a penes i arriba a les 30 línies de codi. Vaig a explicar part per part, per què si vas copiar i pegar això, XMonad va compilar el programa que acabem d'escriure. A punt?

La secció de dependències

Gairebé a el principi de l'arxiu hi ha tres línies que comencen amb la paraula clau importar. Com en altres llenguatges de programació, mana a l'compilador a cercar el mòdul que vol i aquest li lliura les funcions de l'afortunat mòdul. Vegem-ho de nou:

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

El nostre programa usa tres dependències. La primera ens porta les funcions pròpies de XMonad, la segona i la tercera ens ajudaran més endavant a definir dreceres de teclat ia córrer programes. Seguim.

les variables

Que cosa és treball i perquè serveix. Apreciem el codi de més a prop:

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

treball és una variable, que equival a una llista de quatre elements, tots cadenes; per que les llistes d'Haskell només accepten un tipus d'element. Si es pregunten per què vaig triar aquestes quatre lletres per als meus escriptoris, acordin-de les XNUMX bases nucleiques de l'ADN.
El nom és només una abreviatura, i vam poder posar-li myWorkspaces, pepitoRojo o el que sigui, mentre comenci amb minúscula i el especifiquem en la següent secció.
Aquí comença el bo de tenir un llenguatge de programació complet a la nostra disposició, per que podríem definir el color de la finestra des d'una variable:

colorVentana = "#FFFFFF"

O fins i tot crear una funció que retorni un color respecte al nostre estat d'ànim:

moodColor m | m == "Trist" = "# b0c4f6" - Una cosa com blau | m == "Enutjat" = "# ba3f3f" - Una cosa com vermell | m == "Feliç" = "# 8bff7e" --Una cosa com verd | otherwise = "#FFFFFF" - Blanco per als dies neutrals

I moltes coses més. Ja senten el poder sobre els seus dits? Una cosa. Si no entenen que pas, pensin que això és una estructura pròpia d'Haskell a la qual li diem guarda i bàsicament és com un arbre if-then-else, però més organitzat i bonic. I no es preocupin, el codi ho vaig escriure jo i funciona bé.

La secció principal

A partir d'el rengle que diu main = do vam començar a específicar el comportament de XMonad. Vegem-ho amb calma.

Arrencant les coses a el principi

Això es pot aconseguir de moltes maneres, però per quedar-nos curts de dependències i fer un codi més net, encara que clarament més cavernari, vaig optar per això:

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

La primera línia arrenca el XMobar, el fitxer de configuració veurem més tard.
Després vam arrencar algunes coses indispensables per a mi, un fons de pantalla agradable (el mateix que el de la primera captura), un dimoni que fa a urxvt córrer com el vent, el dimoni de mpd -que posa la meva música des del principi i mai tanco - i un control de volum. Ja, això és tot. La sintaxi és la mateixa si volen arrencar el que vostès necessiten.

Els ajustos finals

Aquí definim algunes coses que normalment són només preferències personals. Per exemple, m'agrada fer servir a la normalment inútil tecla Super (efectivament, la de les finestres) en comptes de Alt, però aquesta és la meva preferència. Si volen tornar a Super, treguin la primera línia.

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

Després definim la nostra terminal, urxvtc, Per que així anomenem a un client de el dimoni que vam córrer anteriorment. Altres coses més, com la llista d'espais de treball, que bé podríem haver posat en coses com:

, Workspaces = [ "H", "O", "L", "A"], workspaces = [ "A", "R", "C", "H", "L", "I", "N "," O "," X "], workspaces = [" 1: web "," 2: musica "," 3: espacioInutil "," 4: Ufff "]

I altres coses que ens permet el processament de llistes de cadenes de Haskell.
El gruix de la vora és només un nombre enter i si volem canviar el color de la finestra enfocada per la funció moodColor que acabem de crear, doncs deixem la variable així:

--..., focusedBorderColor = moodColor "Feliç" - ...

El $ a la línia xmonad ... és només una aplicació de funcions associativa a dretes, és a dir, ens estalviem uns parèntesis. 😀

Les dreceres de teclat

El final de l'arxiu tenim una llista de tuples que contenen algunes dreceres, en aquest cas, llancen gvim, pausan o reprodueixen la música, i la avancen o la retarden. Això és tot. La funció additionalKeys ve en el segon mòdul que importem i els accents inversos fa que s'executi a l'estil de la funció div (/) com 1/2 i no div 1 2 cares, fent-lo més fàcil de llegir. Així està:

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

el .xmobarrc

Config {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, Run dati "% a% b% d" "date" 36000, Run dati "% H:% M" "time" 10, Run StdinReader], sepchar = " '", alignSep = "} {" , template = " 'username' @ 'hostname'} { 'mpd' | 'date' - 'time'"

Això hauria de funcionar, i de fet ho fa. La sintaxi és una mica més complexa i el millor és que la analizes tu mateix per entendre-la. Així que només em limitaré a dir-te que estem descrivint les ordres, les seves opcions i algunes configuracions extra, que seran mostrats en XMobar.
La línia template té tota l'acció i em vaig inventar un truc perquè mostri la cançó que estic escoltant. Aquest truc i el de canviar la cançó per dreceres de teclat requereixen d'mpc, un client de mpd executable des de la terminal.

Conclusions

Això és tot, crec. Ja revisem l'arxiu principal de XMonad i vam començar a aprendre Haskell ho vulguem o no. Si vols seguir hi ha una guia molt bona amb la que començar.
En la pròxima entrega explorarem als gestors no programables, específicament Spectrwm / Scrotwm. Ens veiem.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   ivanovnegre va dir

    ! Fantàstic!

    La propera vegada Spectrwm? ! Sí senyor!

  2.   TheSandman86 va dir

    Molt bona guia, es veu molt interessant, m'estan entrant les ganes de donar-li un cop d'ull, tot i que estic mes que còmode amb el meu Openbox.

  3.   contra va dir

    Ups, em va passar específicar on és que van aquests arxius, però quan li dono a editar el post, em envia un missatge d'error:
    Fatal error: Call to undefined function get_header () in /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php on line
    Si algú ho pot editar, van així:

    Arxiu de configuració principal: ~ / .Xmonad / xmonad.hs
    Arxiu de xmobarrc: ~ / .Xmobarrc
    Arxiu de configuració de la consola: ~ / .Xdefaults
    ????

    1.    contra va dir

      Sembla que no puc editar els meus propis posts. No trobo la opció per enlloc a l'escriptori tampoc. Tinc un parell d'errors, és tot, correccions mínimes.

  4.   Nano va dir

    Doncs em sembla super interessant ja que és mes productiu quan es tracta de programar. Jo vull ficar-me amb Awesome perquè la veritat vull aprendre LUA.

    Hi per als que programem en Python Qtile, però la veritat és que no ho aconsegueixo fer córrer, camino fent servir Ubuntu i l'instal via PPA i també des de fonts però el molt desgraciat no vol funcionar xD

    De totes maneres LUA és una cosa que HE aprendre i res millor que veure les cares amb aquest tipus de tils.

    Segueix així anti, vas en camí a convertir-te en Autor dins de DesdeLinux

    1.    Nano va dir

      I sí, vaig a la universitat i en aquesta merda no tenen Linux xD

      1.    contra va dir

        Gràcies nano. Però, ¿m'ajudes amb el d'editar els articles després de publicats? No puc.

        1.    nano va dir

          Sí, tranquil, deixa'ls com a millor et quedin que jo els acord

  5.   Xykyz va dir

    Gràcies anti, definitivament vaig a provar XMonad. Veig que fa servir coses bàsiques d'Haskell sense necessitat de molta complexitat com les guardes, l'operador aplicació i evidentment l'ús de llistes (si no, no seria Haskell xD).

    A veure que tal em queda! 🙂

  6.   Fernando va dir

    Porto temps fent servir un tiling windows manager, Awesome. Quan tingui temps faré un tutorial en el que espero poder explicar tot el procés, des d'instal·lar awesome fins a configurar un set de programes lleugers i crear el nostre propi theme.

    Si us sembla bé, quan el tingui us puc avisar perquè el publiqueu aquí.

    De passada i amb el vostre permís, faig una mica de publicitat a la meva petita web, si voleu podeu fer-li un cop d'ull, per si us interessés alguna publicació:

    http://niferniware.sytes.net

    Una salutació!

    1.    MSX va dir

      Si és Awesome 3 definitivament m'interessa.

  7.   Fernando va dir

    Un detall, la secció del web on tinc allotjat el bloc és:
    http://niferniware.sytes.net/blog/

    Lamento l'error.

    Una salutació!

    1.    ILAV va dir

      Em va agradar molt el teu bloc ... ^^

      1.    Fernando va dir

        Moltes gràcies ILAV, estem en contacte!

        La veritat és que en certa manera DesdeLinux em va incitar a crear el meu propi bloc. Tant temps usant Linux fa que un es plantegi aportar alguna cosa a canvi ^^

        Una salutació!

  8.   MSX va dir

    «Si es pregunten per què vaig triar aquestes quatre lletres per als meus escriptoris, acordin-de les quatre bases nucleiques de l'ADN.»
    Sweet, +1

    1.    contra va dir

      Bé, m'agrada molt la idea de posar-li l'ADN als meus escriptoris.

  9.   halonsov va dir

    Exelente guia, gràcies a ella tot just estic provant xmonad, i només puc dir una cosa del, m'enamori de xmonad, tot i no li fico mà i tot i aixi em sembla excel·lent, moltes gràcies

    1.    MSX va dir

      Excel·lent, esperem veure els teus avenços convertits en un post! =)

  10.   Víctor Salmerón va dir

    Una petita observació a l'estatut, en aquest moment ús Debian estable (Squeeze), i per instal·lar el dmenu, no es fa amb un aptitude install dmenu, sinó amb el paquet suckless-tools, d'altra banda, excel·lent Estatut

    1.    contra va dir

      El mateix aptitude ho corregeix. A més s'entén millor l'ordre així.

  11.   tarantoni va dir

    Aquesta guia pressuposa que tens les x instal·lades.
    En el meu cas, part d'una debian només consola, amb la qual cosa vaig haver de instal·lar xorg. Estaria bé, ja que el que busquem és un entorn minimalista, partir d'una debian sense entorns gràfics, instal·lar xmonad en mode simple i afegir eines i programes de consola, tipus mutt, irssi, etc ..

    1.    contra va dir

      Sí, les X ja les tenia posades. El post mateix explica que vaig començar amb un Debian mínim ja fet amb Openbox.