Ciemna strona mozaiki (III): XMonad

Wydaje się, że dużo się modliłem i to jest to, że do dziś nie stawiam milimetra ustawień. Jak obiecałem chwila dzisiaj rozerwę na strzępy moje xmonad.hs, które przygotowałem specjalnie na tę okazję. W szczególności ten i inne pliki konfiguracyjne znajdują się w sekcji Wklej kolory konsoli, ustawienia okna y górny pasek.

Możesz je stamtąd pobrać i otworzyć w swoim ulubionym edytorze tekstu.

Przed

Jeśli się zastanawiasz, mój pulpit był małym Openboxem w stabilnej Debianie. Pomijając na razie proces instalacji dystrybucji, powinieneś sprawdzić, czy niezbędne pakiety znajdują się w repozytoriach. Zróbmy to (pamiętając, że jestem na Debianie):

sudo aptitude install ghc xmonad xmobar gmrun dmenu

I gotowy. Właśnie zainstalowaliśmy, w kolejności pojawiania się; Glasgow Haskell Compiler, który jest odpowiedzialny za kompilację i interpretację Haskell; XMonad, menedżer okien, XMobar to pasek prezentujący informacje o systemie i niektórych programach uruchamiających, dmenu i gmrun; które uprzejmie są już skonfigurowane, więc XMonad uruchamia je z Mod + P i Mod + Shift + P.

A tak wyglądał mój pulpit. Postawiłem to tak, abyśmy mieli punkt odniesienia i naśladowali niektóre rzeczy, które już skonfigurowałem w bardziej minimalistycznym środowisku.

Nic specjalnego

Ale niespodzianka. XMonad wita nas w ten sposób. W przechwytywaniu już otworzyłem gmrun, więc widać, że nie jest zepsuty:

Nic spektakularnego

I chcemy, żeby wyglądało to tak, już skonfigurowane i wszystko:

Więc tak

Zrzut ekranu pokazuje terminal z uruchomionym ncmpcpp, klientem MPD dla terminala; oraz sesja GVim, obie z kolorami z palety Światło słoneczneL. Uzyskanie tego nie było trudne i nawet Vim i urxvt były już gotowe w moim systemie.

Xmonad.hs, jakie straszne!

Ani trochę. Konfiguracja, którą zaraz zobaczysz, jest niezwykle prosta i podstawowa. Powinien działać na wszystkich systemach, które mają XMonad 0.9.1, mimo że 0.10 jest już dostępne. Cóż, bój się, bardzo się bój:

- Konfiguracja Xmonad - Jak widać, jest to całkiem proste import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A", "C", "G", "T"] main = do xmproc <- spawnPipe "xmobar" spawn "azot --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")] - Koniec konfiguracji. Proste, łatwe i czyste.

Co tu się stało?

Jeśli już otrząsnęli się ze strachu, widzimy, że nasza konfiguracja ledwie osiąga 30 linii kodu. Mam zamiar wyjaśnić część po części, dlaczego jeśli skopiowałeś i wkleiłeś to, XMonad skompiluje program, który właśnie napisaliśmy. Gotowy?

Sekcja zależności

W pobliżu początku pliku znajdują się trzy wiersze zaczynające się od słowa kluczowego importować. Podobnie jak w innych językach programowania, wysyła kompilator w celu znalezienia żądanego modułu i nadaje mu funkcje szczęśliwego modułu. Zobaczmy to ponownie:

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

Nasz program używa trzech zależności. Pierwsza dostarcza nam własne funkcje XMonada, druga i trzecia pomogą nam później zdefiniować skróty klawiaturowe i uruchomić programy. Idźmy dalej.

Zmienne

Tak jest praca i do czego to służy? Przyjrzyjmy się bliżej kodowi:

wrk = [„A”, „C”, „G”, „T”]

