fvwm2.gif Tippek, Trükkök


Az fvwm 2-es verziója számos változást tartalmaz az 1.24-eshez képest. Sok parancs szintaxisa megváltozott, racionálisabb lett, sok új opció is felbukkant. Számos dolog menet közben is változtatható lett, a kinézet is igen tág teret enged fantáziánknak, ezáltal a konfigurációs állomány összetettsége szinte programozással felérő élvezetet nyújthat a felhasználó számára. Természetesen a forráskód is meglehetősen szabadon "hackelhető" ennek köszönhetően jöttek új window manager fejlesztések is, melyeket az fvwm fejlesztői gárdájától független csoportok készítenek. Ilyen projekt az Enlightement és az Fvwm95, azaz az előbbi csak volt, ugyanis készítője időközben teljesen átdolgozta, függetlenítette az fvwm-től.

Az alaprendszer mellett természetesen a modulok is jelentős fejlődésen mentek keresztül, számuk is gyarapodott. A legtöbb opcióra igaz, hogy alkalmazásonként különböző beállításokat kaphatnak, ilyesfajta óhajainkat a Style "*" utasításokkal érvenyesíthetjük.

Nézzük akkor pontokba szedve a főbb különbségeket.


Menüstílusok

A menük beállítása egyetlen helyen történik a MenuStyle utasítással: MenuStyle feliratszín háttérszín árnyékolási_szín fontstílus (fvwm/mwm stílus)

Példa:

MenuStyle linen darkslateblue blue1 -adobe-helvetica-medium-o-*-*-16-*-*-*-*-*-*-* mwm 

Fókuszálás

Az AutoRaise funkció külön modulba került (FvwmAuto), itt már lehetőségünk van megmondani, hogy mi történjék, amikor az egérkurzor belép egy ablakba, vagy amikor elhagyja azt. Példák:

Module FvwmAuto 750 (alapeset)
Module FvwmAuto 750 Raise Lower (az ablak elhagyásakor azt legalulra helyezi)
Module FvwmAuto 750 Raise Iconify (az elhagyott ablakot leikonozza; meglehetősen idegesítő beállítás.)
További bővülést jelent a FlipFocus utasítás, mely a két utoljára használt ablak között váltogatja a fókuszt, továbbá a SloppyFocus, melynél a fókuszált ablak aktív marad, ha nem egy másik ablakba, hanem a root window fölé mozgatjuk az egeret. A 45-ös verzióban két, az ablakok elrendezését segítő új modul jelent meg, az FvwmCascade, mellyel a képernyőn levő ablakok szorosan egymás mögé helyezhetők úgy, hogy a fejlécük látható marad, és az FvwmTile, amely az ablakokat úgy méretezi át, hogy ne fedjenek át egymással.

Virtuális desktop beállítása

A képernyőegységekben történő méret megadása kissé változott, DesktopSize [szám] [szám] lett [szám]x[szám] helyett. Az egyéb beállításokat az FvwmPager modul segítségével végezhetjük el, amit indíthatunk belépéskor, vagy menet közben menüből:

Module FvwmPager 0 2 (Ezesetben 3 különböző munkaasztalunk lesz, persze mindegyik állhat több virtuális képernyőből.) A Pager méretét megadhatjuk fixen:

*FvwmPagerGeometry 116x90+3+3

vagy a fizikai képernyő méretéhez viszonyítva:

*FvwmPagerDeskTopScale 10 10

Az "*FvwmPagerFont fontnév" opció azt jelzi, hogy a virtuális képernyőn milyen fontokkal jelenjenek meg a munkaterületek nevei. Ha azt adjuk meg, hogy "none" akkor nem jelennek meg címkék. Ugyanígy megjelölhetők a parányi téglalapok is a Pager-en belül az FvwmPagerSmallFont utasítás segítségével.

Stílusok

A stílusok terén is jócskán kibővültek a variációs lehetőségek. Megjelent jónéhány új funkció, emellett több lehetőségünk nyílik az alkalmazások, alkalmazáscsoportok egyedi kinézetének beállítására, amire az fvwm1 esetén nem volt mód. Ilyenek pl. az MWM funkciók, melyekről az fvwm1-nél már volt szó, Ezt a Style [ablaknév] [opciók] utasítással érhetjük el. Minden alkalmazáshoz (mondjuk "xterm"), vagy alkalazáscsoporthoz ("*term") hozzárendelhetünk pl. saját IconBox-ot a képernyő tetszőleges területén, így csoportosíthatjuk az éppen futó programjainkat. Természetesen több alkalmazáshoz is hozzárendelhetjük ugyanazt az IconBox-ot. Az azonosító egyébként lehet az ablak tényleges neve (ami a fejlécben megjelenik), vagy lehet az erőforrásoknál használatos azonosító is. (Pl. az xterm esetében ez XTerm.)

