Hlavní navigace

Dlaždice trochu jinak: panely Dzen2, Trayer a Stalonetray

11. 9. 2014
Doba čtení: 10 minut

Sdílet

Pracovní prostředí nemusí být navzdory zažitému standardu tvořeno jen plovoucími okny. Dá se pracovat i s rozložením dlaždic, které je mnohem starší než okýnka. V dalším dílu o WM XMonad se zaměříme hlavně na možnosti instalace a nastavení stavového panelu Dzen2 a systémového panelu Trayer, popř. Stalonetray.

Minulý díl jsme zakončili popisem konfiguračních souborů pro XMonad a XMobar. Nová konfigurace zajistí zobrazení virtuálních ploch v systémovém panelu a možnost mezi nimi přepínat a přenášet vybraná okna aplikací mezi plochami. Jak vypadá prostředí WM po změnách a restartu, je vidět na prvním obrázku první galerie.

V levém dolním rohu se objevily čtyři definované plochy a za nimi „nečekaný“ text – ve výchozím stavu je to Tall. O co se to tady vlastně jedná? Je to název způsobu zobrazení oken na ploše. Aby to bylo ještě o něco jasnější, uvedu zde tři základní způsoby, které XMonad používá:

  • Tall – zobrazení s jedním „master“ a jedním „slave“ panelem, kde master je v levé části obrazovky. Okna aplikací v panelu slave se pak organizují jako řádky
  • Full – zobrazení aktivního okna na celou plochu obrazovky, vlastně tedy jeho maximalizace. Ostatní okna jsou pod tím aktivním
  • Mirror Tall – podobný Tall s tím rozdílem, že master panel je nahoře a ostatní okna dole se organizují jako sloupce

Pak je ještě jedna varianta, která se ale v panelu neobjevuje – SimpleFloat. Jedná se vlastně o pseudo-layout, který se používá pro vybrané aplikace s více okny, jako je např. Gimp nebo MPlayer. Tato varianta se musí extra nastavit v konfiguračním souboru, jak bylo uvedeno již v předchozích příkladech. Více informací je možné najít třeba na www.nepherte.be.

Pro lepší přehled jsem připravil dalších sedm obrázků v první galerii, kde se ukazuje postupné otevření čtyř aplikací – Sakura, Leafpad, XArchiver a XTerm ve výchozím layoutu Tall. Pak následuje přepnutí do Full (vždy kombinace Win+Mezerník) a konečně do Mirror Tall. V tomto momentě je otevřeno další okno – aplikace LXrandr. Pro výběr/aktivaci mezi zobrazenými okna není nutné žádné klikání, stačí pouze přesun myši nad vybrané okno aplikace. Také si všimněte, že pokud je nějaké okno otevřené, objevuje se ve stavovém panelu jeho titulek.

Tímto bychom asi mohli uzavřít kapitolu o stavovém panelu a posunout se o kousek dál. Máme sice už systémový panel poměrně slušně nastavený, ale pořád nám něco chybí. To něco je systémová oblast, kde by se zobrazovaly ikony aplikací, jako je např. již dříve uvedený správce schránky Parcellite. Proto si ukážeme, jak tuto funkcionalitu zprovoznit a nastavit. Pokud se trochu více poohlédneme po dokumentaci a webových stránkách o XMonad, dostaneme nejčastěji tyto varianty řešení: Trayer, Stalonetray a Conky. Já jsem pro ukázku vybral Stalonetray ze dvou důvodů:

  • Conky se trochu překrývá ve funkčnosti s XMobar a navíc bych si ho více dovedl představit v plošném zobrazení, než v panelu
  • Trayer chce instalovat celkem cca 69,5 MB oproti 213 kB u Stalonetray

Něco více o Stalonetray včetně podrobného popisu konfigurace je možné najít na stalonetray.sourceforge.net.

