Information Technology | UNIX / Linux » Az X-Window rendszerről

Datasheet

Year, pagecount:2006, 5 page(s)

Language:Hungarian

Downloads:139

Uploaded:October 03, 2009

Size:58 KB

Institution:
-

Comments:

Attachment:-

Download in PDF:Please log in!



Comments

11110 SilverKL January 18, 2011
  Szerintem nagyon jó leírás az X-Window rendszerről. Nem sok ilyet találni manapság...

Content extract

Az XWindow rendszerről 1. Az XWindow rendszer feladata, működési elve, a kiszolgáló szerepe A TCP-re épül az XWindow hálózatorientált ablakozó rendszer is, mely szintén az ügyfél-kiszolgáló modell szerint működik. Az ügyfélprogramok az ablakokat igénybe vevő folyamatok, a kiszolgálók pedig az ablakokat szolgáltató programok. A kiszolgálók ún. eseményeket jeleznek az ügyfeleknek (pl egérmozgatás, egérgomb megnyomása, billentyűleütés, kitakarás). Ezek az események vezérlik az XWindow ügyfélprogram futását. A UNIX grafikus kezelői felületei az XWindow rendszeren alapulnak, de még nem egészen egységesek. Az X-terminálok, amelyek ma már visszaszorulóban vannak, kizárólag ablakok szolgáltatására (valamint a billentyűzet és az egér kezelésére) alkalmas berendezések. Az XWindow  hálózatorientált grafikus felület  nincsenek operációs rendszer funkciói  socket-eken keresztül működik o UNIX domain-eken (gépen

belül) o Hálózaton  nem kell tudnia, hogy a helyi vagy távoli gépen fognak megjelenni az ablakok  X-protokoll Az X Window egy olyan rendszer, mely grafikus kimenettel rendelkező alkalmazások felhasználói felületének kialakítására ad lehetőséget. Célja olyan kommunikációs felület készítése volt, ami azonos kezelői felületet biztosít a hálózattal összekötött különböző oprendszereket futtató számítógépeken. Az X Window segítségével lehetőség van az alkalmazás és a kezelői felület szétválasztására. Míg a kezelői felület a helyi gépen futó X szerver jeleníti meg, addig az alkalmazás akár a távoli gépeken is futhat. Elsősorban UNIX rendszerek támogatják! Működésének jellemzője a kliens – szerver modell használata. A szerver egy grafikus terminálon futó folyamat, mely grafikus ki- és bemeneti lehetőséget biztosít a kliens folyamat számára. A szerver kezeli a grafikus munkahelyeket, részei: - képernyő

(ill. képernyők) - a billentyűzet (alfanumerikus bemeneti eszköz) - egy grafikus bemeneti eszköz. A kliens egy grafikus be-/kimenetet igénylő (általában interaktív) folyamat. 2. Miért eseményvezérelt az XWindow rendszer? Az X ügyfél nem aktívan vezérli a megjelenítést ill. a bevitelt, hanem a szolgáltatótól érkező eseményekre vár és azokat dolgozza fel. Az eseményeket részben a beviteli eszközök, részben az egyes ügyfelek által kiváltott tevékenységek okozhatnak. Különleges esemény a kitakarás (expose), ami azt jelenti, hogy az ablak valamely része felülre került. Az eseménnyel együtt az ügyfél megkapja azt a téglalap alakú területet, ahol az ablak láthatóvá vált. Amennyiben egyidejűleg az ablak több része vált láthatóvá, úgy az ügyfél egymás után több kitakarás eseményt kap, ezeket módjában áll egyszerre átvenni és így meghatározni az összes láthatóvá vált területet. Ezután az ügyfél köteles a

