Η σκοτεινή πλευρά του μωσαϊκού (III): XMonad

Φαίνεται ότι έχω κάνει πολλές προσευχές και είναι ότι μέχρι σήμερα δεν έχω τοποθετήσει ένα χιλιοστό ρυθμίσεων. Όπως έχω υποσχεθεί Για λίγο σήμερα θα σκίσει το xmonad.hs που ετοίμασα ειδικά για αυτήν την περίσταση. Αυτό και άλλα αρχεία διαμόρφωσης βρίσκονται στην Επικόλληση, συγκεκριμένα τα χρώματα της κονσόλας, τις ρυθμίσεις παραθύρου y την επάνω μπάρα.

Μπορείτε να τα κατεβάσετε από εκεί και να τα ανοίξετε στον αγαπημένο σας επεξεργαστή κειμένου.

Προτού

Σε περίπτωση που αναρωτιέστε, η επιφάνεια εργασίας μου ήταν ένα μικρό Openbox στο Debian. Παραλείποντας τη διαδικασία εγκατάστασης διανομής προς το παρόν, θα πρέπει να επαληθεύσετε ότι τα απαραίτητα πακέτα βρίσκονται στα αποθετήρια. Ας το κάνουμε αυτό (θυμόμαστε ότι είμαι στο Debian):

sudo aptitude εγκατάσταση ghc xmonad xmobar gmrun dmenu

Και έτοιμος. Μόλις εγκαταστήσαμε, κατά σειρά εμφάνισης. το Glasgow Haskell Compiler που είναι υπεύθυνο για τη σύνταξη και την ερμηνεία του Haskell · Το XMonad, ο διαχειριστής παραθύρων, το XMobar είναι μια γραμμή που παρουσιάζει πληροφορίες σχετικά με το σύστημα και ορισμένους εκκινητές προγραμμάτων, το dmenu και το gmrun. που έχουν ήδη διαμορφωθεί έτσι ώστε το XMonad να τα εγκαινιάζει με Mod + P και Mod + Shift + P.

Και έτσι ήταν η επιφάνεια εργασίας μου. Το έθεσα έτσι ώστε να έχουμε ένα σημείο σύγκρισης και να μιμηθούμε μερικά από τα πράγματα που είχα ήδη διαμορφώσει σε ένα πιο μινιμαλιστικό περιβάλλον.

Τίποτα ιδιαίτερο

Αλλά έκπληξη. Το XMonad μας καλωσορίζει έτσι. Στην καταγραφή έχω ήδη ανοίξει το gmrun, ώστε να μπορείτε να δείτε ότι δεν είναι σπασμένο:

Τίποτα θεαματικό

Και θέλουμε να είναι έτσι, ήδη διαμορφωμένο και τα πάντα:

Λοιπόν ναι

Το στιγμιότυπο οθόνης δείχνει ένα τερματικό που εκτελεί ncmpcpp, έναν πελάτη MPD για το τερματικό. και μια συνεδρία GVim, και τα δύο με τα χρώματα της παλέτας Solarized Light. Το να το κάνω αυτό δεν ήταν πραγματικά δύσκολο και ακόμη και οι 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 "nitrogen - restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6 ", focusBorderColor =" # 3b002 ", χώροι εργασίας = wrk}` extraKeys` [((mod26Mask, xK_v), spawn "gvim"), ((mod4Mask, xK_c), spawn "mpc toggle"), ((mod4Mask, xK_a) , spawn "mpc prev"), ((mod4Mask, xK_s), spawn "mpc next")] - Τέλος διαμόρφωσης. Απλό, εύκολο και καθαρό.

Τι συνέβη εδώ?

Εάν έχουν ήδη ανακάμψει από το φόβο, μπορούμε να δούμε ότι η διαμόρφωσή μας φτάνει μόλις 30 γραμμές κώδικα. Θα εξηγήσω εν μέρει, γιατί εάν το αντιγράψατε και το επικολλήσατε, το XMonad θα συντάξει το πρόγραμμα που μόλις γράψαμε. Ετοιμος?

Το τμήμα εξαρτήσεων

Κοντά στην αρχή του αρχείου υπάρχουν τρεις γραμμές που ξεκινούν με τη λέξη-κλειδί εισαγωγή. Όπως και σε άλλες γλώσσες προγραμματισμού, στέλνει τον μεταγλωττιστή για να αναζητήσει τη μονάδα που θέλει και της δίνει τις λειτουργίες της τυχερής μονάδας. Ας το δούμε ξανά:

εισαγωγή XMonad εισαγωγή XMonad.Util.EZConfig εισαγωγή XMonad.Util.Run

