Xmonad server mód beállítása

Xmonad
Xmonad

Xmonad server mód beállítása. Bár nem tér el sokban egy egyszerű modul beüzemelésétől, de érdemes pár dologra odafigyelni. Mi is az a server mód? Nagyon egyszerűen fogalmazva, ha ez működik, akkor terminálból, vagy egyéb külső programból vezérelni lehet a Xmonad-ot. Így a legelterjedtebb felhasználást említve: a sxhkd billentyűkombinációkban.

Mielőtt az Xmonad server módot felrakod, gondold át, hogy kell-e ez neked. Ha sem szkriptben, sem pedig egyéb programból nem akarod elérni így az Xmonad rendszerét, akkor felesleges a server mód.

Alapismeretek kellenek!

Igen, az Xmonad konfigurálása összetett folyamat. Egyrészt ismerni kell azt, amit éppen installálsz. másrészt pedig a precíz, pontos munka elvárt. Illetve ismerni kell a saját ~/.xmonad/xmonad.hs állományod felépítését, mert eltérő lehet. A moduláris felépítés miatt egyes elemeket, kötéseket, funkciókat más-más formában helyezi el a konfigurációs állomány készítője, vagy akár te, és így nem minden esetben olyan könnyű követni a leírást.

Ha nem akarsz, nem tudsz ezzel foglalkozni, de kell egy Xmonad a server mód modullal, akkor használd a MagyArch konfigurációs fájljait, vagy ami még jobb, telepítsd és akkor nem kell semmit állogatni.

Az első lépés:

Lementjük biztos helyre a régi ~/.xmonad/xmonad.hs fájlt. Ez az alap beállítási fájl, amit ha visszateszel, és újra fordítod az Xmonad-ot, akkor visszaáll az eddigi állapot.

Xmonad server mód alap fájl elkészítése

Kell egy plusz fájlt készíteni, aminek két útja van. Az egyik a gyorsabb, és egyszerűbb. Felmész a MagyArch(xmonad) github oldalára és leszeded a kész fájlt. A neve xmonadctl.hs, és a ~/.xmonad könyvtárba kerül és futtathatóvá tesszük.

A másik sem bonyolult. A Xmonad server mód modul oldalán lévő lépéseket követed:

Készítesz egy üres fájlt. A neve xmonadctl.hs, és a ~/.xmonad könyvtárba kerül és futtathatóvá tesszük. Majd a fenti linken a modul leírásának elején lévő hosszabb kódrészletet belemásolod, és lemented.

Modul import:

import XMonad.Hooks.ServerMode

A ~/.xmonad/xmonad.hs elején a többi import közé kerül. Ahogy bármelyik egyéb modul is. Ha most látod először a ~/.xmonad/xmonad.hs fájlt, akkor is megtalálod.

Kell három olyan bejegyzés, aminek a helye már nem ennyire egyértelmű.

Keress egy olyan bejegyzést a ~/.xmonad/xmonad.hs állományban, hogy

main =

{

, handleEventHook =

}

Ha megtaláltad, akkor lehet, hogy ott lesz egy, vagy több név az egyenlőség mögött. Azokat ments le magadnak mert kellenek még.

Majd változtasd meg ilyenre:

main =

{

, handleEventHook = myEventHook

}

A többi sort, ami a {} közt van még, ne bántsd! Nekünk csak ez az egy sor a lényeg.

Majd a main blokk elé valahova beillesszük:

myEventHook = serverModeEventHook <+> serverModeEventHookCmd <+> serverModeEventHookF "XMONAD_PRINT" (io . putStrLn)

és a végére a kimentett bejegyzéseket is odaillesszük. Például nekem:

myEventHook = serverModeEventHook <+> serverModeEventHookCmd <+> serverModeEventHookF „XMONAD_PRINT” (io . putStrLn) <+> docksEventHook

