Egyik kedvenc időtrabló és haszontalan foglalatosságom az fvwm-konfigurálás. Sokan nem is tudják, hogy mennyire rugalmas, hatékony, ugyanakkor gyors és kis memóriaigényű ez a window-manager és emiatt mindenféle gyanús külsejű WM-eket használnak! ;-) Ezen oldalal az a célom, hogy megkedveltessem és népszerűsítsem ezt a sokszor méltatlanul mellőzött programot.
Először egy kis szómagyarázat, mit jelent az, hogy FVWM. Nos, ez egy rövidítés, a teljes nevén F(?) Virtual Window Manager. Bővebb magyarázatot az első két tag érdemel. A szerző, Robert Nation, állítása szerint már elfelejtette, mit is jelent az F. :) Néhány lehetséges magyarázat a FAQ-ból:
Famous (híres), Fantastic (fantasztikus :), Flexible (hajlékony), Fast (gyors), FVWM (GNU-féle rekurzív definíció), Fu!&*$ing (kib%$#ott). Ez utóbbi elnevezés a legkevésbé találó! :)))
A második tag a virtuális jellegre utal. Virtuális itt azt jelenti, hogy a teljes munkaterületünk több látszólagos képernyőből épül fel, ezek között többféle módszerrel tudunk navigálni.
A "Font" utasítással lehet a legördülő menükhöz tartozó fontokat beállítani. A "WindowFont" az ablakok, az "IconFont" az ikonok címeinek kinézetét szabja meg.
Font -adobe-helvetica-medium-o-*-*-16-*-*-*-*-*-*-* WindowFont -adobe-helvetica-bold-o-*-*-15-*-*-*-*-*-*-* IconFont fixed
Itt nagyon eltérnek egymástól az egyéni ízlesek. Én nagyon szeretem használni az "AutoRaise" funkciót, másokat viszont ez az őrületbe tud kergetni. Arról van itt szó, hogy amelyik ablak felett az egérkurzor van, az ugrik legfelülre. Az utasítás utáni számmal lehet beállítani, hogy ez hány miliszekundum idő elteltével következzék be. Például:
AutoRaise 750
Ha ez nem szimpatikus, még mindíg van lehetőség van arra, hogy az az ablak legyen aktív, amelyik felett az egérkurzor van. (Ez az alapbeállítás az SGI-féle 4Dwm-ben.) Végül, lehetséges az is, hogy az aktív ablakot (mint a Motif window managerben) klikkeléssel válasszuk ki: ClickToFocus
Az "IconBox"-ok kijelölésével szabhatjuk meg, hogy desktop-unk mely területére (netán területeire) kerüljenek az ikonok. Ha negatív számokat adunk meg, akkor azok a jobb, illetőleg az alsó oldaltól számítanak.
IconBox -110 40 -5 -140 IconBox 5 -140 -140 -5
A "SuppressIcons" parancs megadásával eltüntethetjük ikonjainkat a képernyőről, ez a funkció elsősorban alacsony felbontás esetén lehet hasznos. Ilyenkor érdemes ügyelni arra, hogy valamelyik egérgombra vagy billentyűkombinációra műkösésbe lépjen a "WindowList" (ez általában a jobb gombhoz szokott hozzárendelve lenni), mellyel ráugorhatunk futó taszkjaink közül arra, amelyikre akarunk. Ha a "StubbornIcons" opciót beállítjuk, akkor nem arra a desktopra ugrik alkalmazásunk, ahol éppen vagyunk, hanem az eredeti helyére.
"StickyIcons" Jópofa funkció. Ha virtuális desktop-ot váltunk, az ikonok jönnek velünk.
Az "MWMFunctionHints", "MWMDecorHints" és "MWMHintOverride" opciókat érdemes beállítani, elsősorban a Motifos applikációk igényelhetik ezeket.
MWMMenus : Ha egy olyan menüre visszük rá a kurzort, amely alatt még almenü is rejlik, akkor azonnal előugrik, mint ahogy az a Motif alkalmazásoknál szokásos.
MWMBorders : A kereteknek élesebb az árnyékolása; 1 pixel széles a normál 2 pixel helyett. Ha ezt megadjuk, akkor az ablakjaink kb. így fognak kinézni:
Ellenkező esetben meg így:
A "ClickTime" funkcióval beálítható, hogy több egérklikk esetében mennyi ideig számítson az dupla-, ill. triplaklikknek. (Azt ugye, mindenki tudja, hogy a triplaklikkel egy egész sort lehet kijelölni! ;-) Az alapérték:
ClickTime 150
Az "OpaqueMove" opcióhoz tartozó szám (N) arra vonatkozik, hogy ha egy ablak többet foglal el a képernyő területéből, mint N%, akkor mozgatás közben csak a keret változtatja a helyét, az ablak csak letételkor kerül az új pozicióba. Nagy értéket (50-100) csak gyors videokártyához ajánlott használni! Egy célszerűen megválasztott érték:
OpaqueMove 20
Az "EdgeScroll" és az "EdgeResistance" a virtuális desktopok közti gyors váltást hivatott elősegíteni. Azaz, ha a képernyő széléhez húzzuk az egeret, átugorhatunk a következőre, vagy odébbugorhatunk. Példák:
EdgeScroll 100 100 (teljesen átvált a következő desktopra)
EdgeScroll 50 50 (Fél képernyőt arrébbugrik)
Az "EdgeResistance" első paramétere az időt jelenti miliszekundumban, amennyi elteltével megtörténik a képernyőváltás. A második egy távolságot jelent pixelben, aminél ha közelebbről mozgatjuk az ablakot a képernyő széléhez, akkor a WM meggátolja annak átcsúszását a túloldalra, egészen addig, amíg a kurzor is át nem kerül. (Itt be kell valljam, hogy ettől az egész "EdgeScroll" funkciótól néha szálanként tudnám kitépni a hajam, így aztán ezt nem is használom.)
Viszonylag elfogadható értékek szerintem:
EdgeScroll 50 50 EdgeResistance 500 200Az a gond, hogy ha az első értéket alacsonyra állítjuk, akkor rengetegszer fogunk véletlenül ugrálni a desktopok között, itt jön az a bizonyos hajtépős effektus. :) Ha meg túl magasra, akkor felesleges az egész, jobban járunk, ha CTRL+kurzornyíllal, vagy egérrel váltunk desktopot. Így az általam használt érték (egyébkent a Slackware 3.0-ban ez az alapérték):
EdgeResistance 10000 0
Ha még a StubbornPlacement-t is használunk SmartPlacement mellett, akkor az fvwm az előpenderülő ablakokkal igyekszik nem letakarni az ikonokat.
DeskTopSize 3x3 DeskTopScale 28 Pager 6 5Az ablak fejlécében lévő nyomógomb kinézetét is természetesen szabadon variálhatjuk. Egyelőre most csak a saját gombjaim kódját mutatom be:
Cursor 3 60 ButtonStyle : 1 5 20x40@1 80x40@1 80x60@0 20x60@0 20x40@1 ButtonStyle : 2 5 20x20@1 20x80@1 80x80@0 80x20@0 20x20@1 ButtonStyle : 4 5 40x40@1 60x40@1 60x60@0 40x60@0 40x40@1 ButtonStyle : 6 13 26x29@1 34x21@1 50x35@1 70x21@1 79x29@1 63x48@0 79x65@1 70x75@0 50x61@0 34x75@0 26x65@0 44x48@1 26x29@0Az első sorban a kurzor típusát állítjuk be, hogy milyen legyen, ha épp gombjaink felett tanyázik. A 3-as szám a fejlécben lévő gombokra vonatkozik (van még ezen kívül 15 másik lehetőség, azt most egyelőre hagyjuk), a második az /usr/include/X11/cursorfont.h állományban definiált (nálam 78 féle) kurzor közül a 60-ast (kéz) rendeli hozzá a gombokhoz. A ButtonStyle kulcsszót követően a gomb száma áll (baloldalt a páratlan, jobboldalt a páros számozásúak vannak kívülrpl befelé haladva), mögötte a mérete, majd a "vonalas rajz" következik.
BorderWidth: Az átmeneti jellegű ablakok keretének vastagságát állítja be.
HandleWidth: Ugyanez, az általános jellegű ablakokra. Szöveg helyett inkább következzenek példák!
HandleWidth | 0 | 5 | 7 | 10 |
147 kb | 152 kb | 150 kb | 155 kb | |
NoHandles: Az ablakot nem keretezi be.
Sticky: Odaragasztja az ablakot a képernyőhöz; ha virtuális desktoptot váltunk, az ablak velünk jön.
WindowListSkip: A megadott nevű ablakot kihagyja a felsorolásból, ha "WindowList"-et kérünk.
StartsOnDesk szám: A szám-mal jelzett képernyőre jön fel az ablak.
Color szín1/szín2: Az ablak kerete szín2, rajta a felirat szín1 színnel fog virítani.
Icon: Az alkalmazáshoz a megadott ikont rendeli hozzá. Az ikonnak szerepelnie kell az "IconPath" vagy "PixmapPath" könyvtárak egyikében. Pl:
A következő példában létrehozunk két függvényt, melyek az ablakok kinagyítását vezérlik.
Function "maximize_func" Maximize "Motion" 0 100 Maximize "Click" 0 75 Maximize "DoubleClick" 92 75 EndFunction Function "maximize_horiz" Maximize "Click" 75 0 Maximize "DoubleClick" 96 0 EndFunctionRendeljük hozzá ezeket a bal, illetve a középső egérgombokhoz:
Mouse 1 2 N Function "maximize_func" Mouse 2 2 N Function "maximize_horiz"A következő fog történni: ha a maximalizáló gombra kattintunk a bal gombbal, az ablak függőlegesen megnő a képernyő magasságának 75%-ra. Ha egy kicsit lenyomva tartjuk a gombot klikkentéskor, az ablak a képernyő teljes magasságára kinyújtja magát. Kettős kattintásra vízszintesen is megnő az ablak, majdnem a teljes képernyőt elfoglalja. (Hagy helyet a GoodStuff-nak és az ikonoknak.) A középső gombbal vízszintesen tudjuk kinyújtani az ablakot háromnegyedrészt (szimpla klikkel), vagy majdnem teljesen (duplaklikkel).
Némi magyarázattal tartozom az egérgombok hozzárendelését illetően. A Mouse kulcsszót követően az első paraméter a gomb sorszámát jelzi. 1, 2, 3, jelentik a bal, középső, jobb gombokat, 0 esetében minden gomb ugyanazt a hatást váltja ki.
A második paraméter 0-9 számok esetében arra vonatkozik, hogy a fejlécen melyik gombot nyomtuk le. A gombok számozása megegyezik a "ButtonStyle" részben leírtakkal. Egyéb esetek:
R | Root ablak |
T | Az ablak fejléce |
W | Az alkalmazás ablaka |
S | Az ablak szélei |
F | Az ablak sarkai |
I | Ikonizált ablak |
A harmadik paraméter a valamilyen módosítógombbal (gombokkal) együtt történő kattintásra vonatkozik. A módosítók lehetnek: N (semmilyen), C (Ctrl), S (Shift), M (Meta), A (ezek közül bármelyik).
Popup "Ablakműveletek" Title "Ablakműveletek" Function "Mozgat" Move-or-Raise Function "Átméretez" Resize-or-Raise Iconify "Ikonizál" Stick "Képernyőhöz ragaszt" Function "Maximalizál" maximize_func Nop "" Destroy "Agyoncsap" Delete "Bezár" Nop "" Refresh "Képfrissítés" EndPopup #(Itt az "Iconify", a "Stick" és a "maximize_func" parancsok ismételt végrehajtásával #az eredetivel ellentétes hatást érhetjük el.) Popup "Alkalmazások" Title "Alkalmazások" Exec "Ghostview" exec ghostview & Exec "XV" exec xv & Exec "Xman" exec xman & Exec "Xfm" exec xfm & Nop "" Exec "Netscape" exec /usr/local/netscape/netscape & Exec "Lyx" exec /usr/local/bin/lyx -bw -2 & #Az utóbbi két esetben természetesen a valódi elérési utat kell beírni. EndPopup Popup "Játékok" Title "Játékok" Exec "Workman" exec workman & Exec "Xhextris" exec xhextris & Exec "Xtetris" exec xtetris & Exec "Xbill" exec xbill & EndPopup Popup "Kilépek" Title "Tényleg ki akarsz lépni?" Nop "" Quit "Bizony!" Nop "" Nop "" Restart "Inkább legyen az olvwm!" /usr/openwin/bin/olvwm Nop "" Restart "Indítsd újra az Fvwm-et!" fvwm Nop "" Nop "Meggondoltam magam!" EndPopup Popup "Programok" Title "Programok" Exec "Számológép" exec xcalc & Exec "Xterm" exec xterm -sb -sl 500 -j -ls -fn 7x14 -bg seashell2 & Exec "Óra" exec oclock -minute red -hour blue -bg black & Exec "Képernyővédő" exec xlock -nolock -nice 0 -install -mode random & Nop "" Popup "Alkalmazások" Alkalmazások Nop "" Popup "Játékok" Játékok Nop "" Popup "Kilépek" Kilépek Nop "" Refresh "Képernyőfrissítés" EndPopupMost jön a hozzárendelés. A jobb egérgombhoz a "WindowList" funkciót rendeljük hozzá.
Mouse 1 R A PopUp "Programok" Mouse 2 R A PopUp "Ablakműveletek" Mouse 3 R A WindowList
Bízom benne, hogy ennyi infó birtokában már mindenki nagyon pofás munkakörnyezetet tud teremteni magának! A későbbiekre nézve tervezem még ezen oldal kibővítését további példákkal, illetőleg sort kerítek majd a 2.0-ás fvwm ismertetésére, amely szerintem látványban és funkcionalitásban egyaránt a legjobb valamennyi window manager közül.
Az esetleges hozzászólásokat, korrekciókat, kiegészítéseket, letolásokat, levélbombákat ide kérem! :))