Το πρόγραμμά μας χρησιμοποιεί τρεις εξαρτήσεις. Το πρώτο μας φέρνει τις λειτουργίες του XMonad, το δεύτερο και το τρίτο θα μας βοηθήσουν αργότερα να καθορίσουμε συντομεύσεις πληκτρολογίου και να εκτελέσουμε προγράμματα. Ας συνεχίσουμε.

Μεταβλητές

Αυτό είναι σκατά Και για τι είναι αυτό? Ας εκτιμήσουμε τον κώδικα πιο στενά:

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

σκατά είναι μια μεταβλητή, η οποία ισοδυναμεί με μια λίστα τεσσάρων στοιχείων, όλων των συμβολοσειρών. επειδή οι λίστες Haskell δέχονται μόνο έναν τύπο στοιχείου. Αν αναρωτιέστε γιατί επέλεξα αυτά τα τέσσερα γράμματα για τους επιτραπέζιους υπολογιστές μου, το θυμήθηκα τέσσερις πυρηνικές βάσεις του DNA.
Το όνομα είναι απλώς μια συντομογραφία, και θα μπορούσαμε να το θέσουμε myWorkspaces, pepitoRojo ή οτιδήποτε άλλο, αρκεί να ξεκινά με ένα πεζό γράμμα και το καθορίζουμε στην επόμενη ενότητα.
Εδώ ξεκινά το καλό με το να έχουμε μια πλήρη γλώσσα προγραμματισμού στη διάθεσή μας, γιατί θα μπορούσαμε να καθορίσουμε το χρώμα του παραθύρου από μια μεταβλητή:

windowColor = "#FFFFFF"

Ή ακόμα δημιουργήστε μια λειτουργία που επιστρέφει ένα χρώμα σε σχέση με τη διάθεσή μας:

moodColor m | m == "Sad" = "# b0c4f6" - Κάτι σαν μπλε | m == "Angry" = "# ba3f3f" - Κάτι σαν κόκκινο | m == "Happy" = "# 8bff7e" - Κάτι σαν πράσινο | Αλλιώς = "#FFFFFF" - Λευκό, για ουδέτερες ημέρες

Και πολλα ΑΚΟΜΑ. Νιώθετε ήδη τη δύναμη στα δάχτυλά σας; Ενα πράγμα. Εάν δεν καταλαβαίνετε τι συνέβη, σκεφτείτε ότι αυτή είναι η δομή του Haskell που ονομάζουμε αποθηκεύσετε και είναι βασικά σαν ένα δέντρο αν-τότε-άλλο, αλλά πιο οργανωμένο και όμορφο. Και μην ανησυχείτε, ο κώδικας γράφτηκε από εμένα και λειτουργεί καλά.

Το κύριο τμήμα

Από τη γραμμή που λέει main = κάνω ξεκινήσαμε να καθορίζουμε τη συμπεριφορά του XMonad. Ας το δούμε ήρεμα.

Ξεκινώντας τα πράγματα στην αρχή

Αυτό μπορεί να επιτευχθεί με πολλούς τρόπους, αλλά για να μείνω μακριά από τις εξαρτήσεις και να κάνω τον κώδικα καθαρότερο, αν και σαφώς περισσότερο caveman, επέλεξα αυτό:

xmproc <- spawnPipe "xmobar" spawn "nitrogen - 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", χώροι εργασίας = wrk} - ...

Στη συνέχεια ορίζουμε το τερματικό μας, urxvtc, γιατί αυτό ονομάζουμε πελάτη του δαίμονα που τρέξαμε νωρίτερα. Άλλα πράγματα, όπως η λίστα των χώρων εργασίας, που θα μπορούσαμε να βάλουμε σε πράγματα όπως:

, χώροι εργασίας = ["H", "O", "L", "A"], χώροι εργασίας = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], χώροι εργασίας = [" 1: web "," 2: music "," 3: αχρησιμοποίητος χώρος "," 4: Ufff "]

Και άλλα πράγματα που μας επιτρέπει η επεξεργασία της λίστας συμβολοσειρών του Haskell.
Το πάχος του περιγράμματος είναι απλώς ένας ακέραιος αριθμός και αν θέλουμε να αλλάξουμε το χρώμα του παραθύρου που εστιάζεται από τη συνάρτηση διάθεση χρώματος που μόλις δημιουργήσαμε, επειδή αφήνουμε τη μεταβλητή ως εξής:

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

Το $ on the line xmonad ... είναι απλώς μια εφαρμογή σωστών συσχετιστικών συναρτήσεων, δηλαδή, αποθηκεύουμε μερικές παρενθέσεις. 😀