praca jest zmienną, która jest odpowiednikiem listy czterech elementów, wszystkich łańcuchów; ponieważ listy Haskell akceptują tylko jeden typ elementu. Jeśli zastanawiasz się, dlaczego wybrałem te cztery litery na moje komputery stacjonarne, przypomniałem sobie cztery zasady nukleinowe DNA.
Nazwa jest tylko skrótem i możemy ją wpisać myWorkspaces, pepitoRojo lub cokolwiek innego, o ile zaczyna się od małej litery i określimy ją w następnej sekcji.
Tutaj zaczyna się dobra rzecz związana z posiadaniem pełnego języka programowania do naszej dyspozycji, ponieważ możemy zdefiniować kolor okna ze zmiennej:

windowColor = "#FFFFFF"

Lub nawet utwórz funkcję, która zwraca kolor w odniesieniu do naszego nastroju:

moodColor m | m == "Sad" = "# b0c4f6" - Coś w rodzaju niebieskiego | m == "Angry" = "# ba3f3f" - Coś jak czerwony | m == "Happy" = "# 8bff7e" - Coś jak zielony | w przeciwnym razie = "#FFFFFF" - biały, dla dni neutralnych

I wiele więcej. Czy już czujesz siłę na palcach? Jedna sprawa. Jeśli nie rozumiesz, co się stało, pomyśl, że jest to własna struktura Haskella, którą nazywamy guarda i jest w zasadzie jak drzewo jeśli-to-jeszcze, ale jest bardziej zorganizowane i ładne. I nie martw się, kod został napisany przeze mnie i działa dobrze.

Główna sekcja

Z linii, która mówi main = do zaczęliśmy określać zachowanie XMonada. Spójrzmy na to spokojnie.

Na początek

Można to osiągnąć na wiele sposobów, ale aby pozostać bez zależności i uczynić kod czystszym, choć wyraźnie bardziej jaskiniowcem, zdecydowałem się na to:

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

Pierwsza linia uruchamia XMobar, którego plik konfiguracyjny zobaczymy później.
Potem zaczęliśmy kilka istotnych dla mnie rzeczy, ładną tapetę (taką samą jak na pierwszym zrzucie ekranu), demon, który sprawia, że ​​urxvt biegnie jak wiatr, demon mpd - który gra moją muzykę od początku i nigdy nie zamykam - i regulator głośności. Tak, to jest to. Składnia jest taka sama, jeśli chcesz rozpocząć to, czego potrzebujesz.

Końcowe korekty

Tutaj definiujemy kilka rzeczy, które zwykle są tylko osobistymi preferencjami. Na przykład lubię używać normalnie bezużytecznego klawisza Super (właściwie Windows) zamiast Alt, ale to moje preferencje. Jeśli chcesz wrócić do Super, usuń pierwszą linię.

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

Następnie definiujemy nasz terminal, urxvtc, bo tak nazywamy klienta demona, którego prowadziliśmy wcześniej. Inne rzeczy, takie jak lista obszarów roboczych, które moglibyśmy umieścić w takich rzeczach, jak:

, obszary robocze = [„H”, „O”, „L”, „A”], obszary robocze = [„A”, „R”, „C”, „H”, „L”, „I”, „N „,„ U ”,„ X ”], obszary robocze = [„ 1: internet ”,„ 2: muzyka ”,„ 3: nieużywane miejsce ”,„ 4: Ufff ”]

I inne rzeczy, na które pozwala nam przetwarzanie listy ciągów Haskella.
Grubość obramowania to po prostu liczba całkowita i jeśli chcemy zmienić kolor okna, na które skupia się funkcja nastrójKolor które właśnie stworzyliśmy, ponieważ zostawiamy zmienną w ten sposób:

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

Znak $ na linii xmonad ... jest to tylko zastosowanie odpowiednich funkcji asocjacyjnych, to znaczy, że zostawiamy kilka nawiasów. 😀

Skróty klawiszowe

Na końcu pliku mamy listę krotek, które zawierają pewne skróty, w tym przypadku uruchamiają GVim, pauzują lub odtwarzają muzykę i przyspieszają ją lub opóźniają. Otóż ​​to. Funkcja additionalKeys znajduje się w drugim module, który importujemy, a tylne akcenty sprawiają, że jest ona wykonywana w stylu funkcji div (/), takiej jak 1/2, a nie div 1 2, dzięki czemu jest łatwiejsza do odczytania. A więc to jest:

- ...} `additionalKeys` [((mod4Mask, xK_v), spawn" gvim "), ((mod4Mask, xK_c), spawn" mpc toggle "), ((mod4Mask, xK_a), spawn" mpc prev "), ((mod4Mask, xK_s), spawn „następny mpc”)]

Plik .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, Data uruchomienia "% a% b% d" "date" 36000, Data uruchomienia "% H:% M" "time" 10, Uruchom StdinReader], sepChar = "'", alignSep = "} {" , template = "'nazwa użytkownika' @ 'nazwa hosta'} {'mpd' | 'data' - 'godzina'"

To powinno działać i faktycznie działa. Składnia jest nieco bardziej złożona i najlepiej jest przeanalizować ją samodzielnie, aby ją zrozumieć. Ograniczę się więc do tego, aby powiedzieć, że opisujemy polecenia, ich opcje i dodatkowe ustawienia, które zostaną pokazane w XMobar.
Linia szablonu zawiera całą akcję i wymyśliłem sztuczkę, aby pokazać piosenkę, której słucham. Ta sztuczka i ta, która zmienia utwór na skróty klawiaturowe, wymagają mpc, klienta mpd wykonywalnego z terminala.

Wnioski

Myślę, że to wszystko. Przejrzeliśmy już główny plik XMonad i zaczęliśmy uczyć się Haskella, czy nam się to podoba, czy nie. Jeśli chcesz kontynuować, na początek znajdziesz bardzo dobry przewodnik.
W następnej części omówimy nieprogramowalne menedżery, w szczególności Spectrwm / Scrotwm. Do zobaczenia.


Treść artykułu jest zgodna z naszymi zasadami etyka redakcyjna. Aby zgłosić błąd, kliknij tutaj.

