De donkere kant van het mozaïek (III): XMonad

Het lijkt erop dat ik veel heb gebeden en het is dat ik tot op de dag van vandaag geen millimeter instellingen heb gedaan. Zoals ik heb beloofd een tijdje vandaag zal ik mijn xmonad.hs scheuren die ik speciaal voor deze gelegenheid heb voorbereid. Deze en andere configuratiebestanden bevinden zich in het bijzonder in de plak de kleuren van de console, de vensterinstellingen y de bovenste balk.

Je kunt ze daar downloaden en openen in je favoriete teksteditor.

Voor

Voor het geval je je afvroeg: mijn bureaublad was een kleine Openbox op Debian-stal. Als u het distributie-installatieproces op dit moment overslaat, moet u controleren of de benodigde pakketten zich in de repositories bevinden. Laten we dit doen (denk eraan dat ik op Debian zit):

sudo aptitude installeer ghc xmonad xmobar gmrun dmenu

En klaar. We hebben zojuist geïnstalleerd, in volgorde van verschijning; de Glasgow Haskell Compiler die verantwoordelijk is voor het samenstellen en interpreteren van Haskell; XMonad, de vensterbeheerder, XMobar is een balk die informatie weergeeft over het systeem en enkele programma-opstartprogramma's, dmenu en gmrun; die al zo vriendelijk zijn geconfigureerd dat XMonad ze start met Mod + P en Mod + Shift + P.

En zo zag mijn bureaublad eruit. Ik heb het zo gesteld dat we een vergelijkingspunt hebben en enkele dingen emuleren die ik al had geconfigureerd in een meer minimalistische omgeving.

Niets speciaals

Maar verrassing. XMonad verwelkomt ons zo. In de opname heb ik gmrun al geopend, zodat te zien is dat het niet kapot is:

Niets spectaculairs

En we willen dat het er zo uitziet, al geconfigureerd en zo:

Dus ja

Het screenshot toont een terminal met ncmpcpp, een MPD-client voor de terminal; en een GVim-sessie, beide met de kleuren van het palet SolarizedLicht. Om dit te krijgen was niet echt moeilijk en zelfs Vim en urxvt waren al klaar op mijn systeem.

De xmonad.hs, hoe eng!

Helemaal niet. De configuratie die u gaat zien, is uiterst eenvoudig en eenvoudig. Het zou moeten werken op alle systemen met XMonad 0.9.1, ook al is 0.10 al beschikbaar. Wees bang, erg bang:

- Xmonad-configuratie - Zoals je kunt zien, is het vrij eenvoudig import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A", "C", "G", "T"] main = do xmproc <- spawnPipe "xmobar" spawn "stikstof --herstel" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3 ", gerichtBorderColor =" # 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")] - Einde van configuratie. Simpel, gemakkelijk en schoon.

Wat is hier gebeurd?

Als ze al hersteld zijn van de schrik, kunnen we zien dat onze configuratie amper 30 regels code bereikt. Ik ga stukje voor stukje uitleggen waarom XMonad het programma compileert dat we zojuist hebben geschreven als je dit kopieert en plakt. Klaar?

De afhankelijkheden sectie

Aan het begin van het bestand zijn er drie regels die beginnen met het trefwoord importeren. Net als in andere programmeertalen, stuurt het de compiler om de gewenste module te zoeken en geeft het de functies van de geluksmodule. Laten we het nog eens zien:

importeer XMonad importeer XMonad.Util.EZConfig importeer XMonad.Util.Run

Ons programma gebruikt drie afhankelijkheden. De eerste brengt ons de XMonad-functies, de tweede en derde zullen ons later helpen om sneltoetsen te definiëren en programma's uit te voeren. Laten we door gaan.

Variabelen

Dat ding is werk en waar is het voor? Laten we de code nader bekijken:

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

werk is een variabele die equivalent is aan een lijst van vier elementen, alle strings; omdat Haskell-lijsten slechts één itemtype accepteren. Als je je afvraagt ​​waarom ik die vier letters voor mijn desktops heb gekozen, herinnerde ik me de vier nucleïnezuurbasen van DNA.
De naam is slechts een afkorting, en we zouden het myWorkspaces, pepitoRojo of wat dan ook kunnen noemen, zolang het begint met een kleine letter en we het specificeren in de volgende sectie.
Hier begint het goede aan het hebben van een volledige programmeertaal tot onze beschikking, omdat we de kleur van het venster zouden kunnen definiëren vanuit een variabele:

windowColor = "#FFFFFF"

Of maak zelfs een functie die een kleur teruggeeft met betrekking tot onze stemming:

moodColor m | m == "Sad" = "# b0c4f6" - Iets als blauw | m == "Angry" = "# ba3f3f" - Zoiets als rood | m == "Happy" = "# 8bff7e" --Zoiets als groen | else = "#FFFFFF" - Wit, voor neutrale dagen

