Portál AbcLinuxu, 1. května 2025 12:34
Možnosti nastavení Fvwm2 a ukázkový konfigurační soubor.
Jak už jsem uvedl v předcházejícím
díle seriálu, je systémová konfigurace uložena v souboru
/etc/X11/fvmw/system.fvwmrc
. Tento konfigurační soubor je
platný pro celý systém, pokud ovšem nemá uživatel vytvořenu vlastní
konfiguraci v souboru .fvwm2rc
ve svém domácím adresáři.
Aby se vám lépe experimentovalo, stáhněte si ukázkový konfigurační soubor vytvořený speciálně pro tento článek a uložte jej ve svém domácím adresáři (doufám, že jsem v něm nenasekal příliš mnoho chyb).
Správce oken fvwm je velmi dobře dokumentován ve své manuálové stránce:
man fvwm2
|
Vlastní manuálovou stránku má i každý modul fvwm.
Konfigurační soubor nemá žádnou pevně danou strukturu, nelze jej v žádném případě přirovnat například k xml souborům nebo ke konfiguračnímu souboru Samby. Fvwm používá pro svou konfiguraci spíš jednoduchý programovací jazyk. Přesto lze vysledovat v konfiguraci několik logických částí.
Většina menu se vytváří příkazem AddToMenu
. Výjimku
mohou tvořit dynamická menu, ale ta jsou námětem na jeden dlouhý
celovečerní díl tohoto krátkého seriálu. Prvním povinným parametrem
příkazu je název příslušného menu. Potom následuje textový nápis a
nakonec požadovaná akce. Pokračovat v příkazu lze na dalším řádku, ten
musí začínat znakem +
.
AddToMenu HlavniMenu + "**** Hlavní menu ****" Title + "" Nop + " X terminál" Xterm + " Mozilla" Exec /usr/bin/mozilla + " Programy" Popup Programy + " Okolní počítače" Popup Pocitace + " Konec práce" Popup Quit-Verify |
Ve výše uvedeném příkladu je pro tvorbu menu vystřílený praktický
celý využitelný arzenál možných akčních příkazů. Title
a
Nop
pravděpodobně nepotřebují bližší vysvětlení.
Exec
je využit pro přímé spuštění programu a
Popup
pro vyvolání dalšího podmenu. Trochu nejasná
může být akce XTerm - jde o volání funkce. Narozdíl od Mozilly XTerm
spouštím velmi často a navíc různými způsoby podle okamžité nálady a
počtu volných rukou. Pro jeho vyvolání mám proto v konfiguračním
souboru definované i další zkratky - doubleclick (MS patented) na volné ploše nebo stisknutí klávesy
"rozevláté wokno". Abych nemusel v konfiguračním souboru vypisovat pokaždé
startování XTermu se všemi jeho početnými parametry, mám volání XTermu
definované ve funkci na jediném místě.
Funkce se vytvářejí příkazem AddToFunc
. Syntaxe při
tvorbě funkcí je podobná jako při tvorbě menu. Prvním parametrem je
jméno funkce a dále následují jednotlivé akce tak, jak je má hezky za
sebou funkce provádět. U každé akce se navíc dá stanovit, za jakých
podmínek se akce provádí.
AddToFunc Xterm I Exec xterm +xb -ls -bg "#c0c0a0" \ -fn '-misc-fixed-medium-r-normal--14-*-*-*-*-*-iso8859-2' \ -T db1 -e ssh db1 AddToFunc Xterm-or-Root-menu + D Xterm + C Menu HlavniMenu Nop |
V příkladu jsou definovány dvě funkce. Vysvětlení si zaslouží trochu záhadné písmenko, které se vyskytuje před samotnou definicí požadované akce. Jde o jednoduchý podmíněný příkaz, který říká, za jakých podmínek se má akce spustit. Písmenem I (Immediate) jsou označené akce, které se mají provést okamžitě. Písmenem C (Click) nebo D (Doubleclick) se označují akce, které se provádějí při kliknutí myší a nakonec písmenem H (Hold) se označují akce, které se mají provádět, drží-li uživatel tlačítko myši stisknuté.
Některé funkce mají speciální význam. Jsou to hlavně funkce
StartFunction
, InitFunction
a
RestartFunction
. Ty se provádějí okamžitě po nastartování nebo
restartování okenního manažeru.
Provádění změn ve zkratkách myši musím často konzultovat s
manuálovou stránkou, a to i přesto, že jsem si přímo do konfiguračního
souboru popsal jednotlivé parametry. Pro definování myších zkratek
slouží příkaz Mouse
:
# Myš na ploše Mouse 1 R N Xterm-or-root-menu Mouse 2 R N Xterm-or-Window-Ops Mouse 3 R N Xterm-or-Windows-List Mouse 1 R C Xscreensaver |
V příkladu je definováno chování myši při poklikání na volnou plochu obrazovky. V dřívější ukázce jsme si definovali funkci Xterm-or-root-menu. V této funkci se volá buď hlavní menu nebo xterm podle toho, jestli bylo myší kliknuto na plochu jednou nebo dvakrát. Ostatní funkce mají podobný význam.
Příkaz Mouse má čtyři parametry. Prvním je číslo tlačítka myši. Tlačítko levé má obvykle číslo 1, tlačítko prostřední má číslo 2 a tlačítko pravé má číslo 3. Pokud na tlačítku nezáleží a akce se má vyvolat při použití libovolného tlačítka, použije se v konfiguračním souboru číslo 0.
Dalším parametrem je kontext, ve kterém bylo tlačítko stisknuto. V příkladu je kontext R - root window - pracovní plocha. Dalšími možnostmi jsou T - titulek okna, I - ikona, W - aplikační okno, S - rámeček okna, F - rohy rámečku okna. Číslice 0 až 9 označují jednotlivá tlačítka umístěná v horní liště okna (počet a vzhled tlačítek lze nastavit). Písmena lze sdružovat dohromady, následující příklad umožňuje měnit velikost oken jak pomocí rožků tak i rámečku okna:
Mouse 1 FS A Resize-or-Raise
|
Dalším parametrem je modifikátor (Ctrl, Alt, Shift a podobně). N - žádný (no) modifikátor, C - control, M - meta (na klávesnici PS se ukrývá pod klávesou Alt), L - caps lock a nakonec A - jakýkoliv modifikátor. X11 znají další modifikátory mod1 až mod5. Ty zná fvwm jako modifikátory 1 až 5. Modifikátory se mohou sdružovat dohromady, a tak lze přiřadit akci například kombinaci Ctrl-Alt-Click pro uzamčení obrazovky (v přiloženém konfiguračním souboru je použita jednodušší kombinace bez Alt):
Mouse 1 R CM Xscreensaver
|
V přiloženém ukázkovém konfiguračním souboru je na různé kombinace kláves CTRL a doubleclicků pověšeno volání různých XTermů s přístupy na různé počítače. Abych měl při práci ihned jasno, jsou XTermy na různých počítačích odlišené svou barvou.
Klávesové zkratky jsou tvořeny prakticky úplně stejně jako zkratky pro myš. V prostředí X11 je u klávesových zkratek někdy trochu složitější najít jméno pro příslušnou klávesu. Nepojmenovaná bývá třeba klávesa "rozevláté wokno". Pojmenovat neznámé klávesy je možné pomocí příkazu xmodmap a xev. Ty ovšem nejsou součástí fvwm. Příkazem xev zjistíme scan kód příslušné klávesy a pomocí příkazu xmodmap pak přiřadíme klávese jméno. Jak na to si můžete přečíst v krásném článku Multimediální a jinak vylepšené klávesnice, případně v článku Upravte si klávesnici na Rootu.
Další možnosti jak upravit chování a vzhled různých oken nabízejí styly. Jejich pomocí se dá nastavit třeba vzhled horní lišty, počet knoflíků na liště, použité písmo, ikony, barvy a podobně. Každou aplikaci je možné nastavit zvlášť.
Příkaz Style
má celkem jednoduchou syntaxi. Za příkazem
je jméno (nadpis) okna, kterého se vlastnosti týkají, následované
seznamem vlastností, které se mají pro okno nastavit. Seznam je
oddělený čárkami. Ve jméně okna se dá použít hvězdičková konvence,
pokud je v názvu okna mezera, je nutné uzavřít jméno do uvozovky.
MenuStyle * fvwm, Font -adobe-helvetica-medium-r-*-*-16-*-*-*-*-*-iso8859-2 Style * Font -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-2 Style * IconFont fixed Style * IconBox 640x480+1034+10 Style * BorderWidth 7, HandleWidth 7 Style * ClickToFocus # Styly pro xv: Style "*unregiste*" NoTitle, NoHandles, BorderWidth 0 Style "*unregiste*" Iconbox -40 10 -0 500 Style "*schnauzer*" Iconbox -40 10 -0 500 Style "*schnauzer*" ClickToFocus, ClickToFocusRaisesOff |
I když jsem se snažil vybrat jen některé věci, je ukázka stylů poměrně veliká. Hned na prvních třech řádcích se definují fonty - ty lze nastavit pro každou část zvlášt (titulek, ikona, menu...). Na dalších řádcích se říká, kde se mají na obrazovce skladovat ikony, jak mají být široké okraje a jak se mají okna chovat při kliknutí na jejich plochu.
Chování se dá pro některé aplikace dále upravit. Obrázky si
prohlížím archaickým programem xv. Kolem obrázku žádné okraje nechci,
nastavuji tedy NoTitle, NoHandles, BorderWidth 0
. Chci,
aby se ikonky programu xv skladovaly na jiném místě obrazovky - pro xv
vytvářím vlastní IconBox.
Při prohlížení obrázků mám samotný obrázek (bez okrajů a titulků)
na popředí. Okno se seznamem obrázků (visual schnauzer) mám utopené
pod obrázkem a chci, aby utopené zůstalo, i když na ně kliknu. Volby
ClickToFocus, ClickToFocusRaisesOff
umožňují, aby jedno
konkrétní okno zůstalo stále vespod, i když je aktivní (celé chování
je ve skutečnosti trochu složitější - okno lze vytáhnout do popředí
kliknutím na rámeček nebo titulek). Zbývající okna tímto nastavením
nejsou ovlivněná a chovají se normálně - při kliknutí se dostanou
nahoru nad ostatní okna.
Sem jsem zahrnul vše ostatní, co v rozmezí tohoto článku nezapadlo jinam. Fvwm má bezpočet různých konfiguračních příkazů, ze kterých uvedu alespoň tři:
ClickTime 200 DoubleClickTime 150 OpaqueMoveSize unlimited |
Příkaz ClickTime
říká fvwm, jak dlouhé stisknutí tlačíka
myši (v milisekundách) má ještě považovat za kliknutí, a co už považovat za
držení stisknutého tlačítka. Stejně tak příkaz DoubleClickTime
dává fvwm vědět, co má být považováno za doubleclick a co za dva nezávislé
kliky po sobě. Konečně příkaz OpaqueMoveSize unlimited
říká,
že po obrazovce se mají vždy přesouvat okna i s celým svým obsahem. V
dnešní době superrychlých akcelerovaných videokaret nemá smysl nastavovat
něco jiného. V době, kdy jsem ještě honil okýnka na třiosmšestce s
videokartou Cirrus Logic 5434 (tehdy úžasné dělo), mělo význam
nastavit hodnotu například na 25 - u všech oken větších než 25 %
obrazovky se přesouval pouze rámeček okna, obsah následoval jako
poslední až po uvolnění tlačítka myši.
Pro snazší ladění je vhodné někam do menu vložit volání funkce Restart. Ta má jeden parametr - jméno okenního manažeru, který se má místo fvwm nastartovat. Tak můžeme místo fvwm nastartovat úplně jiné prostředí, aniž by bylo třeba se odhlásit. Nejčastěji ovšem startuju opět fvwm2 - při změně konfiguračních souborů tak dojde k implementaci všech změn provedených v konfiguraci, aniž by se ukončily běžící aplikace.
O konfiguraci fvwm jsem nenapsal ani zdaleka vše. V krátkém článku nelze zacházet do přílišných detailů. Vůbec jsem nezmínil například efektnější nastavení stylů (obrázky, barevné přechody), virtuální obrazovky, moduly a určitě mnoho dalšího. O tom napíšu snad zase někdy příště.
Zatím na výzvu reagoval pouze David Nečas (Yeti), takže vám nabízím jediný screenshot a jediný konfigurační soubor. Chcete-li také představit svoji konfiguraci Fvwm, pošlete screenshoty a konfigurační soubory na adresu redakce.
David Nečas (Yeti) |
---|
![]() Konfigurační soubor |
Nop
' po vyvolání menu? Např. '+ C Menu NějakýMenu Nop
'. Funguje mi to i bez toho 'Nop
', tak nevím. I když jsem nejdřív taky nevěděl, proč je všude v ukázkových souborech '+ "Rxvt" Exec exec rxvt
', tedy dvojitý výskyt 'exec
' a přitom mi to fungovalo i jako '+ "Rxvt" Exec rxvt
', ale to jsem se už aspoň dočetl, proč bych měl psát to druhý 'exec
' "navíc". Ale proč to 'Nop
' ?
Btw. při restartu Fvwm mi to schodí Xmms. Čím to může být?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.