Le côté obscur de la mosaïque (III): XMonad

Il semble que j'ai fait beaucoup de prière et c'est que jusqu'à aujourd'hui je ne mets pas un millimètre de réglages. Comme je l'ai promis depuis un moment aujourd'hui je vais déchirer mes xmonad.hs que j'ai préparés spécialement pour cette occasion. Ceci et d'autres fichiers de configuration se trouvent dans le Coller, en particulier les couleurs de la console, paramètres de la fenêtre y la barre du haut.

Vous pouvez les télécharger à partir de là et les ouvrir dans votre éditeur de texte préféré.

Avant

Au cas où vous vous poseriez la question, mon bureau était une petite Openbox sur Debian stable. En ignorant le processus d'installation de la distribution pour le moment, vous devez vérifier que les packages nécessaires sont dans les référentiels. Faisons ceci (en gardant à l'esprit que je suis sur Debian):

sudo aptitude installer ghc xmonad xmobar gmrun dmenu

Et prêt. Nous venons d'installer, par ordre d'apparition; le compilateur Glasgow Haskell, qui est en charge de la compilation et de l'interprétation de Haskell; XMonad, le gestionnaire de fenêtres, XMobar est une barre qui présente des informations sur le système et certains lanceurs de programmes, dmenu et gmrun; qui sont gentiment déjà configurés pour que XMonad les lance avec Mod + P et Mod + Shift + P.

Et voici à quoi ressemblait mon bureau. Je l'ai mis de manière à ce que nous ayons un point de comparaison et que nous émulions certaines des choses que j'avais déjà configurées dans un environnement plus minimaliste.

Rien de l'autre monde

Mais surprise. XMonad nous accueille comme ça. Dans la capture, j'ai déjà ouvert gmrun, de sorte que l'on puisse voir qu'il n'est pas cassé:

Rien de spectaculaire

Et nous voulons que cela ressemble à ceci, déjà configuré et tout:

Donc voilà

La capture d'écran montre un terminal exécutant ncmpcpp, un client MPD pour le terminal; et une session GVim, les deux avec les couleurs de la palette Lumière Solarisée. Obtenir cela n'a pas été vraiment difficile et même Vim et urxvt étaient déjà prêts sur mon système.

Le xmonad.hs, c'est effrayant!

Pour rien. La configuration que vous êtes sur le point de voir est extrêmement simple et basique. Il devrait fonctionner sur tous les systèmes avec XMonad 0.9.1, même si 0.10 est déjà disponible. Eh bien, ayez peur, très peur:

- Configuration Xmonad - Comme vous pouvez le voir, c'est assez simple import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A", "C", "G", "T"] main = do xmproc <- spawnPipe "xmobar" spawn "azote --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3 ", focusBorderColor =" # 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")] - Fin de la configuration. Simple, facile et propre.

Qu'est-ce qui c'est passé ici?

S'ils ont déjà récupéré de la peur, nous pouvons voir que notre configuration atteint à peine 30 lignes de code. Je vais expliquer partie par partie, pourquoi si vous copiez et collez ceci, XMonad compilera le programme que nous venons d'écrire. Prêt?

La section des dépendances

Près du début du fichier, il y a trois lignes qui commencent par le mot-clé importer. Comme dans d'autres langages de programmation, il envoie au compilateur trouver le module qu'il veut et lui donne les fonctions du module lucky. Voyons-le à nouveau:

importation XMonad importation XMonad.Util.EZConfig importation XMonad.Util.Run

Notre programme utilise trois dépendances. Le premier nous apporte les fonctions propres à XMonad, le deuxième et le troisième nous aideront plus tard à définir des raccourcis clavier et à exécuter des programmes. Continuons.

les variables

Cette chose est travail et à quoi ça sert? Regardons de plus près le code:

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

travail est une variable, qui équivaut à une liste de quatre éléments, toutes des chaînes; car les listes Haskell n'acceptent qu'un seul type d'élément. Si vous vous demandez pourquoi j'ai choisi ces quatre lettres pour mes ordinateurs de bureau, je me suis souvenu du quatre bases nucléiques de l'ADN.
Le nom n'est qu'une abréviation, et nous pourrions le mettre myWorkspaces, pepitoRojo ou autre, à condition qu'il commence par une lettre minuscule et que nous le spécifions dans la section suivante.
Ici commence la bonne chose d'avoir un langage de programmation complet à notre disposition, car nous pourrions définir la couleur de la fenêtre à partir d'une variable:

windowColor = "#FFFFFF"

Ou même créer une fonction qui renvoie une couleur par rapport à notre humeur:

moodColor m | m == "Sad" = "# b0c4f6" - Quelque chose comme le bleu | m == "Angry" = "# ba3f3f" - Quelque chose comme le rouge | m == "Happy" = "# 8bff7e" - Quelque chose comme le vert | sinon = "#FFFFFF" - Blanc, pour les jours neutres