22 komentarzy, zostaw swoje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   iwanownegro powiedział

    !Fantastyczny!

    Spectrwm następnym razem? !Tak jest!

  2.   TheSandman86 powiedział

    Bardzo dobry przewodnik, wygląda bardzo interesująco, chcę rzucić okiem, chociaż czuję się bardziej niż komfortowo z moim Openboxem.

  3.   anty powiedział

    Ups, przegapiłem określenie, gdzie trafiają te pliki, ale kiedy edytuję post, wysyła mi komunikat o błędzie:
    Błąd krytyczny: wywołanie niezdefiniowanej funkcji get_header () w /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php on line
    Jeśli ktoś może go edytować, postępuje tak:

    Główny plik konfiguracyjny: ~ / .xmonad / xmonad.hs
    Plik Xmobarrc: ~ / .xmobarrc
    Plik konfiguracyjny konsoli: ~ / .Xdefaults
    ????

    1.    anty powiedział

      Nie mogę edytować własnych postów. Nie mogę też znaleźć tej opcji na pulpicie. Mam kilka błędów, to wszystko, minimalne poprawki.

  4.   Nano powiedział

    Cóż, uważam to za bardzo interesujące, ponieważ jest bardziej produktywne, jeśli chodzi o programowanie. Chcę zadzierać z Awesome, ponieważ naprawdę chcę się nauczyć LUA.

    Istnieje dla tych z nas, którzy programują w Pythonie Qtile, ale prawda jest taka, że ​​nie mogę go uruchomić, używam Ubuntu i zainstalowałem go przez PPA, a także ze źródeł, ale niefortunna rzecz nie chce działać xD

    W każdym razie LUA to coś, czego MUSZĘ się nauczyć i nie ma nic lepszego niż oglądanie siebie nawzajem na tego typu płytkach.

    Tak trzymaj, jesteś na najlepszej drodze do zostania autorem w DesdeLinux

    1.    Nano powiedział

      I tak, jestem na studiach iw tym gównie nie mają Linuksa xD

      1.    anty powiedział

        Dzięki nano. Ale czy możesz mi pomóc w edycji artykułów po ich opublikowaniu? Nie mogę.

        1.    nano powiedział

          Tak, uspokój się, zostaw je tak, jak pasują lepiej niż je naprawiam

  5.   Xykyz powiedział

    Dzięki anty, na pewno spróbuję XMonad. Widzę, że używa podstawowych rzeczy Haskella bez potrzeby dużej złożoności, jak strażnicy, operator aplikacji i oczywiście użycie list (w przeciwnym razie nie byłby to Haskell xD).

    Zobaczmy, jak to wygląda! 🙂

  6.   Fernando powiedział

    Używam menedżera okien kafelkowych od dłuższego czasu, niesamowicie. Kiedy będę miał czas, zrobię samouczek, w którym mam nadzieję, że będę mógł wyjaśnić cały proces, od instalacji niesamowitego do skonfigurowania zestawu lekkich programów i stworzenia własnego motywu.

    Jeśli wydaje Ci się to dobre, mogę Cię powiadomić, kiedy będę miał, i opublikuj go tutaj.

    Przy okazji i za twoją zgodą robię trochę reklamy na mojej małej stronie, jeśli chcesz, możesz rzucić okiem, jeśli jesteś zainteresowany jakąkolwiek publikacją:

    http://niferniware.sytes.net

    Pozdrowienia!

    1.    msx powiedział

      Jeśli to Awesome 3, zdecydowanie mnie to interesuje.

  7.   Fernando powiedział

    Jeden szczegół, sekcja sieci, w której hostowałem bloga, to:
    http://niferniware.sytes.net/blog/

    Przepraszam za pomyłkę.

    Okrzyki!

    1.    elav powiedział

      Bardzo podobał mi się twój blog… ^^

      1.    Fernando powiedział

        Bardzo dziękujemy Elav, jesteśmy w kontakcie!

        Prawda jest taka, że ​​w pewien sposób DesdeLinux skłonił mnie do stworzenia własnego bloga. Tak długi czas używania Linuksa sprawia, że ​​rozważa się wniesienie czegoś w zamian ^^

        Pozdrowienia!

  8.   msx powiedział

    „Jeśli zastanawiasz się, dlaczego wybrałem te cztery litery na moje biurka, przypomniałem sobie cztery nukleinowe zasady DNA”.
    Super, +1

    1.    anty powiedział

      Cóż, naprawdę podoba mi się pomysł umieszczenia DNA na moim biurku.

  9.   halonsow powiedział

    Świetny przewodnik, dzięki niej właśnie próbuję xmonad i mogę tylko powiedzieć o nim jedno, zakochałem się w xmonad, nadal nie kładę na nim ręki i nadal wydaje się znakomity, bardzo dziękuję

    1.    msx powiedział

      Świetnie, mamy nadzieję, że Twój postęp zmieni się w post! =)

  10.   Victor Salmeron powiedział

    Mała uwaga dla nauczyciela, w tej chwili używam stabilnego Debiana (Squeeze) i aby zainstalować dmenu, nie robi się tego za pomocą aptitude install dmenu, ale z pakietem suckless-tools, w przeciwnym razie doskonały samouczek

    1.    anty powiedział

      Ta sama umiejętność rozwiązuje problem. Ponadto kolejność jest lepiej rozumiana w ten sposób.

  11.   tarantonia powiedział

    Ten przewodnik zakłada, że ​​masz zainstalowane x.
    W moim przypadku zaczynam od konsoli Debiana, z którą musiałem zainstalować xorg. Byłoby dobrze, ponieważ to, czego szukamy, to minimalistyczne środowisko, zaczynając od debiana bez środowisk graficznych, instalując xmonad w trybie prostym i dodając narzędzia i programy konsolowe, takie jak mutt, irssi itp.

    1.    anty powiedział

      Tak, znaki X były już włączone. Sam post wyjaśnia, że ​​zacząłem od minimalnego Debiana już stworzonego z Openbox.