Az X használata elsőre megdöbbentő lehet azok számára, akik olyan más grafikus környezetekben járatosak, mint például a Microsoft® Windows® vagy a Mac OS®.
Míg az X minden komponensének részleteit és azok kapcsolatát nem szükséges megérteni a használatukhoz, néhány alapvető ismeret velük kapcsolatban elősegíti kiaknázni az X erősségeit.
Az X ugyan nem az első UNIX®-ra íródott ablakozó rendszer, de fajtáját tekintve a legnépszerűbb. Az X eredeti fejlesztőcsapata az X előtt egy másik ablakozó rendszeren dolgozott, aminek a neve “W” (mint “Window”, azaz ablak) volt. Az X pedig az arab ábécében pontosan ezt a betűt követi.
Az X-et hívhatjuk “X”-nek, “X Window System”-nek, és még sok más néven. Előfordulhat azonban, hogy az “X Windows” elnevezés sértő lehet egyes emberek számára. Erről többet a X(7) man oldalon tudhatunk meg többet.
Az X-et már az elejétől kezdve hálózatközpontúnak tervezték, és ezért az ún. “kliens-szerver” modellt használja.
Az X modelljében az “X szerver” egy olyan számítógépen fut, amelyhez billentyűzetet, monitort és egeret csatlakoztattunk. A szerver feladatai között találjuk a megjelenítés irányítását az egérről és a billentyűzetről, valamint a többi bemeneti és kimeneti eszközről érkező adatok feldolgozását és így tovább (például a digitális táblák is használhatóak beviteli eszközként, illetve egy projektor is lehet megjelenítő). Mindegyik X alkalmazás (mint például az XTerm vagy a Netscape®) egy kliens. A kliens üzeneteket küld a szervernek, például “Kérlek, rajzolj egy ablakot ezekre a koordinátákra”, és a szerver pedig olyan üzeneteket küld, mint például “A felhasználó az OK gombra kattintott”.
Az otthoni vagy a kisebb irodai környezetben az X szerver és az X kliensek általában ugyanazon a számítógépen futnak. Emellett azonban nagyon is lehetséges, hogy az X szerver egy kevésbé erős gépen fusson, miközben az X alkalmazások (a kliensek) az irodát kiszolgáló erősebb és drágább gépen fussanak. Egy ilyen konfigurációban az X kliensei és szerverei közti kommunikáció a hálózaton keresztül zajlik.
Jegyezzük meg, hogy az X szerver az a számítógép, ahol a monitor és a billentyűzet található, az X kliensek pedig azok a programok, amelyek az ablakokat jelenítik meg.
A protokollban semmi sem várja el, hogy a kliens és a szerver ugyanazon az operációs rendszeren vagy éppen ugyanolyan típusú számítógépen fusson. Ezért akár Microsoft Windows-on vagy Apple® Mac OS-en is indíthatunk X szervert, és számos különböző szabad valamint kereskedelmi alkalmazás képes pontosan erre.
Az X kialakításának filozófiája leginkább a UNIX kialakításának filozófiájához hasonlítható, vagyis “eszközöket, ne szabályokat”. Ez tehát azt jelenti, hogy az X nem köti meg, miként oldjuk meg vele a feladatokat. Helyette különféle eszközöket ad a felhasználó kezébe, és onnantól a saját felelőssége eldönteni, hogyan használja ki ezeket.
Ez a filozófia az X-ben egészen addig terjed, hogy nem rögzíti, hogyan nézzenek ki a képernyőn megjelenő ablakok, miként kell ezeket mozgatni az egérrel, milyen billentyűk lenyomásával közlekedhetünk az ablakok között (ami a Microsoft Windows esetén az Alt+Tab), hogyan nézzen ki az ablakok címsora, a bezárás funkciónak legyen-e rajtuk gombja és így tovább.
Ehelyett az X az összes ezzel járó felelősséget átadja az “ablakkezelő” (window manager) részére. Tucatnyi ilyen ablakkezelőt találhatunk az X-hez: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker és még sok más. Ezen ablakkezelők mindegyike más és más kinézetet és hangulatot kínál fel: némelyikük támogatja a “virtuális munkaasztalok” (virtual desktop) létrehozását; néhányuk pedig megengedi, hogy mi magunk állítsuk be az asztal irányításához használt gombkombinációkat; köztük találhatunk olyat is, amelynek van “Start” gombja vagy ehhez hasonló eszköze; némelyek közülük ismerik a “témákat”, aminek révén a kinézetük és hangulatuk teljesen megváltoztatható. Az említett ablakkezelők és társaik a Portgyűjtemény x11-wm kategóriájában érhetőek el.
Ráadásul a KDE és a GNOME munkakörnyezetek mindegyikének van saját integrált ablakkezelője.
Az egyes ablakkezelők mellesleg eltérő beállítási módszerrel rendelkeznek. Némelyikük kézzel összeállított konfigurációs állományt vár, mások pedig külön grafikus eszközöket tartalmaznak erre a feladatra is. Az egyikük (a Sawfish) konfigurációs állományát például a Lisp programozási nyelv egyik dialektuásban kell megírni.
Az irányítás átadása: Az ablakkezelő másik fontos feladata lekezelni, hogy az egérrel miként tudjuk átadni az ablakok között az irányítást, vagyis a fókuszt (focus policy). Minden ablakkezelő rendszerben el kell tudnunk valahogy dönteni, hogy a beérkező billentyűleütések melyik ablakhoz vándoroljanak, valamint az ilyen értelemben aktív ablakot valamilyen módon jeleznünk is kell.
Ennek egyik ismert módszere a “fókusz kattintásra” megoldás, amely modellt a Microsoft Windows rendszerekben találhatjuk meg. Itt az ablakok akkor válnak aktívvá, amikor rájuk kattintunk az egérrel.
Az X viszont nem kötelezi el magát egyik vezérlésátadási módszer mellett sem, helyette az ablakkezelő fogja majd eldönteni, melyik ablak birtokolja a fókuszt az adott pillanatban. A különböző ablakkezelők különböző fókuszvezérlési technikákat ismernek. Mindegyikük ismeri a kattintásos fókuszt, azonban a többségük emellett még sok más megoldást is felkínál.
A legnépszerűbb fókuszvezérlési elvek:
- A fókusz az egeret követi (focus-follows-mouse)
Az egérmutató alatt található ablak kapja meg fókuszt. Az érintett ablaknak nem kell feltétlenül az összes többi felett elhelyezkednie. Ilyenkor a fókuszt egyszerűen úgy vihetjük át egy másik ablakra, ha rámutatunk az egérrel, amihez még kattintanunk sem kell.
- Hanyag fókusz (sloppy-focus)
Ez az elv az előbbi apró kibővítése. Amikor a fókusz az egérmutatót követi, és az egeret a leghátsó ablakra (vagy a háttérre) visszük, akkor valójában egyik ablak sem birtokolja az irányítást, ezért a leütött billentyűk elvesznek. A hanyag fókusz használatával azonban az irányítás csak abban az esetben kerül át máshová, amikor egy másik ablakba lépünk be, nem pedig akkor, amikor a jelenlegiből lépünk ki.
- Fókusz kattintásra (click-to-focus)
Az aktív ablakot egy egérkattintással választjuk ki. Ilyenkor a kiválasztott ablak “felemelkedhet” és a többi előtt jelenhet meg. Ezt követően az összes irányítás ebbe az ablakba vándorol, még abban az esetben is, amikor egy másik ablakra visszük az egérmutatót.
Sok ablakkezelő ismer ezekből különböző variációikat, valamint rajtuk kívül más egyéb vezérlési elvet is. Ezzel kapcsolatban az adott ablakkezelő dokumentációjából deríthetünk ki a legtöbbet.
Az X megközelítése, vagyis az eszközök és nem a szabályok felsorakoztatása, kiterjed az egyes alkalmazásokban látható különféle widgetekre is.
A “widget” (window gadget, vagyis widget, de magyarul sok helyen a “mütyürke”) elnevezést azokra a felhasználói felületen megjelenő elemekre használjuk, amelyekkel valamilyen módon kapcsolatba léphetünk: kattinthatunk rájuk, “piszkálhatjuk” ezeket. Ilyenek többek közt a gombok, jelölőnégyzetek, rádiógombok, ikonok, listák és a többi. A Microsoft Windows nyelvén ezeket “vezérlőknek” (control) nevezzük.
A Microsoft Windows és az Apple Mac OS ezen a téren nagyon merev. Az alkalmazások fejlesztőinek gondoskodniuk kell róla, hogy a programjaik az elterjedt kinézetet és kialakítást kövessék. Az X viszont nem várja az egységes vezérlőeszközök vagy grafikai stílus használatát.
Ennek eredményeképpen az X cseppet sem kívánja meg az alkalmazásoktól, hogy közös kinézetben vagy viselkedésben osztozzanak. Természetesen léteznek népszerű eszközrendszerek és azoknak számos variációja is kialakult, beleértve az MIT Athenaját, a Motif®ot (amiről a Microsoft Windows eszközeit is mintázták, az összes ferde élet és a három szürkeárnyalatot), az OpenLookot és társaikat.
Napjaink X alkalmazásai a KDE fejlesztéséhez használt Qt, esetleg a GNOME-hoz használt GTK+ könyvtárból származó, korszerű kinézetű widgeteket tartalmaznak. Ebből a szempontból megfigyelhető egyfajta tendencia a grafikus UNIX-alkalmazások felépítésében, ami minden bizonnyal megkönnyíti a kezdő felhasználók tájékozódását.
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.