Et beaucoup plus. Ressentez-vous déjà la puissance sur vos doigts? Une chose. Si vous ne comprenez pas ce qui s'est passé, pensez que c'est une structure propre à Haskell que nous appelons garde et c'est fondamentalement comme un arbre if-then-else, mais plus organisé et joli. Et ne vous inquiétez pas, le code a été écrit par moi et cela fonctionne très bien.

La section principale

De la ligne qui dit main = faire nous avons commencé à spécifier le comportement de XMonad. Voyons cela calmement.

Lancer les choses au début

Cela peut être réalisé de plusieurs manières, mais pour rester à l'écart des dépendances et rendre le code plus propre, bien que clairement plus homme des cavernes, j'ai opté pour ceci:

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

La première ligne démarre le XMobar, dont nous verrons plus tard le fichier de configuration.
Puis nous avons commencé des choses essentielles pour moi, un joli fond d'écran (le même que celui de la première capture d'écran), un démon qui fait courir urxvt comme le vent, le démon de mpd -qui joue ma musique depuis le début et je ne ferme jamais - et un contrôle de volume. Ouais c'est ça. La syntaxe est la même si vous souhaitez démarrer ce dont vous avez besoin.

Ajustements finaux

Ici, nous définissons certaines choses qui ne sont généralement que des préférences personnelles. Par exemple, j'aime utiliser la touche Super normalement inutile (effectivement celle de Windows) au lieu de Alt, mais c'est ma préférence. Si vous souhaitez revenir à Super, supprimez la première ligne.

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

Ensuite, nous définissons notre terminal, urxvtc, parce que c'est ce que nous appelons un client du démon que nous avons couru plus tôt. D'autres choses, comme la liste des espaces de travail, que nous aurions pu mettre dans des choses comme:

, workspaces = ["H", "O", "L", "A"], workspaces = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], workspaces = [" 1: web "," 2: musique "," 3: espace inutilisé "," 4: Ufff "]

Et d'autres choses que le traitement de la liste de chaînes de Haskell nous permet.
L'épaisseur de la bordure est juste un nombre entier et si l'on veut changer la couleur de la fenêtre focalisée par la fonction humeurCouleur que nous venons de créer, car nous laissons la variable comme ceci:

--..., focusBorderColor = moodColor "Heureux" - ...

Le $ sur la ligne xmonad ... c'est juste une application de bonnes fonctions associatives, c'est-à-dire que nous gardons quelques parenthèses. 😀

Raccourcis clavier

À la fin du fichier, nous avons une liste de tuples qui contiennent des raccourcis, dans ce cas, ils lancent GVim, mettent en pause ou jouent la musique, et les avancent ou les retardent. C'est tout. La fonction additionalKeys vient dans le deuxième module que nous importons et les accents arrière la font s'exécuter dans le style de la fonction div (/) comme 1/2 et non div 1 2, ce qui facilite la lecture. Donc c'est:

- ...} `additionalKeys` [((mod4Mask, xK_v), spawn" gvim "), ((mod4Mask, xK_c), spawn" mpc toggle "), ((mod4Mask, xK_a), spawn" mpc prev ") , ((mod4Mask, xK_s), génère "mpc suivant")]

Le .xmobarrc

