Fvwm - Moduly

Okenní manažer fvwm se sám o sobě stará pouze o základní funkčnost - umí zvětšovat/zmenšovat/přesouvat okna, nakreslí kolem oken rámečky, čudlíky, knoflíky, nadpisy, dovede vytvořit jednoduché menu. O další nadstandardní funkčnost se starají moduly. Pomocí modulů může fvwm dělat další užitečné věci. Pro ty, kteří si nedovedou představit kupříkladu život bez tlačítka "Start", existuje module FvwmTaskBar. Další modul - FvwmPager - se stará o zobrazení virtuálních obrazovek. Chcete-li mít na každé obrazovce jiný podklad, poslouží modul FvwmBacker.

Musím se přiznat, že ačkoliv čas od času mě popadne průzkumnická nálada a snažím se zjistit, k čemu by mohly být všechny ty moduly, které jsou přibalené k fvwm, nepoužívám moduly prakticky vůbec. Základní funčnost fvwm mým potřebám bohatě stačí. Ale pro ostatní by se mezi moduly mohlo najít pár užitečných maličkostí.

Konfigurace modulů

Obecně se všechny moduly konfigurují podobně. Parametry se zapisují do konfiguračního souboru ~/.fvwm2rc či do globálního /etc/X11/fvwm/system.fvwmrc. Parametry pro moduly jsou uvedené hvězdičkou a jménem modulu:

*FvwmButtons: Back gray

Někdy je potřeba nastartovat více instancí jednoho modulu a každy modul nakonfigurovat jinak. Proto lze některé moduly "přejmenovat" - říci modulu, že má hledat svou konfiguraci pod jiným jménem (například moduly FvwmButtons nebo FvwmEvent).

Většina jednodušších modulů je ale konfigurovatelná přímo uvedením parametrů na své povelové řádce.

Moduly jsou dobře popsané na svých manuálových stránkách. Navíc jsou k fvwm přibaleny i dosti složité ukázky konfigurace jednotlivých modulů (u mě v adresáři /usr/share/fvwm).

Seznam zajímavých modulů

FvwmAnimate

Hned první modul v abecedě a hned jeden z nejužitečnějších. Tedy... o jeho užitečnosti by mohli někteří s úspěchem pochybovat, ale mě vždycky potěší, když se někdo začne zajímat "Co ti to tam lítá, na té obrazovce? To jsou nějaké nové Windows?" Modul FvwmAnimate umí při shození okna do ikonky (nebo naopak) vyrobit efektní animaci. Pomocí parametrů v konfiguračním souboru lze nastavit šest různých animačních efektů, barvy, délku animace a podobně. Experimentováním se moje konfigurace modulu ustálila na této podobě:

*FvwmAnimate: Effect Turn
*FvwmAnimate: Width 2
*FvwmAnimate: Twist 1
*FvwmAnimate: Iterations 20

Popravdě je modul FvwmAnimate jediný, který používám. Velmi mě potěší, až jednoho krásného dne někdo přebuduje modul FvwmAnimate tak, aby se při animaci nepohybovaly pouze kontury okna, ale celé okno i se svým obsahem. Snad se mi pak aspoň částečně vrátí investice do OpenGL karty (když už si moc nehraju...)

Do problémů jsem se s modulem FvwmAnimate dostal po instalaci distribuce Fedora Core 2. Může za to s největší pravděpodobností okenní systém Xorg - věcí, které přestaly ve FC2 v souvislosti s okýnky fungovat, je podezřele vysoké množství.

FvwmAuto

Kdo se chce trochu pobavit, může zkusit přidat do svého (či lépe kolegova) konfiguračního souboru pár řádků:

AddToFunc StartFunction
 + I Module  FvwmAuto 0 Nop "Silent Lower"
 + I Module  FvwmAuto 0 Nop "Silent Iconify"

Byl pro mě trochu oříšek přeložit výraz "when a window gets the focus". Ale snad to bude jasné: modul FvwmAuto umožní provést nějaký příkaz vždy, když okno dostane nebo mu je odebrán fokus. Výše uvedený příklad funguje tak, že každé okno, které ztratí fokus, modul FvwmAuto shodí do ikonky. Na obrazovce po chvíli práce skončíte s jediným oknem, které se při otevření jiného okna automaticky minimalizuje. Záhy zjistíte, že je nemožné mít na ploše více než jedno otevřené okno a že s takto nakonfigurovaným modulem FvwmAuto se prostě nedá spolupracovat.

V manuálu je uvedený trochu praktičtější příklad - pomocí modulu FvwmAuto lze sledovat, v jakých oknech se uživatel pohyboval.

FvwmBacker

I když jsem to dosud v žádném předchozím povídání o fvwm neprozradil, je fvwm vůbec prvním okenním manažerem, který mi před deseti lety ukázal výhodu virtuálních obrazovek. Pro jejich snadnou správu existuje ve fvwm modul FvwmPager - module FvwmBacker je pomocníkem, který dovede měnit obrázky na pozadí jednotlivých virtuálních obrazovek.

V minulém díle seriálu jsem přiložil konfigurační soubor, ve kterém je nastavená velikost 2×2. FvwmBacker může využívat nastavený desktop třeba takto:

*Fvwmbacker: Command (Desk 0, Page 0 0) Exec xloadimage -onroot obrazek.jpg
*Fvwmbacker: Command (Desk 0, Page 0 1) -solid green
*Fvwmbacker: Command (Desk 0, Page 1 0) -solid blue
*Fvwmbacker: Command (Desk 0, Page 1 1) -solid red