Mit tettünk? A main, a fő bejegyzésben tárolunk sok olyan funkciót, azok módját, ami kell a Xmonad-nak. Ha egy funkciót, modult berakunk, akkor azt egyrészt importálni kell. Amit meg is tettünk. Majd meg kell mondani az Xmonad-nak, hogy az alap beállítást egy (vagy több) lehetőséggel bővítenénk.

A , handleEventHook = handleEventHook def <+> docksEventHook lefordítva emberi nyelvre nem más, mint megmondjuk a rendszernek, hogy kezelje az eseményeket az alap módon, és tegye hozzá a docksEventHook-ban meghatározott szabályokat is. Maga a felépítés nem is olyan bonyolult, ha ezt így értelmezed.

Ezt megtehetjük a main részben is, ahol a megfelelő sort bővítjük, azaz mögé írjuk az új bejegyzéseket.

Ez addig kényelmes, jó amíg pár van az adott kategóriában.

A másik út, ha megmondjuk az Xmonad-nak, hogy handleEventHook = myEventHook, azaz az eseményeket kezelő horgok, kötéseket a myEventHook-ban keresse. Majd a myEventHook-ban felsoroljuk azokat. Olyan, mint egy változó: definiálunk egy hosszú dolgot, majd arra egyszerű karakterlánccal hivatkozunk. Sokkal átláthatóbb a main rész, ha a hosszabb egységeket kiemeljük és azt egy külön sorban adjuk meg, mint egy saját változót. Illetve így kevesebb a hiablehetőség. A handleEventHook egyszerű felsorolás a jelen esetben, de a , keys = myKeys bejegyzést már feltétlen meg kell tenni, hiszen a myKeys-ben több, kevesebb – én közel hatvan – sort használunk. Aminél a behúzások fontosak, és ha több sublist-et is használ az ember, akkor ott lehet hiba.

A Xmonad server mód modul oldalán lévő lépéseket mi egyszerre tettük meg. A

main = xmonad def { handleEventHook = serverModeEventHook }

main = xmonad def { handleEventHook = serverModeEventHookCmd }

main = xmonad def { handleEventHook = serverModeEventHookF „XMONAD_PRINT” (io . PutStrLn) }

három sor kezdetben kicsit megtévesztő, de most már tudjuk, hogy nem csak simán bemásoljuk, hanem értelmezzük is a leírtakat. Ami lefordítva annyi: add hozzá az handleEventHook-ot kezelő sorhoz az adott karaktersorozatot. Ott, és úgy, ahogy az nálad kell. A leírások abból indulnak ki, hogy értesz hozzá, és az alap, változatlan konfigurációból indulnak ki, az ahhoz kellő változtatásokat írják le.

Ha mindent precízen megtettünk, már csak pár lépés van a Xmonad server mód aktiválásához.

A ~/.xmonad könyvtárba belépünk. Majd lefuttatjuk ezt:

ghc -dynamic ./xmonadctl.hs

Igen, ez más mint amit a modul oldalán látsz. Ez a helyes.

Lefut, vélhetően hiba nélkül. Ezután már a szokott módszerrel:

xmonad --recompile

xmonad --restart

Ha mindent jól tettünk, akkor ez is hiba nélkül lefut.

Ha eddig nem tetted volna meg a ~/.xmonad könyvtárat tedd bele a PATH-ba! Ez azért fontos, mert egyébként az xmonadctl parancsokhoz a teljes elérési utat meg kellene adni, ami nem túl kényelmes.

Majd futtass egy tesztet:

xmonadctl 0

és a ~/.xsession-errors fájlba nézz bele. ahol a parancslistát megkapod:

1 – view”1″

2 – shift”1″

3 – view”2″

..…

Ha ezt a részt kimásolod magadnak, akkor nem kell a xmonadctl-hoz a kapcsolókat szövegesen megadni, elég ha a számukat beírod. Azaz xmonadctl view”1″ helyett xmonadctl 1 beírásával éred el ugyanazt.

A terminálban újabb teszt:

xmonadctl kill

Ha a terminál bezárul, már működik is.

Jó Xmonad server mód használatot.

Érdemes – mielőtt nekiállsz – ezt a videót is megnézni!

Related Posts