GTK témakészítés
A legtöbbünk számára korántsem mindegy, hogy milyen környezetben dolgozunk, szórakozunk, pihenünk. Ez nem csak a valóéletre igaz, hanem a számítógépek virtuális világára is, amit szerencsére a legtöbb esetben könnyedén módosíthatunk: elég felnézni a gnome-look.org -ra, és máris ezernyi ikon-, GTK-, stb. témát találunk, ezeket feltelepítjük, és máris kapunk egy szép asztalt.
A legtöbb felhasználó számára itt véget is ér a számítógép testreszabása, de maradunk páran, akik szeretnének mindent a legapróbb részletekig testre szabni (vagy csak egyszerűen kíváncsiak :)). Számunkra az a (szomorú?) sors jut, hogy GTKRC fájl(ok)at kell szerkeszteni. (a GTKRC fájl a GTK téma tulajdonságait tárolja, ikon-, compiz-, stb. témákat másként lehet létrehozni, módosítani).
Ez szép, de mi is az a GTK téma?
Huh ezt nehéz pontosan elmagyarázni, javaslom, hogy aki nincs tisztában a „GTK téma” jelentésével, az telepítsen fel pár ilyet, cserélgesse őket, és meg fogja érteni. De megpróbálom felvázolni: a GTK témák a rendszer alapvető kinézetét módosítják, a legtöbb programot is beleértve, elérve, hogy egy egységes külsőt kapjunk.
Csapjunk is bele a lecsóba!
Hozzunk létre a saját mappánkban (/home/felhasználóneved) egy .themes nevű mappát, ez fogja tartalmazni a GTK témánkat. Miután ltérehozod, nem fogod látni a mappát, ugyanis rejtett (ponttal kezdődik a neve). A Nézet menü – „rejtett fájlok megjelenítése” opcióval tudod láthatóvá tenni. Ebben a mappában létrehozunk egy újabb mappát, ami a témánk neve lesz, ezesetben nevezzük „MyTheme”-nek. Ez a mappa fogja tartalmazni a metacity, és a számunkra most fontosabb GTK táma fájljait.
Itt hozzunk létre egy „gtk-2.0” nevű mappát. Ebben lesznek a téma fájljai, egy gtkrc fájl, és pixmap témamotor esetén (majd elmagyarázom...) a képek. Szerintem nem sok ember él a Földön, aki a semmiből fel tud építeni egy összetettebb GTKRC fájlt, így mi sem erőltetjük a dolgot, hanem egy létező témafájlt módosítva jutunk el a megálmodott külsőhöz.
Az alap témafájlok itt találod meg: „/usr/share/themes”. Másoljunk be egy GTKRC fájlt (pl /usr/share/themes/Human/gtk-2.0/gtkrc – a későbbiekben ez alapján megyek tovább) a saját témánk mappájába (/home/neved/.themes/témaneve/gtk-2.0). Most már van egy saját GTK témánk, amit szépen be is állítunk: Rendszer – Beálíltások – Megjelenés. Itt a Testreszabás gombra klikkelve megkeressük a saját témánkat, majd bezárjuk az ablakot. Jó esetben megváltozik az asztalunk külseje (ill. ha a Human téma volt eddig beállítva, nem történik semmi).
Kezdődhet az érdemi munka: nyissuk meg az immár sajátunknak tekinthető gtkrc fájlt (/home/neved/.themes/témád/gtk-2.0/gtkrc). Ilyesztő lehet elsőre a látvány, de ha megértjük a működését, rájövünk, hogy nehéz lenne jobbra csinálni (kivéve talán az első nem kommentként működő sort, de erről minjárt beszélek).
A fájl legelején találunk pár sort, aminek az elején egy # (kettőskereszt) található, ezek a sorok kommentek, nem befolyásolják a téma működését, csupán útbaigazítást, információt adnak. És akkor nézzük azt a bizonyos első sort, ami nem kommentként működik: „gtk_color_scheme:...” ez teljes egésszében elhagyható (én el is szoktam hagyni), a későbbiekben névvel nevezett színek értékeit adhatjuk meg \n-el elválasztva (\n = ENTER). A Human téma esetében hexa formában vannak megadva a színek, hogy még egyszerűbb legyen a dolgunk. Ezt a sort egyelőre ne töröljük ki, hanem menjünk tovább.
A következő sor néhány ikon méretét állítja:
gtk-icon-sizes = "panel-menu=24,24" #ikon mérete a panelon, ikon mérete a menükben (én el szoktam hagyni ezt is)
ami ezután jön, az egy kis magyarázatot igényel:
Megpróbálom érthetően elamgyarázni:
Vannak GTK elemek, ilyen pl a gomb, a panel, a címsor, a betűk, a görgetősáv, az ablakok háttere, stb., amelyeknek a külsejét külön külön be lehet állítani bizonyos értékek megadásával (max szélesség, max magasság, szín, stb.).
Tehát pl egy görgetősáv néhány adata:
szélesség: 15 pixel
nyilak látszanak?: igen
normál szín: szürke
szín, ha az egérrel kijelölöm a görgetőt: fehér
stb. stb. sok egyéb paramétert meg lehet adni.
Eddig szerintem érthető... ha mégse az, olvasd el még egyszer.
De az szép hosszú lista lenne, ha minden egyes elem összes paraméterét külön-külön megadnánk, ezért egy kicsit egyszerűsítettek a dolgunkon: csak stílusokat kell szerkeszteni: és hogy mi az a stílus?
Egy egyszerű példa: szeretnék a gomboknak, és a menüsornak ugyanolyan kinézetet adni, ígyhát létrehozok egy gomb-menüsor nevű stílust, aminek az adatai:
magasság: 20 pixel
alap szín: szürke
szín ha az egérrel kijelölöm: fehér
szín, ha nem lehet kijelölni: fekete
éa még sok egyéb adat...
később beállítom, hogy a gombok, és a menüsor is e téma alapján jelenjen meg. (aki ezt se érti, olvasson vissza, mert az alább levőket se fogja megérteni)
Így már minjárt csinosabb lesz a végeredmény, deh így is szép nagy lesz, ha mindent pöpecül be akarunk lőni... aki precíz munkát akar, az elég sok stílust létre fog hozni, és így létrehozva egy óriási, átláthatatlan fájlt. De ez is meg lett oldva:
Minden stílus (az elsőt kivéve) egy másik stílusból 'ered', így lesz fő stílus – stílusok, és alstílusok. Tudom, hogy ez így már igazán vad, de minjárt megértitek: tehát szeretnék egy stílust a gomboknak, és a címsornak, és egy ehhez nagyon hasonlót a görgetősávnak:
stílus gombok-menüsor
magasság: 20
alap szín: szürke
szín, ha kijelölöm: fehér
stb, stb, ami csak kell....
és most szeretnénk létrehozni egy stílust a görgetősávhoz, ami csak annyiban tér el, hogy a magasságot beállítjuk maxra, és megadjuk, hogy a nyilak látszódjanak:
stílus görgetősáv = gombok-menüsor #görgetősáv a gombok-menüsor alstílusa
magasság: max
nyilak látszanak? :igen
elég csak az eltérő adatokat megadni, a többi (pl ezesetben a színek) a másik stílusnak megfelelően fognak megjelenni (tehát a görgetősáv is szürke lesz, ha kijelöljük fehérré válik, stb.)
Tehát összefoglalva... a GTKRC fájl alapvető működése a következő: stílusokat hozunk létre, amelyekből további stílusokat eredeztetünk. Később minden GTK elemhez társítunk egy stílust.
Érdmes átnézni a gtkrc fájlt, hogy megnézzük, hogy is fest ez a gyakorlatban.
style "default" #alap stílus létrehozása (más nevet is adhatunk neki)
{
adat = 1 #értékek megadása egyenlőségjellel
adat = ...
}
style "valami" = "alap"
{
adat = 2
}
style "mégvalami" = "valami"
{
adat = 3
}
és a többi, és a többi …
lehet látni, hogy az egyes témákban szereplő értékek két kapcsoszárójel között helyezkednek el (altgr+B – altgr+N), és az átláthatóság érdekében bentebb lettek kezdve (TAB). Az értékadás mindig egyenlőségjellel történik, a stílusneveket idézőjelek közé írjuk.
A Human téma esetén több stílust is találunk, ami nincs társítva sehova (pl style "murrine-wide"), ezek automatikusan az elsőhöz társulnak.
Nem szeretnék belemenni a beállítások jelentésébe, ezt mindenki kísérletezze ki magának (vagy kérdezhettek konkrét dolgokat lentebb, kommentben). Rengeteg beállítási lehetőség van, ezek legtöbbjét megtaláljátok bármelyik téma default stílusában.
Társítás:
Nézzük, hogyan is társíthatjuk a stílusunkat az elemekhez...
de mi is ez?
Egyszerűen, amikor megadjuk, hogy melyik elemhez milyen stílus tartozik :)
Általában a társítás a gtkrc fájl végén van, de oda teszitek, ahova akarjátok (pl szokás a stílusok alá is tenni az adott stílushoz történő társításokat).
A legtöbb elemnek egyértelmű neve van, pl GtkVScrollbar, MenuBar, stb. Ezeket simán társítjuk a fájl végén.
A társítás módja (egy példán keresztül):
widget_class "*MenuItem*" style "button"
class "*MenuItem*" style "button"
Nem értem pontosan miért van szükség arra, hogy kétszer társítsunk, de így szokás (a felső sor önmagában is működik). Lehet látni, hogy az elem neve mellé tettem egy-egy csillagot, erre azért van szükség, mert az elemek pontos nevét nem ismerjük (egyszer megpróbáltam a forráskódból kikeresni, de nem jött össze), a csillag helyén bármi állhat. Magyarul ha a gnome talál olyan elemet, amiben szerepel a „MenuItem” szó, azt társítja. Nem baj, ha nem érted, úgyis ki fogod másolni valamelyik másik gtkrc fájlból :D
Viszont mint mindig, itt is vannak bonyolultabb helyzetek: vannak elemek, amelyeknek összetettebb neve van, pl a panel gombjainak neve, amelyben szerepel a „panel”, és a „button” szó is. Az elem neve valahogy így fest: Panel.*eHVBox.NetkTasklist.GtkToggleButton.
A példában látható mindkét társítás:
widget_class "*Button*" style "button"
class "*Button*" style "button"
widget_class "*Panel*" style "panel"
class "*Panel*" style "panel"
Itt mindig az alsó társítás a mérvadó, tehát ezesetben a panel gombjai a „panel' stílus alapján jelennek meg.
Aki idáig érti amit leírtam, az büszke lehet magára (a stílusomat ismerve csak gratulálni tudok nektek). A GTK téma készítés alapjait most már ismerjük... azonban egy fontos dolog még hiányzik: a gtk témamotorok használata, amelyek nagy mértékben javítanak a téma külsején (csicsa forevöh). A témamotoroknak köszönhetjük az átmeneteket, bizonyos témáknál az egészen látványos kettéosztott területeket, stb... Ebbe azonban nem mennék bele (talán egy másik bejegyzésben), mivel ezek beállítása mindig a motortól függ. Csak pár szót ejtenék a témába való beszúrásukról:
style "mystyle"
{
adat=1
adat2=99
engine "gtk-motor neve"
{
adat=67
adat2=346534
}
}
a példa azt hiszem mindent elárul, itt is kapcsoszárójelek között adjuk meg az adatokat, és idézőjelet használunk a megnevezéshez. Ha egy stílusban beállítunk egy témamotort, e stílus alstílusaiban is ugyanilyen beállításokkal szerepel (természetesen ezen is módosíthatunk), így elég az alap témában beállítani az engine-t (nem baj ha nem értitek).
A rendszer alapból tartalmaz néhány gtk motort, ezek: Murrine, Pixmap, ClearLooks. Ezek közül a Pixmap-et javaslom a leginkább, az összes többiben ugyanis van egy hiba: a kijelölt görgető színét nem lehet módosítani. Illetve azért is javasolom ezt, mert ez adja a legnagyobb szabadságot (mindent saját képfájlokkal szinezünk)... Ezeken kívül még megemlíteném az Xfce témamotort is, ami a Xubuntuban alapból telepítve van, Ubuntuhoz pedig a synapticból lehet telepíteni. A görgetők megjelenítése itt jó, viszont a címsorhoz nem lehet színmátmenetet adni (Xubuntuban lehet). Egy témában több gtk-engine is használható, de nem szokás.
Remélem sokak számára lesz hasznos ez a leírás... kritikát és kérdéseket kommentben lehet írni.
ui.: a profibbaknak lehet szemet szúrt ez a mondat:
"az elemek pontos nevét nem ismerjük (egyszer megpróbáltam a forráskódból kikeresni, de nem jött össze)" de nem akartam erre külön kitérni a leírásban.
a mondatot úgy értettem, hogy nem szokták a gtk elemek nevét teljesen kiírni, ebből következtetek arra, hogy nem csak én nem tudom ezeknek a nevét. Forráskód: az Xfce panel forráskódját töltöttem le, (biztos az én bénaságom) de nem találtam meg, hogy mi a panel gombjainak a neve. A leírásban szereplő példát úgy ismerem, hogy szépen minden karaktert kipróbáltam.
A leírás teljes egészében a saját tapasztalataim alapján készült, éppen ezért az elnevezések nem szakszerűek.
további szép estét