FvwmBanner

Fvwm je jeden z mála sympatických programů, které neotravují při startu s grafickým logem. Pokud by snad přece jen někoho lákalo mít při startu okenního manažeru výrazný barevný emblém, může si do konfigurace přidat startování modulu FvwmBanner:

AddToFunc StartFunction I Modules FvwmBanner
Style "FvwmBanner" StaysOnTop, NoTitle, NoHandles, BorderWidth 0

FvwmButtons

Modul vytvoří na obrazovce sadu tlačítek pro komfortnější spouštění aplikací.

*FvwmButtons: Geometry -9-50
*FvwmButtons: Back darkblue
*FvwmButtons: Fore Yellow
*FvwmButtons: Rows 3
*FvwmButtons: BoxSize smart
*FvwmButtons: Padding 2 2
*FvwmButtons: (Title "xmms",    Icon xmms.xpm ,   Action Exec xmms)
*FvwmButtons: (Title "freeciv", Icon freeciv.xpm, Action Exec civ)
Ukázka knoflíků na mojí obrazovce

Ukázka knoflíků na mojí obrazovce podle uvedené konfigurace. Obrázky jsou součástí příslušných balíčků (xmms a freeciv) a jsou uložené v adresáři /usr/share/pixmaps (distribuce Fedora Core 2). Na uvedený adresář proto musí odkazovat parametr ImagePath v konfiguračním souboru fvwm. Hodiny nejsou součástí modulu FvwmButtons, i když modul umožňuje použít jako ikonku výstup z běžící aplikace (například oclock nebo xclock).

FvwmCpp

Volání preprocesoru CPP na konfigurační soubor fvwm. Jestli tomu dobře rozumím, měl by vám tento modul umožnit používat v konfiguračním souboru konstrukce jako #include <soubor.h> - jenom si nedovedu představit, k čemu bych to na svém jednoužitelském stroji použil. Ale při masivnějším nasazení fvwm například v podnikovém prostředí by se dal modul s úspěchem použít pro "předpřípravu" konfiguračního souboru například podle uživatelských skupin.

FvwmEvent

Modul FvwmEvent je obecnější náhradou za starší modul FvwmAudio. Umožňuje při každé nakonfigurované události (start fvwm, otevření okna, zavření okna a podobně - pro seznam událostí doporučuji prostudovat manuálovou stránku) přehrát nějaký zvuk.

*FvwmEvent: Cmd "Exec /usr/bin/play"
*FvwmEvent: startup "TaDa.wav"
*FvwmEvent: shutdown "zvuk1.wav"

FvwmIdent

Drobnost, ale potěší. Modul vypíše množství informací o okně: jméno okna, jméno ikony, šířku, výšku, hloubku, umístění na obrázovce a množství dalších údajů, které mě naposledy zajímaly, když jsem koketoval s myšlenkou programování v Xlib.

FvwmPager

Přepínání/zobrazení virtuálních obrazovek. V konfiguračním souboru z minulého dílu je použitá jen velmi jednoduchá konfigurace virtuálních obrazovek, pro kterou není třeba FvwmPager nijak konfigurovat. Nicméně pomocí modulu FvwmPager lze vytvořit i velmi složitý systém virtuálních obrazovek a pracovních ploch.

FvwmRearrange

Uspořádá okna na ploše.

AddToMenu HlavniMenu 
 + Module FvwmRearrange -cascade 10 10 90 90

Uvedený příklad uspořádá okna do kaskády hezky jedno za druhým. Masochisti mohou vyzkoušet i jiné chování: -resize -tile -h 10 10 90 90. S těmito parametry modul FvwmRearrange nejenže okna přeskládá tak, jak by vás v životě nenapadlo, ale navíc ještě změní jejich velikost.

FvwmTaskBar

Klasický taskbar známý z Windows. Původně vychází FvwmTaskBar z jednoduchého modulu FvwmWinList, který byl součástí fvwm už před deseti lety, kdy Windows existovaly pouze ve verzi 3 a něco a o taskbaru nikdo neslyšel. Modul FvwmWinList se ale dnešnímu taskbaru příliš nepodobá. Zato modul FvwmTaskBar by zřejmě nemusel být problém nastavit tak, aby uživatel na první pohled nepoznal rozdíl mezi taskbarem "opravdovým, od Billa" a mezi taskarem fvwm.

AddToFunc StartFunction I Module FvwmTaskBar

*FvwmTaskBar: AutoHide 2
*FvwmTaskBar: StartMenu HlavniMenu

I když je uvedený příklad velice skromný, ve skutečnosti má modul FvwmTaskBar o cosi širší možnosti nastavení.

Kromě obvyklých vlastností, které by se daly od taskbaru očekávat, umí FvwmTaskBar zobrazovat i hodiny a hlídat novou poštu. S největší pravděpodobností FvwmTaskBar nedovede zapouzdřit cizí aplikaci jako svou součást - nelze tedy použít například místo digitálek jiné hodiny. K tomu se dá velice dobře použít modul FvwmButtons nebo FvwmWharf.

FvwmWharf

O cosi jednodušší varianta modulu FvwmButtons.

Na závěr

V článku jsem rozhodně nezmínil všechny moduly. U některých modulů jsem ani záměrně nešel příliš do hloubky, abych si nechal prostor na případné další pokračování seriálu o fvwm.