További újdonság a "MiniIcon"; kis ikon, mely az adott alkalmazást jelképezi. Az ikon megjelenhet az ablakkereten valamelyik gombon, megjelenhet menüben, használhatják más modulok is, mint amilyenek az FvwmWinList, FvwmIconMan, és az FvwmTaskBar.

Fejléc, keretek

A fejléc stílusát a TitleStyle utasítással lehet szabályozgatni. Az első menetben a fejléc magasságát és a címszöveg igazítását állíthatjuk be. Az igazítást a következő kulcsszavakkal adhatjuk meg: Centered (középre igazít), RightJustified (jobbra), vagy LeftJustified (balra). A magasságot a Height adja meg pixelben kifejezve. Példa:

TitleStyle LeftJustified Height 22
Ha nem adunk meg paramétereket, akkor alapértelmezésben az FVWM középre igazít, a magasságot a WindowFont által meghatározott magassághoz igazítja. Második menetben további hangolásra nyílik lehetőségünk:
TitleStyle [státusz] [stílus] [ -- flag ... ]
Státusz a következő lehet: ActiveUp, ActiveDown, vagy Inactive, attól függően, hogy az adott stílust lenyomott, felengedett egérgombhoz, vagy inaktív ablakhoz rendeljük hozzá. A "stílus" vonatkozik a fejléc színére, textúrájára, továbbá arra, hogy a fejléc az ablakkal egy síkban van (Flat), kiemelkedik (Raised), vagy besűllyed (Sunk). (Itt hívnám fel a figyelmet arra, hogy az ablakkezelővel történő játszadozás veszélyes lehet abból a szempontból, hogy egy elrontott szintaxisú utasítás könnyen kiléptethet minket X-ből. Tehát egy újraindítást megelőzően mindig gondoskodjunk esetleges egyéb munkáink elmentéséről.) A következő példa során az aktív ablak fejlécét úgy állítjuk be, hogy lenyomáskor lesűllyedjen és egy világosbarna-sötétbarna színgradiens jöjjön létre:
TitleStyle ActiveDown VGradient 64 chocolate3 #502a06
A következő példában olyan fejlécet állítunk be, ami az ablak síkjában van, a nyomógombok is belesimulnak ezen síkba:
TitleStyle -- flat
ButtonStyle All ActiveUp (-- flat) Inactive (-- flat)
Idetartozik még az egyszínű ablakok színbeállítására vonatkozó utasítás:
HilightColor feliratszín háttérszín
Az ablakokat hozzá is "ragaszthatjuk" a képernyőhöz, így, ha képernyőt váltunk, az ablak jön velünk. Az ehhez tartozó színbeállítás:
StickyColors  feliratszín háttérszín
Az ablakkeretek stílusát nagyon hasonló módon szabhatjuk kényünkre-kedvünkre. A "stílus" ezesetben (ha megadjuk) csak TiledPixmap lehet. A flag lehet HiddenHandles, ekkor a sarkoknál sem "törik meg" az ablakkeret, ezt kiegészíthetjük a NoInset flaggel, amitől még tagolatlanabbá válnak ablakaink. (Mint az fvwm95 esetében.)

Példák:

BorderStyle Active TiledPixmap wood.xpm
BorderStyle Inactive -- HiddenHandles NoInset
A fejlécen található nyomógombok konfigurálása is hasonló rendszer szerint történik, kiegészítve egy számmal, ami gomb pozíciójára vonatkozik:
ButtonStyle gomb [státusz] [stílus] [ -- flag ... ]
Az fvwm1-től eltérően már nem csak "domborműveket", hanem ikonokat is rátehetünk nyomógombjainkra:

ButtonStyle 6 4 50x25@1 75x75@0 25x75@0 50x25@1
ButtonStyle 4 Pixmap mini-shrink-windows-full.xpm
ButtonStyle 4 ActiveUp (Pixmap up.xpm) ActiveDown (Pixmap down.xpm)
Használhatjuk a MiniIcon-t is:
ButtonStyle 1 MiniIcon
A fejléc és a keret stílusait adoptálhatjuk a UseTitleStyle, ill. a UseBorderStyle utasításokkal.