En veel meer. Voel je de kracht al aan je vingers? Een ding. Als je niet begrijpt wat er is gebeurd, denk dan dat dit een Haskell's eigen structuur is die we noemen wacht en het is eigenlijk als een als-dan-anders-boom, maar meer georganiseerd en mooi. En maak je geen zorgen, de code is door mij geschreven en het werkt prima.

Het hoofdgedeelte

Van de regel die zegt main = doen we begonnen het gedrag van XMonad te specificeren. Laten we het rustig bekijken.

Dingen aftrappen in het begin

Dit kan op veel manieren worden bereikt, maar om de afhankelijkheden te vermijden en code schoner te maken, zij het duidelijk meer holbewoner, heb ik hiervoor gekozen:

xmproc <- spawnPipe "xmobar" spawn "stikstof --herstel" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

De eerste regel start de XMobar, waarvan we het configuratiebestand later zullen zien.
Toen begonnen we een aantal essentiële dingen voor mij, een mooie wallpaper (dezelfde als die in de eerste screenshot), een demon die urxvt laat rennen als de wind, de demon van mpd -die mijn muziek vanaf het begin speelt en ik sluit nooit - en een volumeregeling. Ja, dat is het. De syntaxis is hetzelfde als u wilt beginnen met wat u nodig heeft.

Laatste aanpassingen

Hier definiëren we enkele dingen die meestal slechts persoonlijke voorkeuren zijn. Ik gebruik bijvoorbeeld graag de normaal gesproken nutteloze Super-toets (in feite de Windows-toets) in plaats van Alt, maar dat is mijn voorkeur. Als u terug wilt naar Super, verwijdert u de eerste regel.

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

Vervolgens definiëren we onze terminal, urxvtc, want dat is wat we een cliënt van de demon noemen die we eerder liepen. Andere dingen, zoals de lijst met werkruimten, die we in zaken hadden kunnen plaatsen als:

, workspaces = ["H", "O", "L", "A"], workspaces = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], workspaces = [" 1: web "," 2: muziek "," 3: ongebruikte ruimte "," 4: Ufff "]

En andere dingen die de verwerking van de stringlijst van Haskell ons mogelijk maakt.
De dikte van de rand is slechts een geheel getal en als we de kleur van het venster willen veranderen, focust de functie stemmingKleur die we zojuist hebben gemaakt, omdat we de variabele zo laten:

--..., gerichtBorderColor = moodColor "Gelukkig" - ...

De $ aan de lijn xmonad ... het is slechts een toepassing van juiste associatieve functies, dat wil zeggen, we bewaren een paar haakjes. 😀

Toetsenbord sneltoetsen

Aan het einde van het bestand hebben we een lijst met tuples die enkele snelkoppelingen bevatten, in dit geval starten ze GVim, pauzeren of spelen ze de muziek, en versnellen of vertragen ze. Dat is het. De extraKeys-functie komt in de tweede module die we importeren en de achterste accenten zorgen ervoor dat het wordt uitgevoerd in de stijl van de div (/) -functie zoals 1/2 en niet div 1 2, waardoor het gemakkelijker te lezen is. Zo is het:

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

Het .xmobarrc

