FvwmEgoTrip

frankó a balhé: múlt héten elkezdődött a vizsgaidőszak, ennek örömére nem is járok be dolgozni, hanem inkább itthon ütöm a billentyűzetet. András épp a szemét fekszi el, meg úgy egyáltalán, elég viccesen alszik.. az utóbbi pár napban ugyan nem tanultam, de ez már sokáig nem tartható. tehát fel is írom magamnak, hogyaszongya "holnap már tanulni is kéne". így ni.

akkor hát mivel is telt el az egy hét? őhhát mondjuk volt egy zéhám ugyan, de arra csak két napot tanultam. a maradék időben pedig linuxot hakkoltam. nézzük, mit sikerült:

-csekkoltam a X.org Composite-ot, de nem vált be, max majd ha nagyon fancy screenshotot akarok csinálni, akkor. ezon kívül leginkább súlyosan belassítja a harminckét megás nvidia tnt2 kártyinkát, amit még LGee-vel bótoltam tavaly. (neki üzenem is egyúttal, hogy valószínűleg az alaplap volt a hibás, mert először full tönkrement a memória, aztán próba-szerencse vettem egy új alaplapot, - igaz a legkínaibbat ami volt, a hangerőt is csak szoftveres mixeléssel lehet állítani, de nem érdekel az alsa, most ez így működik és kész - és jó lett ismét)

-rájöttem, hogy a composite-tal hülyén néz ki az mplayer vo=xv-vel, ami egyébként mint kiderült, csak 12bpp; tehát a kompozit elb.ssza a dógot, mert belenyúlna az xv belsejű ablakba, ami flickert okoz, meg ha viewport-ot (page @ fvwm) váltok, akkor is mocsokul néz ki. marad tehát a vo=x11, de az meg azért rossz, mert kicsi, a szoftveres zoom meg ugye lassú. ki van ez találva, kérem.

-fejembe vettem, hogy nekem olyan keretje legyen az ablakaimnak, ami 2 pixel vastag, a külső része sötétebb, a belső része meg világosabb. az ám, de régebben is túrtam a manualt, ilyet nem lehetett beállítani - még ircen is utánakérdeztem, senki emberfia nem tudta, hogy miként lehet ilyen csodálatos beállítást eszközölni. a rézangyalát - mondtam - s nem telt belé pár szemvillanás, már könyékig gázoltam a kódtengerben -- ami egyébként mestermunka. fvwm workers are craftsmen, megmondták már régen, és igazuk van; bárcsak az elődöm ilyen kódot hagyott volna rám, dehát az élet nem habostorta. tehát már azon filóztam, hogy milyen pixmapokkal lehetne varázsolni extra funkcionalitásokat, amikor találtam egy nagyon egyszerű megoldást:

fvwm-2.5.16/fvwm/border.c:
-static const char brgc[] = { 1, 1, 2, 0x7f, 0, 0, 3 };
+static const char brgc[] = { 1, 0, 2, 0x7f, 0, 1, 3 };

sytle * MWMBorders-el kell használni, max 2pixel-es borderhez, mert ez csak egy ilyen quick and dirty. majd egyszer ha lesz időm, tán írok egy patchet a borderekhez, ami ugyanezt pixmapekkel csinálja, a mostani tiledpixmap-es borderek egyébként sem igazán konfigurálhatóak...

-olvasgattam az fvwm.lair.be-s fórumokat, és találtam egy nagyszerű patchet, ami lekerekíti a jól a már dekorált ablakok sarkait. kicsit kiegészítettem, hogy minden sarokra külön be lehessen állítani, hogy ott le van-e kerekítve, valamint az eddigi r=5px-es lekerekítésből csináltam egy 1px-es lekerekítést, tehát konkrétan 1px-et vág le a saroknál. észrevehető a különbség, szoftosabb az ablak. alpha blend-et nem lehet csinálni egyelőre, ezért a 2px-es levágás elég bután néz ki, a legközelebbi normális az az 5px-es ív, de ott már az íven belülre is kell sötétebb pixeleket rakni, hogy jól nézzen ki - 2px borderrel elég elfogadható kinézetet lehet kreálni 5px-es lekerekítéshez ha már nincs alpha blend. pihe-puha és szép tiszta ablakok, ez a cél.
most ilyen:

ezen kívül találtam egy jó font shadow beállítást is, like "shadow=1 SW S SE:xft:...", überhepi.

-szétpattintottam a konfigomat sok kis részre, mert így könnyebb őket borzolni, és egyúttal különvettem a témát a segédfüggvényektől, így rémesen egyszerű lett a kinézetet megváltoztatni. vannak ilyenek pl.:


 AddToFunc   Button
  + I PipeRead 'for s in $2;\
                do      state=`echo ${s} | tr [A-Z] [a-z]`;\
                        echo "ButtonStyle $0 ${s}\
                         Pixmap ./$[F:TITLEBUTTON_DIR]/$1$[F:SEPARATOR]${state}.png\
                         -- UseTitleStyle Flat";\
                done'