Ha az MWMButtons opciót használjuk mely maximalizáláskor invertálja a gombon levő "domborművet", akkor lehetőség nyílik arra, hogy bármelyik gombhoz hozzárendeljük ezen funkciót az MWMButton flaggel.

Íme egy példa a "domborműves gombokra", az ábra alatt a definíciókkal.

domborműves gomb

ButtonStyle 1 5 20x40@1 80x40@1 80x60@0 20x60@0 20x40@1
ButtonStyle 3 12 10x23@0 90x23@0 90x28@0 10x28@1 10x47@1 90x47@0 90x52@0 10x52@1 10x70@2 90x70@0 90x76@0 10x76@1
ButtonStyle 5 12 50x10@1 25x35@1 40x35@1 40x60@1 25x60@1 50x85@1 75x60@0 60x60@0 60x35@0 75x35@0 50x10@0 50x10@1
ButtonStyle 7 7 70x15@0 30x55@1 50x55@0 40x85@1 80x45@0 60x45@1 70x15@0
ButtonStyle 9 13 10x0@1 80x0@1 80x10@1 80x80@0 0x80@0 0x60@1 10x65@1 70x65@0 70x0@0 55x0@1 55x10@1 55x55@0 10x55@0
ButtonStyle 2 11 85x15@0 85x75@0 25x75@0 65x75@0 65x85@0 10x85@0 10x55@1 25x55@1 25x75@1 25x15@1 85x15@1
ButtonStyle 4 16 60x40@1 60x80@0 15x80@0 15x40@1 60x40@1 40x40@1 40x25@1 75x25@1 75x60@0 60x60@0 75x60@0 75x40@0 85x40@0 85x15@0 60x15@1 60x25@1
ButtonStyle 6 16 20x20@1 30x20@1 50x40@1 70x20@1 80x20@1 80x30@0 60x50@0 80x80@0 70x80@0 50x60@0 30x80@0 20x80@0 20x70@0 40x50@1 20x30@0 20x20@1
ButtonStyle 8 4 50x35@1 65x65@0 35x65@0 50x35@1
ButtonStyle 0 4 50x65@1 35x35@1 65x35@1 50x65@0
A következő példa az ikonos nyomógombok definiálását hivatott illusztrálni.

ikonos gomb

ButtonStyle 1 Pixmap mini-sys3d-full.xpm
ButtonStyle 3 Pixmap mini-hbars-full.xpm
ButtonStyle 2 Pixmap mini-exp-windows-full.xpm
ButtonStyle 4 Pixmap mini-shrink-windows-full.xpm
ButtonStyle 6 Pixmap mini-stylized-x-full.xpm
(Ezen ikonok megtalálhatók egyébként a RedHat-féle TheNextLevel csomagban.)

Menük, függvények

Az fvwm1-től eltérően a menüket az AddToMenu paranccsal hozhatjuk létre, az egyes menüpontok hozzáadása a "+" kezdetű sorokban történik. Ha ezek elfogynak,a menü felépítettnek tekinthető, tehát nincs külön "menüvége" szimbólum, mint a régi változatnál (End Popup). Újdonság az is, hogy a menüket meg is lehet szüntetni a DestroyMenu kulcsszóval, majd akár újra is lehet építeni egy új AddToMenu-vel, így az ablakkezelő újraindítása nélkül is változtathatunk konfigurációnkon. Következzék a példa, amelyben létrehozzuk a főmenüt, hozzáadunk néhány gyakrabban használatos programot, egy új sort, majd almenüket a Popup segítségével. A címeket körülölelő idézőjelek között "%"-ok közé beszúrva állíthatjuk be, hogy milyen ikont szeretnénk ahhoz a ponthoz rendelni.
AddToMenu RootMenu 	"Főmenü"	Title
+	"%mini-sh.xpm%Xterm"         	Exec exec xterm -sb -sl 2048 -ls -font 7x14 -ms red -s -rw &
+	"%mini-calc.xpm%Számológép"    	Exec  xcalc &
+       "%mini.xman.xpm%Manuál"         Exec  xman &
+			""		Nop
+ 	"%mini-run.xpm%Alkalmazások"  	Popup Applications
+	
+	"%mini.exit.xpm%Kilépés"	Popup Quit-Verify
Függvényeket hasonló módon az AddToFunc kulcsszóval definiálhatunk:
AddToFunc Move-or-Raise         "I" Raise
+                               "M" Move
+                               "D" Lower
A függvényt hozzárendelhetjük mondjuk a bal egérgombhoz (persze hozzárendelhetnénk egy billentyűzetkombinációhoz, vagy egy menü egy pontjához is):
Mouse 1 TS      A       Move-or-Raise
Tehát, ha a fejlécre, vagy a keretre kattintunk az egérrel, akkor az síma kattintás esetén felülre helyezi az ablakot ("C", vagy jelen esetben egy általános kiváltó esemény, "I"), ha lenyomva tartjuk az egérgombot, akkor mozgatásra nyílik lehetőségünk ("M"), kettős kattintás esetében ("D") ablakunk legalulra kerül. Egy függvényt is meg lehet szüntetni menetközben a DestroyFunc parancs segítségével.