Pro instalaci, nastavení a spuštění musíme provést tyto kroky:

  1. instalovat aplikace příkazem # ~$ sudo aptitude install stalonetray parcellite
  2. vytvořit a naplnit příslušný konfigurační soubor (velmi jednoduchá konfigurace jenom na ukázku):
    mkdir /home/user/.config/stalonetray/
    touch /home/user/.config/stalonetray/stalonetrayrc
  3. změnit konfiguraci XMonad na dvou místech, všechno ostatní zůstává beze změny, nemění se ani konfigurace XMobar
   import XMonad.Util.Run(spawnPipe,unsafeSpawn)

   main = do
   xmproc <- spawnPipe "xmobar"
   unsafeSpawn " if [ -x /usr/bin/stalonetray ] ; then stalonetray & fi"
   unsafeSpawn " if [ -x /usr/bin/parcellite ] ; then parcellite & fi"
   xmonad $ defaultConfig

Po provedení všech uvedených kroků uděláme kontrolu správnosti konfigurace, ukončíme a znovu spustíme WM a výsledek našeho snažení uvidíme na prvním obrázku druhé galerie. Panel Stalonetray by samozřejmě mohl vypadat i jinak, ale jedná se pouze o ukázku možností.

Nyní už máme vzhled prostředí celkem úplný a konfigurovaný, takže se můžeme pustit do dalšího zkoušení a hledání jiných možností. Již jsem dříve v textu zmínil, že pro XMonad existuje ještě jeden panel, a to Dzen. Informace o něm lze najít na github.com/robm/dzen nebo https://github.com/robm/dzen/wiki.

Autoři uvádí, že se jedná o všeobecně použitelnou aplikaci pro zobrazení zpráv, upozornění a menu v systémech s X11. Zde jsou některé důležité vlastnosti:

  • jedná se o malou a rychlou aplikaci s minimem závislostí
  • je možné použít skripty prakticky v libovolném jazyce
  • vyspělé možnosti formátování včetně barev, ikon a grafických prvků
  • univerzální aplikace pro zobrazení informací všeho druhu
  • možnosti interaktivních myších i klávesových akcí
  • je možné přidat podporu pro XFT
  • je možné přidat podporu pro XINERAMA

Podle údajů na webu je poslední aktualizace cca rok stará, ale to u podobných aplikací není nic zásadně škodlivého. Je možné samozřejmě stáhnout a instalovat balíček z webu aplikace. My ale použijeme jednodušší možnost: instalujeme přímo z Debianu příkazem

# ~$ sudo aptitude install dzen2

Než se pustíme do konfigurace XMonad za účelem automatického spuštění Dzen při startu WM, vyzkoušíme ho samotný spuštěním z terminálu. Jak se za chvíli ukáže, bude to mít svůj zásadní smysl… Jak se můžeme dočíst na uvedených stránkách, je možné (a vlastně i nutné), Dzen při spuštění nějak konfigurovat. Pro ukázku zvolíme velmi jednoduchou konfiguraci, kde bude nastavená startovací pozice panelu, jeho výška a šířka, zarovnání případných prvků, barva pozadí a textu. Celkově vypadá příkaz následovně:

# ~$ dzen2 -x '30' -y '100' -h '50' -w '900' -ta -'c' -fg 'blue' -bg 'yellow'

Výsledek spuštění je na druhém obrázku v galerii. Jak sami vidíte, je na obrazovce krásný žlutý panel, ale vidět na něm není vůbec nic. A jsme u hlavního zádrhelu panelu Dzen – on sám o sobě vůbec nic, ale pranic neukazuje a nezobrazuje. Všechno, co chceme vidět a zobrazit, mu musíme nějak vnutit. To je možné několika způsoby. Už dříve bylo uvedeno, že se k němu dají „přidělat“ skripty v různých jazycích. To je samozřejmě velmi zajímavé, ale přece jenom trochu pracné řešení. A je to také samozřejmě daň za jeho uváděnou všeobecnost. My si ukážeme jenom tři jednoduché možnosti, jak alespoň něco zobrazit. Na netu se dá najít mnohem více věcí, včetně hotových skriptů v bashi i jiných jazycích.
Pokud se vrátím znovu ke stránkám projektu, tak je možné si všimnout, že součástí instalace jsou tzv. gadgets. Po instalaci balíčku je jich v Debianu k dispozici několik a my si ukážeme jeden z nich, konkrétně dzen2-gcpubar. Také si ukážeme, jaký je princip zobrazení informací v panelu. Vytvoříme proto příkaz, který vypadá nějak takto:

# ~$ dzen2-gcpubar -i 10 -w 50 -h 20 | dzen2 -x '30' -y '100' -h '50' -w '900' -ta -'c' -fg 'blue' -bg 'yellow'

Po jeho spuštění vypadá panel jako na třetím obrázku galerie. Plocha pro zobrazení zátěže procesoru je sice viditelná, ale vzhledem k tomu, že je zatížení nulové, vlastně také není nic vidět. Jako další si ukážeme schopnost panelu přijímat zprávy a upozornění velmi jednoduchým příkazem:

# ~$ echo -e "Pokusný text" | dzen2 -x '30' -y '100' -h '50' -w '900' -ta -'c' -fg 'blue' -bg 'yellow'

Pokud tento příkaz spustíme, tak panel pouze problikne, ale nic se nezobrazí. Aby byl text vidět, musíme upravit příkaz takto:

# ~$ echo -e "Pokusný text" | dzen2 -x '30' -y '100' -h '50' -w '900' -ta -'c' -fg 'blue' -bg 'yellow' -p

Pak už je situace lepší a panel i příslušný text jsou viditelné – viz čtvrtý obrázek galerie. Jako poslední si ukážeme zobrazení systémové informace o dostupné RAM. K tomu použijeme následující příkaz:

# ~$ cat /proc/meminfo | grep MemTotal | dzen2 -x '30' -y '100' -h '50' -w '900' -ta -'c' -fg 'blue' -bg 'yellow' -p

Nyní je výsledek zase trochu jiný – viz pátý obrázek galerie. Jako poslední ukázku ohledně panelu Dzen zkusíme změnit konfiguraci XMonad tak, aby došlo k zobrazení panelu při startu WM. Možností implementace panelu Dzen do XMonad je více, viz např. (první odkaz do konfigurace zahrnuje i aplikaci Conky, které se zatím nebudeme věnovat): ThinkGeek.com nebo www.nepherte.be.

My ale použijeme velmi jednoduchý způsob: ve stávajícím konfiguračním souboru jenom zaměníme odkazy na XMobar těmi na Dzen a přidáme příkaz pro oddělení zobrazených ploch mezerou. Nová konfigurace pak vypadá takto:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe,unsafeSpawn)
import XMonad.Util.EZConfig(additionalKeys)
import XMonad.Actions.CycleWS
import qualified XMonad.StackSet as W
import System.IO

myManageHook = composeAll
    [ className =? "Gimp"       -->doFloat ]

main = do
xmproc <- spawnPipe "dzen2 -x '150' -y '0' -h '25' -w '1250' -ta 'l' -fg 'green' -bg 'black'"
unsafeSpawn " if [ -x /usr/bin/stalonetray ] ; then stalonetray & fi"
unsafeSpawn " if [ -x /usr/bin/parcellite ] ; then parcellite & fi"
xmonad $ defaultConfig
  { manageHook = manageDocks <+> myManageHook <+> manageHook defaultConfig
  , layoutHook = avoidStruts $ layoutHook defaultConfig
  , logHook = dynamicLogWithPP dzenPP
        { ppOutput = hPutStrLn xmproc
        , ppCurrent = dzenColor "yellow" "" . wrap "[" "]"
        , ppHiddenNoWindows = dzenColor "grey" ""
        , ppTitle = dzenColor "green" "" . shorten 40
        , ppVisible = wrap "(" ")"
        , ppUrgent = dzenColor "red" "yellow"
        , ppWsSep = " "
        }
  , borderWidth         = 2
  , terminal            = "sakura"
  , normalBorderColor   = "#cccccc"
  , focusedBorderColor  = "#cd8b00"
  , modMask             = mod4Mask
  , workspaces          = ["1","2","3","4"]
} `additionalKeys`
  [ ((mod4Mask, xK_Right), nextWS)
  , ((mod4Mask, xK_Left), prevWS)
  , ((mod4Mask .|. shiftMask, xK_Right), shiftToNext >> nextWS)
  , ((mod4Mask .|. shiftMask, xK_Left), shiftToPrev >> prevWS)
  , ((mod4Mask, xK_F1), windows $ W.greedyView "1")
  , ((mod4Mask, xK_F2), windows $ W.greedyView "2")
  , ((mod4Mask, xK_F3), windows $ W.greedyView "3")
  , ((mod4Mask, xK_F4), windows $ W.greedyView "4")
  , ((mod4Mask .|. shiftMask, xK_F1), windows $ W.shift "1")
  , ((mod4Mask .|. shiftMask, xK_F2), windows $ W.shift "2")
  , ((mod4Mask .|. shiftMask, xK_F3), windows $ W.shift "3")
  , ((mod4Mask .|. shiftMask, xK_F4), windows $ W.shift "4")
  ]

