Portál AbcLinuxu, 27. května 2024 14:07

Fvwm - III

12. 11. 2004 | Petr Bravenec
Články - Fvwm - III  

Představení nejzajímavějších rozšiřujících modulů, příklady nastavení.

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 mě čas od času 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ždý 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 taskbarem 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 něco 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.

Seriál Správci oken (dílů: 11)

První díl: Blackbox: malá černá skříňka, poslední díl: Fluxbox.
Předchozí díl: Fvwm - II
Následující díl: Fvwm - IV

Související články

Fvwm - I
Fvwm - II
Fvwm - IV
Fvwm - V
Blackbox: malá černá skříňka
Pekfektní správce oken: pekwm

Odkazy a zdroje

Domácí stránka fvwm

Další články z této rubriky

Týden na ITBiz: Svět IT a burzy, umělá inteligence, Nvidia a outsourcing
Linuxové foto novinky: pozvolná evoluce
PCLinuxOS 2017.2 MATE - tak trochu zvláštní linuxová distribuce
Krátký pohled na Fedoru 25, Wayland a GNOME 3.22
Naprosto ničím nezajímavé Lubuntu 16.10

Diskuse k tomuto článku

12.11.2004 00:55 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše FvwmCpp
Odpovědět | Sbalit | Link | Blokovat | Admin
$SUBJ sice opravdu nevím, k čemu bych použil, ale bez FvwmM4 (M4 preprocesor) bych byl jako bez ruky.
14.11.2004 14:52 Staon
Rozbalit Rozbalit vše Re: FvwmCpp
Fvwm sice uz uz asi 5 let nepouzivam, ale pouziti CPP si dokazu dobre predstavit. Cckovy preprocesor totiz nabizi nekolik moznosti:

1) vkladani dalsich konfiguraku (#include). Diky tomu je mozno slozite konfiguraky modularizovat, cimz se v nich lepe clovek vyzna.

2) vytvareni konstant. Pokud nekde zadavam nejake rozmery, tak si je strcim do konstanty a treba pri pripadne zmene rozliseni snadno na jednom miste je pozmenim.

3) vytvareni maker. Mozna to jde lepe, ale co si vzpominam, kdyz jsem chtel stejnou reakci na dve ruzne udalosti, musel jsem to psat dvakrat. Pokud si udelam makro, napisu to jen jednou.

4) podmineny preklad (#ifdef, #ifndef) - pro ruzne skupiny muzu udelat ruzne konfiguraky. CPP casti, ktere neodpovidaji dane podmince, zcela odstrani.

Myslim si, ze pro nekoho, kdo spravuje pocitac pro vic uzivatelu tohle muze byt dost uzitecny nastroj, ale napriklad pouziti konstant bych doporucil i pro jednouzivatelsky pocitac. Pokud navic konstanty includuji z dalsiho souboru, tak se konfiguraky dost zprehledni.
15.11.2004 10:40 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: FvwmCpp
;-)))

Proč používat C preprocesor když máš k disposici M4, který je pohodlnější a mocnější? Leda když vůbec netušíš, co M4 je...
23.11.2004 00:39 Staon
Rozbalit Rozbalit vše Re: FvwmCpp
Mocnejsi ano, pohodlnejsi se mi rozhodne nezda. A pokud nebudu mit nejake slozitejsi naroky, tak radsi zvolim preprocesor. Na M4 jsem narazil v ramci autoconfigu a moc dobry dojem na me neudelal.
franta avatar 12.11.2004 10:22 franta | skóre: 6
Rozbalit Rozbalit vše dokovani aplikaci
Odpovědět | Sbalit | Link | Blokovat | Admin
Jakym zpusobem se vlastne dokuji aplikace typu Psi, Valknut atp. napr. do taskbaru jako treba ve fluxboxu? Nejak jsem na to neprisel. Diky
Petr Bravenec avatar 12.11.2004 10:57 Petr Bravenec | skóre: 43 | blog: Bravenec
Rozbalit Rozbalit vše Re: dokovani aplikaci
V taksbaru, řekl bych, to asi nepůjde. Na to by se dal použít spíše modul FvwmButtons - kdysi jsem používal jeho předchůdce GoodStuff a měl jsem zadokované hodiny, load, pager a zkoušel jsem i další. Ale postupem času jsem FvwmButtons opustil. Přesto o FvwmButtons chystám samostatný díl.
Petr Bravenec - Hobrasoft s.r.o.
12.11.2004 11:05 Martin Lebeda | skóre: 22 | blog: Martinuv_blog | Plzeň
Rozbalit Rozbalit vše přepínání aplikací
Odpovědět | Sbalit | Link | Blokovat | Admin
Lze v Fvwm přepínak aplikace pomocí jejich seznamu na Alt-tab tak jak to má udělané IceWM (a MS Windows samozřejmě). Respektive na Alt-tab si nastavím co chci, ale nenašel jsem ten přepínací seznam.
12.11.2004 11:30 vol0da | skóre: 2 | Topoľčany
Rozbalit Rozbalit vše Re: přepínání aplikací
Napriklad takto:
Key Tab A M Windowlist (CurrentPage) root c c CurrentDesk SelectOnRelease Alt_L \ 
            NoHotkeys NoCurrentDeskTitle NoGeometry CurrentAtEnd