Ebből az AddTo kategóriából még egy funkciót mindenképpen érdemes még megemlíteni, ez az AddToDecor/DestroyDecor páros, mellyel a különféle stílusjegyeket összefoghatjuk egy név alá, ezáltal egyszerűbben tudunk egyedi beállításokat rendelni különféle alkalmazásainkhoz. A következő példában létrehozunk egy síma egyszerű keretet, amely ha aktív, mutatós, fémes hatású fejlécet kap, majd ezt a dekorációt hozzárendeljük az xterm-hez:

AddToDecor saját
+ TitleStyle ActiveUp (VGradient 64 gray80 gray10 -- flat) Inactive ( -- flat)
+ ButtonStyle All ActiveUp (-- flat) Inactive (-- flat) 
+ BorderStyle -- HiddenHandles NoInset
+ HilightColor white gray40
Style "saját" UseDecor saját, Color white/grey40, HandleWidth 5
Style "xterm" UseStyle saját

FvwmButtons

Az FvwmButtons modul segítségével egy nyomóbombokból álló ablakot helyezhetünk el képernyőnkön. A gombokra ikonokat rakhatunk, sőt más alkalmazásokat (pl. óra, xload, vagy éppen az FvwmPager) is beleintegrálhatunk. Ez elődhöz, a GoodStuff modulhoz képest természetesen van néhány újdonság, talán a legemlítésre méltóbb a Container, mellyel egy gombon belül helyezhetünk el további gombokat. A "Container" definiálását egy *FvwmButtons(End) sorral zárhatjuk le. A gombok természetesen 3D hatásúak, a mélységet a Frame utasítással szabályozhatjuk, ha negatív számot adunk meg, akkor a gomb be fog sűllyedni az ablak síkjához képest. A példában egy egyszerű modult hozunk létre egy FvwmPager-rel, két ikonnal, három kis, Container-ben elhelyezett gombbal. A maradék gombon belül az xload program fog futni.

*FvwmButtons(2x1 Swallow "FvwmPager" "FvwmPager 0 0")
*FvwmButtons(1x1, Container(Rows 3, Columns 1, Frame 1))
	*FvwmButtons(Title Move , Action Move)
	*FvwmButtons(Title Resize  , Action Resize )
	*FvwmButtons(Title Close    , Action Close)
*FvwmButtons(End)	
*FvwmButtons Quit           bomb_3d.xpm     Popup Quit-Verify
*FvwmButtons(1x1 Swallow (UseOld) XLoad 'Exec xload -nolabel &')
*FvwmButtons Lock		lock.xpm	 	Exec xlock -nolock -mode random +enablesaver &
Egy kicsivel összetettebb példa:

FvwmButtons példa


Megjegyezném meg, hogy az fvwm2-ben is használható már az fvwm95-ből ismeretes TaskBar a 2.0.45-ös verziótól kezdve. Ehhez csak annyit kell tennünk, hogy a ModulePath-nál be kell állítanunk azt az alkönyvtárat, ahol a TaskBar található (általában /usr/lib/X11/fvwm95-2/). Egyébként a megjelenést tekintve is szinte egy az egyben "emuláható" az fvwm95 az fvwm2-n belül is, sőt menetközben pl. az AddToDecor/DestroyDecor segítségével váltogathatunk is mondjuk Win95 és Motif stílus között.


Végül, de nem utolsósorban két fvwm2rc példa:

fvwm2rc, elsősorban 16 bpp-re ajánlott
fvwm2rc, használható 8 bpp esetében is.


last modification:


Copyright: Kégl Tamás (monty) 1997