ha azt írom, hogy:

 SetEnv bstates "ActiveUp ActiveDown Inactive"
 Button 2  "maximize" "$[bstates]"
 Button 4  "close"    "$[bstates]"
 Button 6  "right"    "$[bstates]"
 Button 8  "left"     "$[bstates]"
 Button 0  "iconify"  "$[bstates]"

az azért mégis szebb, mint a szerkeszthetetlen, kikommentezhetetlen


 ButtonStyle 0  Active          (Pixmap $./icons/iconify_active.png) \
                Inactive        (Pixmap $./icons/iconify_inactive.png) \
                AllDown         (Pixmap $./icons/iconify_active_down.png)
 ButtonStyle 2  Active          (Pixmap $./icons/maximize_active.png) \
                Inactive        (Pixmap $./icons/maximize_inactive.png) \
                AllDown         (Pixmap $./icons/maximize_active_down.png)
 ButtonStyle 4  Active          (Pixmap $./icons/close_active.png) \
                Inactive        (Pixmap $./icons/close_inactive.png) \
                AllDown         (Pixmap $./icons/close_active_down.png)
 ButtonStyle 6  Active          (Pixmap $./icons/right_active.png) \
                Inactive        (Pixmap $./icons/right_inactive.png) \
                AllDown         (Pixmap $./icons/right_active_down.png)
 ButtonStyle 8  Active          (Pixmap $./icons/left_active.png) \
                Inactive        (Pixmap $./icons/left_inactive.png) \
                AllDown         (Pixmap $./icons/left_active_down.png)

 ButtonStyle    -- UseTitleStyle Flat

ugyebár. szólni kell Maciej-nek (fvwm-crystal author, ő az oka, hogy fvwm-et használok), hogy írjon a crystalba is helper func-okat, mert az jó. eh, lustavagyok levelezni..

-ezután jól megsymlinkeltem a .fvwm-et fvwm/.fvwm-re, azt szemetelje tele pipe-okkal, meg FvwmConsole-history-val, a saját konfigomat meg .fvwm/config read-eli, az meg tovább, readeli, teljesen jól. a funkcionális programnyelvek jutnak eszembe a konfigfile-ról, talán nem véletlenül..

-szerkesztgettem egérkurzorokat is:

egyelőre elég alap, de nem találtam olyan témát, ami tetszett volna, mindegyik valahogy túl van reagálva, vagy túl nagy, vagy túl kicsi, vagy mittudomén. ez meg majdnem mind az X-es core kurzor, dropshadow-val.
azért annyira nem egységes... ld. left_ptr vs. fleur, de legalább szép.

-végre csináltam egy swallow-os fvwmbuttonos csodát, amiben van egy - egyelőre - xclock, egy pager, meg egy E feliratú gomb, mondjuk nem sokat használom, de az edgeresistance-t állítja, ugyanúgy, mint a Ctrl+Shift_L, ami tök jó kombináció, tök jól rá lehet csapni.

-kiderítettem, hogy miért nem megy az, hogy keypad-on modifierek nélkül nyomom az 1/2/3-at akkor a 0/1/2-es page-re ugorjon (most épp 3x1 page egy desk nálam). Shifttel persze ment, de anélkül nem. Erre valahol találtam egy megjegyzést, miszerint az xev nevű dologgal nagyonkönnyű kitalálni a key-ek neveit. nem kell többet a keysym.h-ból se puskázni, plusz nem kell filózni, hogy akkorezmost ismétel, vagy nem, meg ilyenek. például megtudtam, hogy a jobboldali Win-gombot Multi_key-nek hívják, és ismétel, a mellette levőt Menu-nek, az AltGr-t Mode_switch-nek. frankó. csomó új kombót tudok majd pattintani.

-találtam egy olyat, hogy MwmDecor[Max|...], amivel ilyen toggle buttonokat lehet csinálni, tök logikus lett a fullscreen maximalizálás, olyankor eltűnik a border, meg nem lehet resize-olni, csak mozgatni. remek.

-és végül csináltam egy nifty schedule-os dolgot, amivel ha az egyik page-n indítok el egy lassan induló alkalmazást, akkor közben navigálhatok bárhová, ő ott fog indulni. még egy kicsit játszottam, hogy egy kis csalással fullscreen-en induljon az ffx meg az opera, így mára elegem is lett az egészből :)

különben is nagy szopás ez a linux, de még pár év, és lehet, hogy sikerül minden beállítást úgy összekalapálnom, hogy hatékony, egységes, és intuitív desktopom legyen. ez azért jó lenne. egyelőre a kb. a hatékonyság az, ami adott. ez van.

na eof.
imp

Hozzászólások

Hali,

Sajnalom az alaplapot, kar, hogy nem korabban derult ki, visszavettem volna...