Zdá se, že jsem se hodně modlil a je to tak, že do dnešního dne nedávám milimetr nastavení. Jak jsem sliboval chvíli dnes roztrhnu své xmonad.hs, které jsem připravil speciálně pro tuto příležitost. Tento a další konfigurační soubory jsou konkrétně v Paste barvy konzoly, nastavení okna y horní lišta.
Můžete si je odtud stáhnout a otevřít ve svém oblíbeném textovém editoru.
Před
V případě, že vás zajímalo, můj desktop byl malý Openbox ve stabilní verzi Debianu. V tuto chvíli přeskočíte instalační proces distribuce, měli byste ověřit, zda jsou potřebné balíčky v úložištích. Udělejme to (pamatuji si, že používám Debian):
sudo aptitude install ghc xmonad xmobar gmrun dmenu
A připraven. Právě jsme nainstalovali, v pořadí vzhledu; kompilátor Glasgow Haskell, který má na starosti kompilaci a interpretaci Haskella; XMonad, správce oken, XMobar je lišta, která poskytuje informace o systému a některých spouštěcích programech, dmenu a gmrun; které již přijdou nakonfigurované tak, aby je XMonad spouštěl pomocí Mod + P a Mod + Shift + P.
A takto vypadal můj desktop. Řekl jsem to tak, že máme bod srovnání a napodobujeme některé věci, které jsem již nakonfiguroval v minimalističtějším prostředí.
Ale překvapení. XMonad nás takto vítá. V zachycení jsem již otevřel gmrun, takže je vidět, že to není rozbité:
A chceme, aby to vypadalo takto, již nakonfigurované a všechno:
Snímek obrazovky ukazuje terminál se spuštěným ncmpcpp, klientem MPD pro terminál; a relace GVim, obě s barvami palety Solarizované světlo. Získat to nebylo opravdu těžké a dokonce i Vim a urxvt už byli připraveni na můj systém.
Xmonad.hs, jak děsivé!
Vůbec ne. Konfigurace, kterou se chystáte vidět, je extrémně jednoduchá a základní. Mělo by fungovat na všech systémech s XMonad 0.9.1, přestože je již k dispozici 0.10. No bojte se, velmi se bojte:
- Konfigurace Xmonad - Jak vidíte, je to docela jednoduchý import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A", "C", "G", "T"] main = do xmproc <- spawnPipe "xmobar" spawn "dusík - obnovit" 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), založit "gvim"), ((mod4Mask, xK_c), založit "mpc toggle"), ((mod4Mask, xK_a) , spawn "mpc prev"), ((mod4Mask, xK_s), spawn "mpc next")] - Konec konfigurace. Jednoduché, snadné a čisté.
Co se tady stalo?
Pokud se již ze strachu vzpamatovali, vidíme, že naše konfigurace sotva dosáhne 30 řádků kódu. Po částech vám vysvětlím, proč pokud jste to zkopírovali a vložili, XMonad zkompiluje program, který jsme právě napsali. Připraven?
Sekce závislostí
Blízko začátku souboru jsou tři řádky, které začínají klíčovým slovem import. Stejně jako v jiných programovacích jazycích odešle kompilátor, aby našel požadovaný modul, a poskytne mu funkce šťastného modulu. Uvidíme to znovu:
import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run
Náš program používá tři závislosti. První nám přináší vlastní funkce XMonadu, druhý a třetí nám pomůže později definovat klávesové zkratky a spouštět programy. Pojďme dál.
Proměnné
Ta věc je vlnit a k čemu to je? Oceňme kód blíže:
wrk = ["A", "C", "G", "T"]
vlnit je proměnná, která odpovídá seznamu čtyř prvků, všech řetězců; protože seznamy Haskell přijímají pouze jeden typ položky. Pokud se divíte, proč jsem si vybral ty čtyři písmena pro své pracovní plochy, vzpomněl jsem si na čtyři nukleové báze DNA.
Název je pouze zkratka a mohli bychom jej dát myWorkspaces, pepitoRojo nebo cokoli jiného, pokud to začíná malým písmenem a my ho specifikujeme v další části.
Zde začíná dobrá věc, že máme k dispozici kompletní programovací jazyk, protože jsme mohli definovat barvu okna z proměnné:
windowColor = "#FFFFFF"
Nebo dokonce vytvořte funkci, která vrací barvu s ohledem na naši náladu:
moodColor m | m == "Smutné" = "# b0c4f6" - Něco jako modrá | m == "Angry" = "# ba3f3f" - Něco jako červená | m == "Happy" = "# 8bff7e" - Něco jako zelená | jinak = "#FFFFFF" - bílá, pro neutrální dny
A mnohem víc. Už cítíte sílu na prstech? Jedna věc. Pokud nerozumíte tomu, co se stalo, pomyslete si, že se jedná o Haskellovu vlastní strukturu, kterou nazýváme uloží a je to v podstatě jako strom if-then-else, ale organizovanější a hezčí. A nebojte se, kód jsem napsal já a funguje dobře.
Hlavní část
Z řádku, který říká main = dělat začali jsme specifikovat chování XMonadu. Uvidíme to klidně.
Na začátku vykopněte věci
Toho lze dosáhnout mnoha způsoby, ale abych se vyhnul závislostem a vylepšil kód, i když zjevně jaskynnější, rozhodl jsem se pro toto:
xmproc <- spawnPipe "xmobar" spawn "dusík - obnovit" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"
První řádek začíná XMobar, jehož konfigurační soubor uvidíme později.
Pak jsme pro mě spustili několik podstatných věcí, pěknou tapetu (stejnou jako na prvním snímku obrazovky), démona, který nutí urxvt běžet jako vítr, démona mpd - který hraje moji hudbu od začátku a nikdy se nezavřu - a ovládání hlasitosti. Jo, to je ono. Syntaxe je stejná, pokud chcete začít, co potřebujete.
Konečné úpravy
Zde definujeme některé věci, které jsou obvykle jen osobní preference. Například bych rád použil normálně zbytečný klíč Super (efektivně ten Windows) místo Alt, ale to je moje preference. Pokud se chcete vrátit zpět na Super, odeberte první řádek.
- ... xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3", focusBorderColor = "# 002b26", workspaces = wrk} - ...
Pak definujeme náš terminál, urxvtc, protože tomu říkáme klient démona, kterého jsme dříve utíkali. Další věci, například seznam pracovních prostorů, které jsme mohli dát do věcí jako:
, workspaces = ["H", "O", "L", "A"], workspaces = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], workspaces = [" 1: web "," 2: hudba "," 3: nevyužitý prostor "," 4: Ufff "]
A další věci, které nám umožňuje Haskellovo zpracování seznamu řetězců.
Tloušťka ohraničení je jen celé číslo a pokud chceme změnit barvu okna, zaměřenou funkcí nálada Barva kterou jsme právě vytvořili, protože proměnnou necháme takto:
--..., focusBorderColor = moodColor "Happy" - ...
$ Na řádku xmonad ... Je to jen aplikace pravo-asociativních funkcí, to znamená, že ušetříme nějaké závorky.
Klávesové zkratky
Na konci souboru máme seznam n-tic, které obsahují některé zkratky, v tomto případě spustí GVim, pozastaví nebo přehraje hudbu a posune ji nebo zpozdí. A je to. Funkce additionalKeys přichází ve druhém modulu, který importujeme, a zadní akcenty umožňují jeho provedení ve stylu funkce div (/) jako 1/2 a ne div 1 2, což usnadňuje čtení. Takže to je:
- ...} `additionalKeys` [((mod4Mask, xK_v), založit„ gvim “), ((mod4Mask, xK_c), založit„ mpc toggle “), ((mod4Mask, xK_a), založit„ mpc předchozí “), ((mod4Mask, xK_s), spawn "mpc next")]
Soubor .xmobarrc
Konfigurace {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", pozice = na začátek , lowerOnStart = False, commands = [Run Com "echo" ["$ USER"] "uživatelské jméno" 864000, Run Com "hostname" ["-s"] "hostname" 864000, Run Com "mpc current" [""] "mpd" 10, datum spuštění "% a% b% d" "datum" 36000, datum spuštění "% H:% M" "čas" 10, spuštění StdinReader], sepChar = "'", alignSep = "} {" , template = "'username' @ 'hostname'} {'mpd' | 'date' - 'time'"
To by mělo fungovat a ve skutečnosti to funguje. Syntaxe je trochu složitější a je nejlepší ji analyzovat sami, abyste jí porozuměli. Takže se omezím jen na to, abych vám řekl, že popisujeme příkazy, jejich možnosti a některá další nastavení, která se zobrazí v XMobar.
Řádek šablony má veškerou akci a já jsem vymyslel trik, jak zobrazit skladbu, kterou poslouchám. Tento trik a ten, který mění skladbu pomocí klávesových zkratek, vyžaduje mpc, spustitelný klient mpd z terminálu.
Závěry
To je vše, myslím. Už jsme zkontrolovali hlavní soubor XMonad a začali jsme se učit Haskell, ať se nám to líbí nebo ne. Pokud chcete pokračovat, začněte velmi dobrým průvodcem.
V dalším pokračování prozkoumáme neprogramovatelné manažery, konkrétně Spectrwm / Scrotwm. Uvidíme se.