Συντομεύσεις πληκτρολογίου

Στο τέλος του αρχείου έχουμε μια λίστα με πλειάδες που περιέχουν μερικές συντομεύσεις, σε αυτήν την περίπτωση, ξεκινούν το GVim, κάνουν παύση ή αναπαραγωγή της μουσικής και προωθούν ή καθυστερούν. Αυτό είναι. Η συνάρτηση extraKeys έρχεται στη δεύτερη ενότητα που εισάγουμε και οι πίσω πινελιές την κάνουν να εκτελείται στο στυλ της λειτουργίας div (/) όπως 1/2 και όχι div 1 2, καθιστώντας ευκολότερη την ανάγνωση. Ετσι είναι:

- ...} `extraKeys` [((mod4Mask, xK_v), spawn" gvim "), ((mod4Mask, xK_c), spawn" mpc toggle "), ((mod4Mask, xK_a), spawn" mpc prev ") , ((mod4Mask, xK_s), αναπαραγωγή "mpc next")]

Το .xmobarrc

Διαμόρφωση {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", θέση = Κορυφή , lowerOnStart = False, Command = [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. Τα λέμε.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Ιβανοβνέγκρο dijo

    !Φανταστικός!

    Spectrwm την επόμενη φορά; !Μάλιστα κύριε!

  2.   Ο Άμμος86 dijo

    Πολύ καλός οδηγός, φαίνεται πολύ ενδιαφέρον, θέλω να ρίξω μια ματιά, παρόλο που είμαι κάτι περισσότερο από άνετο με το Openbox μου.

  3.   αντι dijo

    Ωχ, έλειψα να καθορίσω πού πηγαίνουν αυτά τα αρχεία, αλλά όταν επεξεργάζομαι την ανάρτηση, μου στέλνει ένα μήνυμα σφάλματος:
    Θανατηφόρο σφάλμα: Κλήση στη μη καθορισμένη συνάρτηση get_header () στο /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php on line
    Εάν κάποιος μπορεί να το επεξεργαστεί, μοιάζει με αυτό:

    Κύριο αρχείο διαμόρφωσης: ~ / .xmonad / xmonad.hs
    Αρχείο Xmobarrc: ~ / .xmobarrc
    Αρχείο διαμόρφωσης κονσόλας: ~ / .Xdefaults
    ????

    1.    αντι dijo

      Δεν φαίνεται να επεξεργάζομαι τις αναρτήσεις μου. Δεν μπορώ ούτε να βρω την επιλογή πουθενά στην επιφάνεια εργασίας. Έχω μερικά σφάλματα, όλα αυτά, ελάχιστες διορθώσεις.

  4.   Nano dijo

    Λοιπόν, το βρίσκω εξαιρετικά ενδιαφέρον, καθώς είναι πιο παραγωγικό όσον αφορά τον προγραμματισμό. Θέλω να μπερδεύω με το Awesome γιατί θέλω πραγματικά να μάθω το LUA.

    Υπάρχει για όσους από εμάς προγραμματίζουμε στο Python Qtile, αλλά η αλήθεια είναι ότι δεν μπορώ να το κάνω να τρέχει, χρησιμοποιώ το Ubuntu και το εγκατέστησα μέσω PPA και επίσης από πηγές, αλλά το ατυχές πράγμα δεν θέλει να λειτουργήσει xD

    Τέλος πάντων, το LUA είναι κάτι που ΠΡΕΠΕΙ να μάθω και τίποτα καλύτερο από το να βλέπω ο ένας τον άλλον με αυτά τα είδη πλακιδίων.

    Συνεχίστε έτσι, είστε στο δρόμο για να γίνετε Συγγραφέας μέσα DesdeLinux

    1.    Nano dijo

      Και ναι, είμαι στο κολέγιο και σε αυτό το σκατά δεν έχουν Linux xD

      1.    αντι dijo

        Ευχαριστώ νανο. Όμως, μπορείτε να με βοηθήσετε στην επεξεργασία των άρθρων μετά τη δημοσίευσή τους; Δεν μπορώ.

        1.    nano dijo

          Ναι, ηρέμησε, αφήστε τα καθώς ταιριάζουν καλύτερα από αυτά που τα διορθώνω

  5.   Ξύκιζ dijo

    Ευχαριστώ αντί, σίγουρα θα δοκιμάσω το XMonad. Βλέπω ότι χρησιμοποιεί βασικά πράγματα Haskell χωρίς να χρειάζεται πολλή πολυπλοκότητα, όπως φύλακες, χειριστές εφαρμογών και προφανώς η χρήση λιστών (διαφορετικά δεν θα ήταν Haskell xD).

    Ας δούμε πώς φαίνεται! 🙂

  6.   Fernando dijo

    Χρησιμοποιώ έναν διαχειριστή πλακιδίων παραθύρων εδώ και πολύ καιρό. Όταν έχω χρόνο θα κάνω ένα σεμινάριο στο οποίο ελπίζω να εξηγήσω ολόκληρη τη διαδικασία, από την εγκατάσταση φοβερού έως τη διαμόρφωση ενός συνόλου ελαφρών προγραμμάτων και τη δημιουργία του δικού μας θέματος.

    Αν σας φαίνεται καλό, όταν το έχω, μπορώ να σας ενημερώσω ώστε να μπορείτε να το δημοσιεύσετε εδώ.

    Παρεμπιπτόντως και με την άδειά σας, κάνω λίγη διαφήμιση στον μικρό ιστότοπό μου, αν θέλετε μπορείτε να ρίξετε μια ματιά, σε περίπτωση που σας ενδιαφέρει οποιαδήποτε δημοσίευση:

    http://niferniware.sytes.net

    Χαιρετισμούς!

    1.    MSX dijo

      Αν είναι φοβερό 3, σίγουρα με ενδιαφέρει.

  7.   Fernando dijo

    Μια λεπτομέρεια, η ενότητα του διαδικτύου όπου φιλοξένησα το ιστολόγιο είναι:
    http://niferniware.sytes.net/blog/

    Λυπάμαι για το λάθος.

    Μια ευθυμία!

    1.    Έλαβ dijo

      Μου άρεσε πολύ το ιστολόγιό σας… ^^

      1.    Fernando dijo

        Ευχαριστώ πολύ Elav, είμαστε σε επαφή!

        Η αλήθεια είναι ότι κατά κάποιο τρόπο DesdeLinux Με ώθησε να δημιουργήσω το δικό μου blog. Ο τόσος πολύς χρόνος χρήσης του Linux κάνει κάποιον να σκεφτεί να συνεισφέρει κάτι σε αντάλλαγμα ^^

        Χαιρετισμούς!

  8.   MSX dijo

    "Αν αναρωτιέστε γιατί επέλεξα αυτά τα τέσσερα γράμματα για τα γραφεία μου, θυμήθηκα τις τέσσερις πυρηνικές βάσεις του DNA."
    Γλυκό, +1

    1.    αντι dijo

      Λοιπόν, μου αρέσει πολύ η ιδέα να βάλω DNA στα γραφεία μου.

  9.   χαλόνσοφ dijo

    Εξαιρετικός οδηγός, χάρη σε αυτήν προσπαθώ απλώς το xmonad, και μπορώ να πω μόνο ένα πράγμα γι 'αυτό, ερωτεύτηκα το xmonad, ακόμα δεν το έβαλα το χέρι μου και εξακολουθεί να φαίνεται εξαιρετικό, σας ευχαριστώ πολύ

    1.    MSX dijo

      Εξαιρετικά, ελπίζουμε να δούμε την πρόοδό σας να μετατρέπεται σε μια θέση! =)

  10.   Βίκτωρ Σαλμέρον dijo

    Μια μικρή παρατήρηση στον καθηγητή, αυτή τη στιγμή χρησιμοποιώ το Debian stable (Squeeze) και για να εγκαταστήσω το dmenu, δεν γίνεται με μια εγκατάσταση dmenu ικανότητας, αλλά με το πακέτο χωρίς εργαλεία, διαφορετικά, εξαιρετικό φροντιστήριο

    1.    αντι dijo

      Η ίδια ικανότητα το διορθώνει. Επιπλέον, η παραγγελία είναι καλύτερα κατανοητή έτσι.

  11.   ταραντόνιο dijo

    Αυτός ο οδηγός προϋποθέτει ότι έχετε εγκαταστήσει το x.
    Στην περίπτωσή μου, ξεκινώ μόνο από μια κονσόλα debian, με την οποία έπρεπε να εγκαταστήσω το xorg. Θα ήταν εντάξει, αφού αυτό που ψάχνουμε είναι ένα μινιμαλιστικό περιβάλλον, ξεκινώντας από ένα debian χωρίς γραφικά περιβάλλοντα, εγκαθιστώντας το xmonad σε απλή λειτουργία και προσθέτοντας εργαλεία και προγράμματα κονσόλας, όπως mutt, irssi κ.λπ.

    1.    αντι dijo

      Ναι, τα Xs ήταν ήδη ενεργοποιημένα. Η ίδια η ανάρτηση εξηγεί ότι ξεκίνησα με ένα ελάχιστο Debian που έχει ήδη γίνει με το Openbox.