Jak vypadá prostředí po restartu, vidíme na posledním obrázku druhé galerie. Jak je z něj patrné, jedinou viditelnou položkou jsou virtuální plochy, aktuální layout a název aktivního okna. Pokud byste ale nechali celkovou konfiguraci úplně stejnou, je problém v tom, že panel překrývají otevřená okna aplikací. Je proto nutné využít již zobrazeného Stalonetray, změnit jeho umístění na vodorovné, a pak je vše v pořádku.
Závěrem bych řekl, že Dzen je určitě zajímavá aplikace, ale v porovnání s XMobar je mnohem složitější ji konfigurovat tak, aby plnila stejnou funkci v podobném rozsahu. Kdo se ale chce konfiguraci Dzen věnovat, určitě najde spoustu informací na netu a může si vše dotáhnout do zdárného konce a prostředí si ještě více přizpůsobit. Pro běžného uživatele ale považuji XMobar za mnohem vhodnější a jednodušší řešení.
V popisu nastavení a možností XMonad bychom mohli pokračovat ještě velmi dlouho, ale všechno důležité jsme snad probrali a dali tak představu potenciálním zájemcům. Proto nezbývá, než se pustit do samotného závěru a podobně jako u Subtle shrnout výhody a nevýhody XMonad. Za výhody bych určitě považoval následující vlastnosti:

CS24_early

  • velmi solidní základ v programovacím jazyce Haskell
  • obrovské možnosti pro konfiguraci a uživatelské nastavení, stačí se podívat na přehled balíčků
  • dynamický styl správy oken, mnohem lepší a přehlednější než v Subtle
  • při chybné konfiguraci funguje ta předchozí, správná
  • rozsáhlý systém chybových hlášení při problémech s konfigurací

Nevýhody, pro které se XMonad nestal mou první volbou, jsou tyto:

  • Haskell je sice určitě mocný a solidní jazyk, kdo se v něm ale pořádně nevyzná, má docela problém s konfigurací
  • celé prostředí je poměrně rozsáhlé, zabere cca 560 MB na disku
  • není k dispozici výchozí stavový a systémový panel
  • stavové panely se musí konfigurovat zvlášť, Dzen toho v základu opravdu moc neumí
  • ani jeden stavový panel není „aktivní“ ve smyslu myších akcí
  • systémové panely se musí opět spouštět a konfigurovat extra
  • rozsáhlé možnosti konfigurace mohou vést ke zmatení, často je možné použít více možností k provedení jedné akce
  • poměrně značná náročnost hlavně na využití paměti. Když to srovnám se Subtle, tak je to při čistém startu dané konfigurace prostředí rozdíl velmi znatelný: u Subtle cca 80 MB, XMonad+XMobar něco mezi 230–240 MB. A tento rozdíl je již na notýsku s 1500 MB RAM hodně citelný

V příštím dílu se zaměříme na poslední z vybraných tiling WM – Awesome. Ukážeme si zajímavé výchozí nastavení a samozřejmě zabrousíme i do oblasti uživatelských úprav a možností konfigurace.

Byl pro vás článek přínosný?

Autor článku