Config {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", position = Haut , lowerOnStart = False, commands = [Run Com "echo" ["$ USER"] "username" 864000, Run Com "hostname" ["-s"] "hostname" 864000, Run Com "mpc current" [""] "mpd" 10, date d'exécution "% a% b% d" "date" 36000, date d'exécution "% H:% M" "heure" 10, exécution StdinReader], sepChar = "'", alignSep = "} {" , template = "'username' @ 'hostname'} {'mpd' | 'date' - 'time'"

Cela devrait fonctionner, et cela fonctionne réellement. La syntaxe est un peu plus complexe et il est préférable de l'analyser vous-même pour la comprendre. Je me limiterai donc à vous dire que nous décrivons les commandes, leurs options et quelques paramètres supplémentaires, qui seront affichés dans XMobar.
La ligne de modèle a toute l'action et j'ai trouvé une astuce pour montrer la chanson que j'écoute. Cette astuce et celle pour changer la chanson pour les raccourcis clavier nécessitent mpc, un exécutable client mpd depuis le terminal.

Conclusions

Voilà, je pense. Nous avons déjà examiné le fichier XMonad principal et avons commencé à apprendre Haskell, que cela nous plaise ou non. Si vous souhaitez continuer, il existe un très bon guide pour commencer.
Dans le prochain épisode, nous explorerons les gestionnaires non programmables, en particulier Spectrwm / Scrotwm. À plus.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Ivanovnegro dit

    !Fantastique!

    Spectrwm la prochaine fois? !Oui monsieur!

  2.   Le Sandman86 dit

    Très bon guide, ça a l'air très intéressant, j'ai envie d'y jeter un œil, même si je suis plus que à l'aise avec mon Openbox.

  3.   contre dit

    Oups, j'ai manqué de spécifier où ces fichiers vont, mais lorsque je modifie le message, cela m'envoie un message d'erreur:
    Erreur fatale: appel à la fonction non définie get_header () dans /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php en ligne
    Si quelqu'un peut le modifier, il va comme suit:

    Fichier de configuration principal: ~ / .xmonad / xmonad.hs
    Fichier Xmobarrc: ~ / .xmobarrc
    Fichier de configuration de la console: ~ / .Xdefaults
    😀

    1.    contre dit

      Je n'arrive pas à modifier mes propres messages. Je ne trouve pas l'option nulle part sur le bureau non plus. J'ai quelques bugs, c'est tout, des correctifs minimes.

  4.   Nano dit

    Eh bien, je trouve cela super intéressant car il est plus productif en matière de programmation. Je veux jouer avec Awesome parce que je veux vraiment apprendre LUA.

    Il existe pour ceux d'entre nous qui programment en Python Qtile, mais la vérité est que je ne peux pas le faire fonctionner, j'utilise Ubuntu et je l'ai installé via PPA et aussi à partir de sources mais le malheureux ne veut pas fonctionner xD

    Quoi qu'il en soit, LUA est quelque chose que je DOIS apprendre et rien de mieux que de voir les visages de chacun avec ce type de tuiles.

    Continuez ainsi, vous êtes sur la bonne voie pour devenir un auteur à l'intérieur DesdeLinux

    1.    Nano dit

      Et oui, je suis à l'université et dans cette merde, ils n'ont pas Linux xD

      1.    contre dit

        Merci nano. Mais pouvez-vous m'aider à éditer les articles après leur publication? Je ne peux pas.

        1.    nano dit

          Oui, calme-toi, laisse-les comme ils vont mieux que je les répare

  5.   xykyz dit

    Merci anti, je vais certainement essayer XMonad. Je vois qu'il utilise des éléments de base Haskell sans nécessiter beaucoup de complexité comme les gardes, l'opérateur d'application et évidemment l'utilisation de listes (sinon ce ne serait pas Haskell xD).

    Voyons à quoi ça ressemble! 🙂

  6.   Fernando dit

    J'utilise un gestionnaire de fenêtres de carrelage depuis longtemps, génial. Quand j'aurai le temps, je ferai un tutoriel dans lequel j'espère être en mesure d'expliquer tout le processus, de l'installation de génial à la configuration d'un ensemble de programmes légers et à la création de notre propre thème.

    Si cela vous convient, lorsque je l'aurai, je pourrai vous le faire savoir afin que vous puissiez le publier ici.

    D'ailleurs et avec votre permission, je fais un peu de publicité sur mon petit site, si vous voulez vous pouvez jeter un œil, au cas où vous êtes intéressé par une publication:

    http://niferniware.sytes.net

    Salutations!

    1.    msx dit

      Si c'est Awesome 3, ça m'intéresse vraiment.

  7.   Fernando dit

    Un détail, la section du Web où j'ai hébergé le blog est:
    http://niferniware.sytes.net/blog/

    Je suis désolé de l'erreur.

    Un bravo!

    1.    animé dit

      J'ai beaucoup aimé ton blog… ^^

      1.    Fernando dit

        Merci beaucoup Elav, nous sommes en contact!

        La vérité est que d'une certaine manière DesdeLinux Cela m'a incité à créer mon propre blog. Tant de temps passé à utiliser Linux incite à envisager de contribuer quelque chose en retour ^^

        Salutations!

  8.   msx dit

    «Si vous vous demandez pourquoi j'ai choisi ces quatre lettres pour mes bureaux, je me suis souvenu des quatre bases nucléiques de l'ADN.
    Doux, +1

    1.    contre dit

      Eh bien, j'aime vraiment l'idée de mettre de l'ADN sur mes bureaux.

  9.   Halonov dit

    Excellent guide, grâce à elle, je suis juste en train d'essayer xmonad, et je ne peux dire qu'une chose à ce sujet, je suis tombé amoureux de xmonad, je ne mets toujours pas la main dessus et cela semble toujours excellent, merci beaucoup

    1.    msx dit

      Excellent, nous espérons voir vos progrès transformés en article! =)

  10.   Victor Salmeron dit

    Un petit constat au tuteur, pour le moment j'utilise Debian stable (Squeeze), et pour installer le dmenu, ce n'est pas fait avec un dmenu aptitude install, mais avec le paquet suckless-tools, sinon, excellent tutoriel

    1.    contre dit

      La même aptitude le corrige. De plus, la commande est mieux comprise ainsi.

  11.   tarentonium dit

    Ce guide suppose que vous avez installé x.
    Dans mon cas, je démarre uniquement à partir d'une console Debian, avec laquelle j'ai dû installer xorg. Ce serait bien, car ce que nous recherchons est un environnement minimaliste, à partir d'un debian sans environnements graphiques, en installant xmonad en mode simple et en ajoutant des outils et des programmes de console, tels que mutt, irssi, etc.

    1.    contre dit

      Oui, les X étaient déjà allumés. Le message lui-même explique que j'ai commencé avec un Debian minimal déjà créé avec Openbox.