Config {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", position = Top , lowerOnStart = False, commands = [Run Com "echo" ["$ USER"] "gebruikersnaam" 864000, Run Com "hostnaam" ["-s"] "hostnaam" 864000, Run Com "mpc current" [""] "mpd" 10, startdatum "% a% b% d" "date" 36000, startdatum "% H:% M" "time" 10, start StdinReader], sepChar = "'", alignSep = "} {" , template = "'gebruikersnaam' @ 'hostnaam'} {'mpd' | 'datum' - 'tijd'"

Dit zou moeten werken, en dat doet het ook. De syntaxis is wat complexer en u kunt deze het beste zelf analyseren om het te begrijpen. Dus ik zal mezelf beperken tot het vertellen dat we de commando's, hun opties en enkele extra instellingen beschrijven, die in XMobar zullen worden getoond.
De sjabloonregel bevat alle actie en ik bedacht een truc om het nummer waar ik naar luister weer te geven. Deze truc en de truc om het nummer te veranderen met sneltoetsen vereist mpc, een mpd-client die vanaf de terminal kan worden uitgevoerd.

Conclusies

Dat is het, denk ik. We hebben het hoofdbestand van XMonad al doorgenomen en begonnen Haskell te leren, of we het nu leuk vinden of niet. Als je verder wilt gaan, is er een heel goede gids om mee te beginnen.
In de volgende aflevering zullen we niet-programmeerbare managers onderzoeken, met name Spectrwm / Scrotwm. Tot ziens.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   ivanovzwart zei

    !Fantastisch!

    Spectrwm de volgende keer? !Ja meneer!

  2.   De Zandman86 zei

    Zeer goede gids, het ziet er erg interessant uit, ik wil een kijkje nemen, ook al ben ik meer dan comfortabel met mijn Openbox.

  3.   anti zei

    Oeps, ik heb niet gespecificeerd waar deze bestanden naartoe gaan, maar als ik het bericht bewerk, krijg ik een foutmelding:
    Fatale fout: oproep naar ongedefinieerde functie get_header () in /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php online
    Als iemand het kan bewerken, gaan ze als volgt:

    Hoofdconfiguratiebestand: ~ / .xmonad / xmonad.hs
    Xmobarrc-bestand: ~ / .xmobarrc
    Console-configuratiebestand: ~ / .Xdefaults
    ????

    1.    anti zei

      Ik kan mijn eigen berichten niet bewerken. Ik kan de optie ook nergens op het bureaublad vinden. Ik heb een paar bugs, dat is alles, minimale reparaties.

  4.   Nano zei

    Nou, ik vind het super interessant omdat het productiever is als het gaat om programmeren. Ik wil rotzooien met Awesome omdat ik echt LUA wil leren.

    Het bestaat voor degenen onder ons die programmeren in Python Qtile, maar de waarheid is dat ik het niet kan laten draaien, ik gebruik Ubuntu en ik heb het geïnstalleerd via PPA en ook van bronnen, maar het ongelukkige wil niet werken xD

    Hoe dan ook, LUA is iets dat ik MOET leren en niets beters dan elkaars gezichten zien met dit soort tegels.

    Ga zo door, je bent op weg om een ​​innerlijke auteur te worden DesdeLinux

    1.    Nano zei

      En ja, ik studeer en in deze shit hebben ze geen Linux xD

      1.    anti zei

        Bedankt nano. Maar kun je me helpen met het redigeren van de artikelen nadat ze zijn gepubliceerd? Ik kan niet.

        1.    nano zei

          Ja, kalmeer, laat ze zoals ze beter passen dan ik ze repareer

  5.   xykyz zei

    Bedankt anti, ik zal XMonad zeker eens proberen. Ik zie dat het elementaire Haskell-dingen gebruikt zonder dat er veel complexiteit nodig is, zoals bewakers, de applicatie-operator en uiteraard het gebruik van lijsten (anders zou het Haskell xD niet zijn).

    Laten we eens kijken hoe het eruit ziet! 🙂

  6.   Fernando zei

    Ik gebruik al heel lang een tegelvensterbeheerder, geweldig. Als ik tijd heb, zal ik een tutorial doen waarin ik het hele proces hoop uit te leggen, van het installeren van geweldig tot het configureren van een reeks lichtgewicht programma's en het maken van ons eigen thema.

    Als het u goed lijkt, kan ik het u laten weten wanneer ik het heb, zodat u het hier kunt publiceren.

    Overigens doe ik met jouw toestemming een beetje reclame op mijn kleine website, als je wilt kun je even kijken, voor het geval je interesse hebt in een publicatie:

    http://niferniware.sytes.net

    Groeten!

    1.    msx zei

      Als het Awesome 3 is, ben ik er zeker in geïnteresseerd.

  7.   Fernando zei

    Een detail, het gedeelte van het web waar ik de blog heb gehost, is:
    http://niferniware.sytes.net/blog/

    Het spijt me van de fout.

    Een gejuich!

    1.    levendig zei

      Ik vond je blog erg leuk ... ^^

      1.    Fernando zei

        Heel erg bedankt Elav, we hebben contact!

        De waarheid is dat in zekere zin DesdeLinux Het heeft mij ertoe aangezet om een ​​eigen blog te maken. Zoveel tijd met het gebruik van Linux doet je overwegen om iets terug te doen ^^

        Groeten!

  8.   msx zei

    'Als je je afvraagt ​​waarom ik die vier letters voor mijn bureau heb gekozen, herinnerde ik me de vier nucleïnezuurbases van DNA.'
    Lief, +1

    1.    anti zei

      Ik hou echt van het idee om DNA op mijn bureau te leggen.

  9.   halonenov zei

    Uitstekende gids, dankzij haar probeer ik gewoon xmonad, en ik kan er maar één ding over zeggen, ik werd verliefd op xmonad, ik leg mijn hand er nog steeds niet op en toch lijkt het uitstekend, heel erg bedankt

    1.    msx zei

      Uitstekend, we hopen dat uw voortgang wordt omgezet in een post! =)

  10.   Victor Salmeron zei

    Een kleine opmerking voor de tutor, op dit moment gebruik ik Debian stable (Squeeze), en om het dmenu te installeren, doe ik dat niet met een aptitude install dmenu, maar met het suckless-tools-pakket, anders een uitstekende tutorial

    1.    anti zei

      Dezelfde aanleg lost het op. Bovendien wordt de bestelling zo beter begrepen.

  11.   tarantonium zei

    In deze handleiding wordt ervan uitgegaan dat x's zijn geïnstalleerd.
    In mijn geval begin ik alleen met een debian-console, waarmee ik xorg moest installeren. Het zou prima zijn, aangezien we op zoek zijn naar een minimalistische omgeving, beginnend bij een debian zonder grafische omgevingen, xmonad in de eenvoudige modus te installeren en tools en consoleprogramma's toe te voegen, zoals mutt, irssi, enz.

    1.    anti zei

      Ja, de X's waren al aan. Het bericht zelf legt uit dat ik ben begonnen met een minimale Debian die al met Openbox is gemaakt.