meghatározott területek – vagy az egész ablak tartalmát, ha az egyszerűbb – újra rajzolni. Az ügyfél program elindulásakor, az ablakai létrehozása után nem kezdhet el rögtön rajzolni, hiszen az aszinkron protokoll miatt lehet, hogy még meg sem jelent az ablak, lehet, hogy a szolgáltató még be se jegyezte azt a saját táblázataiba. Ha az ablak rajzolási parancsok fogadására kész, a szolgáltató kitakarás eseményt jelez, az ügyfél csak ekkor rajzolhat. 3. Az XWindow ablakkezelő (window manager) feladata  X ablakai egyszerűek, a rendszer nem definiálja, hogy egy felhasználó hogyan tudja az előtte lévő ablakokat manipulálni, kontrollálni: hogyan és hova lehet az ablakot a képernyőn elhelyezni vagy áthelyezni (move), méretét megváltoztatni (resize), lezárni (close), ikonná változtatni, hogy kevesebb helyet foglaljon.  Ügyfél program: a szolgáltatóval a szabványos X protokollon keresztül társalog, de speciális elbírálásban

részesül!  egy kiszolgálóhoz egyszerre csak egy tartozhat (az ablakozó rendszerhez), tehát ha már van aktív ablakkezelő, a szolgáltató a következő bejelentkezését visszautasítja.  a különböző ablakok, elhelyezését koordinálja, widget-ekkel látja el az ablakokat  az ügyfelek nemcsak azonos gépről származhatnak, hanem az engedélyezett host-okról (Xhost parancs)  X-kiszolgáló elindulásakor megadjuk a host-okat ahonnan ügyfél jöhet, ablakkezelő indítása  Az ügyfél több kiszolgálót is használhat  Az ablakkezelők piacán 2 termék verseng: Motif és OpenLook: mindketten csak az X protokollt használják, így bármelyik elindítható 4. Az XWindow programozásának szintjei, ezek jellemzői - alacsony szintű könyvtár: az Xlib könyvtár „éppen csak” elfedi a protokollt, szolgáltatásai, gyakran a hívásai közvetlenül megfeleltethetők az egyes üzeneteknek, legfeljebb kényelmesebb paraméterekkel rendelkeznek.

Mindenhol lefordíthatók, futtathatók. - Magas szintű könyvtárak: kialakultak az Xlib-re épülő könyvtárak, eszközkészletek (toolkit), amelyeka grafikus felhasználói felületek tipikus elemeinek – ikonok, menük, görgetés vezérlés (scroll bar), párbeszéd ablakok (dialog box), stb. programozását könnyítik meg Az objektum orientált programozás elveit próbálják követni, de ez nem sikerül mert C-t használ. A könyvtárokban használt osztályokat widget-nek (”ablakbigyó”) nevezik. A magas szintű könyvtárak támogatják speciális, a felhasználóknak szükséges bigyók létrehozását. Az X forrás tartalmaz ilyen könyvtárat is: Xt, X Toolkit A Widget Set ráépül az XToolkit – re, előre definiált. Motif és az Open Look: grafikailag különböznek. 5. Az XWindow ügyfélprogram felépítése, a main függvény feladatai Az ügyfél program felépítése: X kiszolgáló feladata: - ablakokat szolgáltat - kezeli az inputokat

(billentyűzet, egér) - eseményekről értesítést küld az ügyfélnek main függvény:  Felveszi a kapcsolatot (TCP alapú) a kiszolgálóval  Létrehozza az ügyfél „főablakát” (a kiszolgáló „gyökér-ablakának” leszármazottja)  Létrehoz widget-eket  Eseményeket rendel hozzájuk  Az eseményekhez CALLBACK függvényeket rendel  Belép az esemény hurokba (ha nem történik esemény, csak várakozik) 6. Az XWindow ügyfélprogram callback függvényei callback függvények: a hozzárendelés szerinti esemény hatására hatódnak végre  Esemény értesítő!!!  Widgethez rendeljük hozzá!  name-of-callback(w, client-data, call-data) o w – widget azonosítója o client-data – amikor a CALLBACK-et megadjuk, a kliens által megadott adat o call-data – a toolkit ebben adja meg, hogy miért hívódik meg  CB hozzárendelése (widget-hez) o XTAddCallback(wname-of CB) 7. Az XWindow kiszolgáló-oldali erőforrásai /A kiszolgáló