12.11.2004 12:14 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: přepínání aplikací
To funguje celkem dobře, používám tam navíc jen !Focused, protože se přece nechci přepínat do aktivního okna, když v něm jsem. Jenže problém nastane u tří a více oken. Jakmile se do nějakého okna přepnu kliknutím myši, tak následný Alt+Tab mě už nevrátí do původního okna, ale skočí to někam jinam.
12.11.2004 12:28 vol0da | skóre: 2 | Topoľčany
Rozbalit Rozbalit vše Re: přepínání aplikací
To !Focused je tam podla mna zbytocne, pretoze CurrentAtEnd sposobi, ze sa aktualne okno presunie na koniew windowlistu. A dalsi alt+tab ma presunie na predchadzajuce okno aj po kliknuti mysou a aj pri viacerych oknach.
15.11.2004 14:44 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: přepínání aplikací
To !Focused je pouze otázka vkusu - mě zkrátka vyhovuje, když se v seznamu oken to aktuální nevyskytuje vůbec. Ale to je detail. Horší je to s tou myší. Nemohu si pomoci, ale opravdu se to chová, jak jsem psal. Zkusím to popsat přesněji:
1) na desktopu si otevřu tři okna, označme je A,B,C, přičemž A nechť je aktivní
2) Pomocí Alt+Tab se několikrát po sobě přepnu mezi okny A->B->A, takže okno A je opět aktivní
3) Kliknu na okno B, které se tímto stane aktivním
4) Alt+Tab mě přepne na okno C :-(
Petr Bravenec avatar 12.11.2004 15:56 Petr Bravenec | skóre: 43 | blog: Bravenec
Rozbalit Rozbalit vše Re: přepínání aplikací
Nádhera. Tohle je fantazie. Díky za tip.
Petr Bravenec - Hobrasoft s.r.o.
15.11.2004 20:16 radek
Rozbalit Rozbalit vše Re: přepínání aplikací
Mám taky dotaz týkající se stejného tématu: rád bych docílil přepínání oken ve stylu, jak mi běhá ve WindowMakeru, tj. něco jako "Next (AcceptsFocus CurrentDesk CurrentPage) Focus", ale s tím rozdílem, že seznam oken je seřazen podle pořadí posledního zaměření (tj. Windows chovaní). Je to ve fvwm možný?
12.11.2004 13:24 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše uz se tesim az si najdu cas
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdravim

Vypada to pekne a chtel bych se zeptat cim realizovat buttony na plose ve forme bitmapy, ne ten fvwm Buttons co ma kolem ikony text a barevnej ramecek. Taky bych chtel nektere z techto buttonu vyuzit na skryvani/odkryvani dalsich nekolika ikon ktere uz budou spoustet programy. Kliknu na ikonu "graficke programy", obrazek se zmeni na jiny (opacny stin - zmacknuty button) a objevi se mi nekolik dalsich ikon, po kliku na nekterou z tech ikon zmizej, ta prvni ikona zase dostane normalni obrazku a pochopitelne se spusti pozadovany program. V LiteStepu to slo uplne jednoduse, umi tohle fvwmButtons nebo wharf taky?

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
12.11.2004 14:27 Maude Lebowski
Rozbalit Rozbalit vše cislo okna ve stylu wm
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobra vlastnost FvwmBackeru je, ze umozuje, pri prepnuti na nejakou plochu, spustit jakykoliv prikaz. Velmi zajimava vec je to ve spojeni s osd (on screen display). Ja mam treba nakonfigurovane pro vsechny plochy ktere pouzivam prikaz

*FvwmBacker: Command (Desk 0, Page 0 0) Exec echo "1" | \

nice osd_cat - -f "font" -c gold -o -20 -p bottom -A right -s 2 -d 2

ktery ma za ukol pri prepnuti napsat do dolniho praveho rohu cislo desktopu a za 2 sekundicky zmizet. Neco podobneho ma treba window maker taktez, ale rusi vas to uprostred plochy. Modifikaci je nepocitane.
Aleš Černý avatar 12.11.2004 15:52 Aleš Černý | skóre: 16
Rozbalit Rozbalit vše Re: cislo okna ve stylu wm
Neco podobneho ma treba window maker taktez, ale rusi vas to uprostred plochy.

Hele, nepomlouvat! Zaprvé se mi to spíš líbí, než ruší a za druhé si to můžeš změnit a nechat to taky zobrazovat třeba v pravém dolním rohu a nebo to úplně vypnout. S WindowMakerem jsem začínal (když jsem zjistil, že na mojí starý šunce jen nabíhání KDE či Gnome trvá asi dvě minuty:-) ) a i když jsem potom přešel na Fuxbox a teď zkouším Fvwm, myslím, že je to kvalitní WM.
Ale jinak dobrý tipy. Např. to přepínání Alt-Tab je o mnoho lepší než to původní, jak je nakonfigurovaný defaultně. Už se teším na další díly! Snad se třeba i dozvím, jak ikony umístit do rámečku pevné velikosti (jako to dělá právě třeba WindowMaker).

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.