(Microsoft Powerpoint

(Microsoft Powerpoint

X window rendszer fogalmai UNIX rendszer felhasználói és • ő ő Kliens = a szolgáltatást igénybe vev . fejleszt i felülete (23-26. ea.) • Egy adott berendezés (gép) egyszerre elláthat szerver funkciókat is, és kliens programokat is futtathat. • ű ő Szeberényi Imre X szerver = az X display-t m ködtet , a BME IIT kliensek számára grafikus szolgáltatást <[email protected]> nyújtó program. M Ű E G Y T E M 1 7 8 2 UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 1 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 2 - X display = munkahely felépítése Történelem 1984: MIT fejlesztés (Athena project + DEC + mások). Kiindulás: Stanford University „W” rendszere 1986: 10.4 els ő széles körben hozzáférhet ő változat 1987: 11.1 új alapok, nincs kompatibilitás a 10-es változattal 1988: 11.2 X konzorcium alakul a kiadott sw. támogatására 1989: 11.3 1990: 11.4 viszonylag kiforrott változat 1991: 11.5 bővítések (font szerver) 1994: 11.6 bővítések (Kerberos) 1996: 11.6.3 bővítések (Web funkciók), X konzorc. felbomlik 1998: 11.6.4 bővítések (LBX),Open Group UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 3 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 4 - Történelem X szerver feladatai 2001: 11.6.6 hibajavítás, Xfree86 • Engedje meg több kliens egyidej ű 2004: 11.6.7.0 bővítések, X.Org hozzáférését a display-hez. 2005: 11.6.8.2 hibajavítások • 2005: 11.6.9,11.7.0 EXA, refactoring, imake Értelmezze a hálózati üzeneteket, amit a 2006: 11.7.1 11.7.1 AIGLX kliensek küldenek. 2007: 11.7.2,11.7.3 DTrace, RandR • A kezel ői inputot küldje el a kliens 2008: 11.7.4 PciRework programnak. 2009: 11.7.5 Multi-Pointer, XI2, • Nyújtson kétdimenziós rajzolási 2010: 11.7.6 IncputClass, udev 2012: 11.7.7 Multitouch, primitíveket. 2013: 11.7.8 UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 5 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 6 - 1 X szerver feladatai/2 X rendszer szoftver architektúrája • Kezeljen komplex adatstruktúrákat, mint pl. window, font, icon, cursor, grafikus kontextus stb, melyekre egyszer űen ID-vel lehet hivatkozni. • Tegyen lehet ővé elosztott feldolgozást (máshol számol, máshol jelenít meg). • Nyújtson eszközfüggetlen, de alacsonyszint ű grafikus felületet a kliens számára. UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 7 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 8 - Egyes komponensek szerepe Egyes komponensek szerepe/2 • Xlib : • X toolkit intrinsic: A legalacsonyabb szint ű X szolgáltatásokat Objektum orientált programozási felületet nyújtó felület. Az Xlib rutinjai a kliens biztosító objektum kezel ő rendszer, amely kéréseit az X protokoll el őírásainak mind az objektum típusokat, mind az megfelel ően a hálózati rétegen keresztül objektum példányokat tárolja és eljuttatják a szerverhez és fogadják a adminisztrálja. Segítségével a származtatás szerver üzeneteit. módszerével újabb objektumokat hozhatunk létre. Az alapobjektum a window (widget), amely adatokat és a rajtuk m űveleteket végz ő eljárásokat tartalmazza. UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 9 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 10 - Egyes komponensek szerepe/3 Egyes komponensek szerepe/4 • X toolkit: • Ablakkezel ő: Magasabb szint ű objektumkönyvtár, amely Ablakok mozgatása, méretezése, átfedések az intrinsic alapobjektumaira épül. és azok megsz űnésének kezelése. Rendszerint a toolkit segítségével valósítják Érdekesség: nem határozták meg el őre az meg az olyan adatszerkezeteket mint pl a ablakkezelési stratégiát (okok: majd menü, nyomógomb, edit box stb. (Widget, kialakul + politika). gadget) UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 11 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 12 - 2 Ablakok jelllemz ői Ablakok jelllemz ői/2 • Minden ablak gyerek ablak, kivéve a root • A bal fels ő sarok az origó, és az ablakon ablakot. belül a saját sarkához relatívak a • A gyerek csak az apukája területén látszik, koordináták, melyek pixelben értend ők. és csak onnan kaphat inputot. • Minden ablak saját attribútumokkal • Ugyanattól a szül őtől származó gyerekek rendelkezik (háttérszín, kurzor típusa, átfedhetik egymást. gravitáció, backing strore, eseménymaszk, ő • Inputot csak akkor kaphat, ha az input mozgathatóság, méretezhet ség stb.) fókusz nála van. • Minden ablak egy hierarchikus gyerek- szül ő kapcsolat része. UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 13 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 14 - Gyerek - szül ő kapcsolat X alkalmazás tervezése, m űködése • A display nem teljes egészében az alkalmazásé. • Az ablakok között átfedések lehetnek. Ezek megsz űnésekor az ott lev ő információt újra kell rajzolni. • Nem akkor, vagy nem csak akkor kell rajzolni amikor az információ el őáll a programban, hanem amikor a szerver (pontosabban az ablak kezel ő) azt kéri. UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 15 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 16 - X alkalmazás tervezése, m űködése/2 X alkalmazás felépítése • A programhoz aszinkron események • Inicializálás : érkeznek, amelyeket le kell kezelni. Kapacsolódás a szerverhez, window-k • A program működését események létrehozása, szerver er őforrások lefoglalása határozzák meg. A működés objektum és attribútumaik beállítása. szemléletet tükröz. Az objektumok az • Eseményhurok : ablakok, amelyek eseményekkel (üzenet) a programhoz érkez ő események kommunikálnak egymással. feldolgozása. UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 17 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 18 - 3 Kapcsolódás a szerverhez HOST:SERVER.SCR • HOST: • HOST:SERVER.SCR A szervert futtató számítógép hálózati alakú azonosító stringgel történik, amit azonosítója (név vagy cím). vagy explicit kap a megfelel ő Xlib rutin, vagy az explicit megadás hiányában a • SERVER: DISPLAY környezeti változóból veszi. Az adott hoston futó szerver azonosító száma (0. az els ő szerver). • SCR: A kívánt screen sorszáma (0. az els ő). • Például: bubuka.iit.bme.hu:0.0 UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 19 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 20 - X rendszer indítása X rendszer indítása/2 • Grafikus bejelentkezés – nincs teend ő • X szerver indítása (startx, xinit...) • Egyébként: • Kapcsolatfelvétel: – X szerver indítása – direkt – X alkalmazások indítása (kapcsolatfelvétel) • program –display a.b.c:0.1 • szerveroldali authentikáció (xauth) Helyi X Helyi – indirekt (XDMCP) szerver kliens • WM indítása: – Távoli X Távoli .xinitrc – szerver kliens .xsession UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 21 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 22 - .xsession példa X programok konfigurálása host=`hostname`; defaults=$HOME/.Xdefaults → resources=$HOME/.Xresources; hostdefaults=$defaults-$host • Közös toolkit közös szintaxis (–display, if [ -f $resources ]; then # betöltend ő attribútumok –geometry) xrdb -load $resources; fi if [ -f $defaults ]; then # hozzáf űzend ő attribútumok • Er őforrások tárolása a szerverben (xrdb) xrdb -merge $defaults; fi if [ -f $hostdefaults ]; then # Host-specifikus beállítások – ezt rendszerint a belépéskor lefutó script tölti xrdb -merge $hostdefaults; fi fel (ld. el őző dia). twm & # wm + néhány alkalmazás xclock -chime -bg green -geometry 100x80-0+0 & • Ajánlott feladat: xbiff -geometry 50x80-110+0 & xterm -geometry 80x24+0-0 & xterm exec xterm -title "Login Window" -geometry 80x24+10+10 -ls echo "xterm*background: yellow" | xrdb –merge xterm nem leválasztott exec UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 23 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 24 - 4 X környezet konfigurálása Cseréljük le a wm-t • .Xdefaults, .xinitrc, .xsession • Meg kell állítani a futó wm-t (ps, kill) – ekkor azonban rendszerint ki is léptet a rendszer, mert a • .mwmrc, .fvwmrc, .twmrc, ... .xinitrc vagy a .xsession úgy indította a wm-t hogy, ...... • xmodmap – Konfiguráljunk sajat .xinitrc-t, .xsession (vnc esetén .vnc/xstartup), melyben nem a wm indítása az utolsó • xhost parancs. (cp ~szebi/.xsession) • xrdb • Indítani kell egy új wm-t (twm, /usr/dt/bin/dtwm, fvwm2). (leválasztott process !!!) • app-defaults (/usr/X/lib/X11/app-defaults) • /usr/X/lib/X11/xdm/Xsession UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 25 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 26 - Üres X program Üres X program/2 #include <X11/Xlib.h> screen = DefaultScreen(display); #include <stdio.h> wMain = XCreateSimpleWindow(display, DefaultRootWindow(display), main(int argc, char *argv[]) { 0, 0, DisplayWidth(display,screen) / 2, Display *display; DisplayHeight(display, screen) / 2, Window wMain; WhitePixel(display, screen), int screen; WhitePixel(display, screen), XEvent event; BlackPixel(display, screen)); if ((display = XOpenDisplay(argc ? while(1) argv[1]: NULL)) == NULL) { XNextEvent(display, &event); fprintf(stderr, ”Can't open\n"); XCloseDisplay(display); exit(1); } nem éri el soha } UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 27 - UNIX alapok © BME-IIT Sz.I. 2012.11.21-30. - 28 - hello X program hello X program/2 #include <X11/Xlib.h> if ((display=XOpenDisplay(NULL)) == NULL) { #include <X11/Xutil.h> fprintf(stderr,"cannot connect"); exit( -1 ); #include <X11/Xos.h> } #include <stdio.h> screen = DefaultScreen( display ); #define FONT "fixed" if ((font_info=XLoadQueryFont(display, FONT)) == NULL) { #define PAD 1 fprintf(stderr," Cannot open font); exit(-1); #define BORDER 1 } char Hello[] = "Hello X Window"; fth = font_info->max_bounds.ascent + main(int argc, char *argv[]) font_info->max_bounds.descent; { xsh.flags = PPosition | PSize; Display *display; int screen; xsh.height = fth + 2 * PAD; Window wMain; GC gc; xsh.width = XTextWidth(font_info, Hello, sizeof(Hello)) + 2 * PAD; XFontStruct *font_info; XGCValues

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us