egy helyi gépen futó program, ami a grafikus felületet biztosítja, valamint a helyi hardver (monitor, billentyűzet, egér) kezeléséért felelős. A működését speciális hardver architektúrával, gyors grafikus processzorral gyorsítják./ Graphic Context: „Toll” definálása XCreateGC: Paraméterek           display o kando:0.0 o xterm5:0.0 drawable (ablak vagy pixmap) ValueMask mely mezőket akarjuk tényleg beállítani az XGCValues-ben XGCValues : alapértelmezett funkció GXCopy (felülírás) o GXClear (törlés) o GX and (új és régi) o új and nor régi o nem új és régi előtér háttér vonalvastagság vonalstílus bitsík maszk vágási bittérkép 8. Az XWindow ablakok és pixmap-ek jellemzői Pixmap: Ebbe is lehet rajzolni, de amit ide rajzolunk, az nem jelenik meg a képernyőn, viszont át lehet másolni ablakba. Ennek is van színmélysége A grafikákat érdemes pixmap-ben létrehozni és onnan expose esetén

átmásolni. Ablakok: Mindegyiknek van szülője, kivéve a kiszolgáló root ablakát. Van színmélysége Ablakok jellemzői  szélesség pixel-ben  magasság  saját koordináta rendszer (0,0) az ablak bal felső sarkához a koordináta értékeket pixel-ekben adjuk meg  az ablak keretének vastagsága (akár 0, akár nem)  az ablak origójának koordinátái a szülő ablak koordinátarendszerében.  A megjelenő ablak lehet nagyobb a szülőjénél, de a kilógó rész nem jelenik meg. A vágás automatikusan megtörténik Ablak attributtumok  Háttér, keret kitöltési  „bit gravity”  „window gravity”  milyen események figyelése / jelzése engedélyezett  milyen legyen az egérmutató alakja az ablak belsejében Ablak létrehozása  „feltenni a képernyőre” (Map) 9. Az XWindow színkezelésének alapjai A színek a szolgáltató által kezelt erőforrások, az ügyfelek nekik megfelelő paraméterű színeket igényelnek, az

igényekhez a szolgáltató „közel álló”, lehetséges színeket rendel, amelyet az ügyfél a következő rajzoló műveleteinél használhat (logikai színkezelés). Szükség esetén – ha elfogytak a színek – a szolgáltató úgy dönthet, hogy egy – egy ablak számára a teljes színhozzárendelés táblát újra definiálhatja. Ilyenkor az egér mozgatásával, különböző ablakokba belépéssel az egész képernyő színezése megváltozhat úgy, hogy az aktuális ablak színei helyesek, ám a többieké megváltozhatnak. Lekérdezhető paraméterek: az ügyfelek a megjelenítendő eszköz jobb kihasználása végett fontosabb paramétereit, pl.: - a képelemek X és Y irányú számát - a képernyő fizikai méretét - az egyszerre megjeleníthető színek számát Lekérdezhetik és ezt a program működése során figyelembe, vehetik. A színek használatát palettázással támogatja. A kliens egy 128 elemű paletta színeit definiálhatja a szerver által

biztosított színtartományban, ami széles. Előnye, hogy egy palettaszín definiálása után a kliens egy 8bites azonosítóval hivatkozhat egy színre, mely szín ábrázolása a szerver 16,24 vagy akár 32 bitet is használhat. A paletta színein az azonos képernyőn futó alkalmazások osztoznak. Ha egy alkalmazásnak nem elegendő a palettában megmaradt színek száma, kérheti a szervert, hogy biztosítson számára egy külön palettát. Ez szembetűnő, mert ekkor a képernyő színei megváltoznak attól függően, hogy az önálló palettát használó vagy valamelyik másik, közös palettát használó folyamat birtokolja-e az input focust. Különféle kiépítettségű kiszolgálóban is működik A grafikus megjelenítés bitsíkjainak száma (pl. 8 bitnél 256 féle szín „color cella”  egy színcella RGB  minden színcellához megadható RGB komponens max 16 bites Szín definiálása  eszközfüggő (egy-egy szín egy-egy hexa számjegy) o #RGB o

#RRGGBB  eszközfüggetlen rgb.txt file  milyen színhez milyen értéket kell alkalmazni a monitoron