Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:unix:lab_xwindow [2019/06/27 15:50]
pl:dydaktyka:unix:lab_xwindow [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +====== Praca w środowisku X Window ======
 +<​code>​
 +- Co właściwie znaczy słowo Ubuntu?
 +- W starym afrykańskim narzeczu "Nie umiem zainstalować Debiana"​...
 +                              /* nadesłał: Piotr Konsek, IS 2012 */
 +</​code>​
  
 +===== DO_PRZYGOTOWANIA =====
 +
 +Samodzielnie należy przed tym laboratorium przygotować:​
 +
 +    * podstawy X Window z wykładu
 +    * przypomnieć sobie informacje o SSH
 +
 +===== WPROWADZENIE =====
 +
 +
 +
 +====  Cechy X====
 +
 +    * sieciowe środowisko rozproszone klient/​serwer
 +    * środowisko "​okienkowe
 +    * przenośne - niezależność od platformy sprzętowej i programowej
 +    * przezroczyste (ang. //​transparent//​) sieciowo
 +    * architektura klient/​serwer
 +    * architektura rozproszona (w sieci)
 +    * wsparcie dla budowy GUI w różnych warstwach
 +    * zapewnienie wysokopoziomowych usług dla aplikacji z GUI
 +    * różne implementacje:​ [[http://​www.x.org|X.org]],​ [[http://​xfree86.org/​|XFree86]]
 +
 +====  Sieciowe środowisko rozproszone klient/​serwer====
 +
 +    * serwer udostępnia zasoby: wyświetlacz (wyjście), sposoby wprowadzania danych (klawiatura,​ mysz, tablety, itp.), czcionki
 +    * klienty - aplikacje korzystające z wyświetlacza serwera
 +    * komunikacja pomiędzy X klientami (XC) i serwerami (XS) przez X Protokół
 +    * dostęp do XS jest autoryzowany
 +
 +====  Co to jest DISPLAY====
 +Z punktu widzenia XC i użytkownika,​ każdy XS udostępnia szereg DISPLAYs:
 +  hostname:​displaynumber.screennumber
 +Z DISPLAYem wiążą się też urządzenia wejściowe, np. klawiatura, mysz.
 +
 +
 +====  XClients i Xterm====
 +    * aplikacje wykorzystujące X do komunikacji z użytkownikiem,​ to XClients
 +    * XS udostępniają DISPLAY dla XC.
 +    * wszystkie XC mogą korzystać z usług X (czcionki, klawiatura, zasoby, itp.)
 +    * przy uruchamianiu przyjmują podobne argumenty, np.:
 +<​code>​
 +      -display a.b.c.d:​x:​y.z
 +      -geometry WxH+XO+YO
 +      -fn "​*courier*"​
 +</​code>​
 +    * uruchamianie powłok interaktywnych:​ ''​xterm''​ i pochodne, np. ''​rxvt''​.
 +
 +
 +
 +====  Czcionki====
 +    * XS udostępnia XC czcionki
 +    * spis źródeł czcionek: ''​xset q''​
 +    * podanie adresu XFontSerwera:​
 +
 +  xset fp+ tcp/​hostname:​port/​cataloguelist
 +
 +    * obsługiwane sa standardowo czcionki bitmapowe i wektorowe w kilku formatach
 +    * nazwa czcionki ma postać:
 +<​code>​ -foundry-family-weight-slant-set_width-style-pixels-points-horizdpi-vertdpi-spacing-avwidth-charset-encoding
 +</​code>​
 +
 +====  Kolory====
 +X zapewnia szereg możliwości podawania kolorów:
 +  rgb:<​red>/<​green>/<​blue>​
 +  <​red>,​ <​green>,​ <​blue>​ := h | hh | hhh | hhhh
 +  #RGB                      (4 bits each)
 +  #​RRGGBB ​                  (8 bits each)
 +  #​RRRRGGGGBBBB ​            (16 bits each)
 +  rgbi:<​red>/<​green>/<​blue>​
 +  zdefiniowane nazwy symbolicznej
 +
 +==== Klawiatura====
 +
 +    * X zapewnia uniwersalne metody dostępu do różnych klawiatur.
 +    * Sterowanie mapami klawiatury jest 2-poziomowe:​ kody klawiszy + symbole znaków
 +    * Do zarządzania:​ ''​xmodmap''​ ''​xkbsel''​
 +
 +==== Zasoby====
 +
 +    * X Resources służą do modyfikowania i konfigurowania środowiska pracy aplikacji
 +    * zarządzanie przez ''​xrdb''​ i ''​-xrm''​
 +    * przykłady:
 +      XTerm*cursorColor: ​ gold
 +      XTerm*scrollBar:​ on
 +      emacs*Geometry: ​ 80x65-0-0
 +      emacs*Background: ​ rgb:​5b/​76/​86
 +      emacs*Foreground: ​ white
 +      emacs*Font: ​ 6x10
 +
 +==== Windowmanager====
 +
 +    * X nie ingeruje w wygląd okna aplikacji
 +    * w szczególności nie obsługuje wyglądu elementów dekorujących okna
 +    * zajmują się tym specjalne klienty - windowmanagery
 +    * wm są niezależne od innych klientów,
 +    * zarządzają otwieranymi oknami, fokusem, komunikacją,​ dekoracjami okna
 +    * mają własny interfejs użytkownika
 +    * zarządzają podanym DISPLAYem
 +
 +==== Sesja====
 +
 +    * otwieranie na lokalnej maszynie: ''​xinit''​
 +    * otwieranie na zdalnym XS: ''​xdm'',​ (XDMCP)
 +    * istnieje wiele różnych implementacji poza xdm, np. wdm, gdm, kdm
 +    * zarządzaniem otwartą sesją może zajmować się ''​xsm''​
 +
 +
 +==== Bezpieczeństwo====
 +Istnieje kilka metod autoryzacji dostępu do XS:
 +    * Host Access
 +    * MIT-MAGIC-COOKIE-1
 +    * XDM-AUTHORIZATION-1
 +    * SUN-DES-1
 +    * MIT-KERBEROS-5
 +Zarządzanie przez ''​xauth''​ (ew. ''​xhost''​)
 +
 +==== X i SSH====
 +    * standardowe połączenia X są nieszyfrowane
 +    * SSH zapewnia tzw. X11 Forwarding
 +    * połączenia zdalnych XC są automatycznie przekazywane do XS przez szyfrowany kanał
 +    * jest do tego używany dynamicznie tworzony wirtualny DISPLAY
 +
 +==== Środowiska zintegrowane====
 +Środowiska typu desktop zapewniają wysoki poziom integracji pracujących w nich aplikacji od strony API i GUI, przykłady:
 +    * OpenWindows:​ http://​docs.sun.com/​app/​docs/​doc/​806-2901
 +    * CDE: http://​www.opengroup.org/​cde
 +    * Next/​Open/​GNUStep,​ http://​www.gnustep.org
 +    * XFce: http://​www.xfce.org
 +    * KDE: http://​www.kde.org
 +    * GNOME: http://​www.gnome.org
 +    * Enlightenment:​ http://​www.enlightenment.org
 +
 +===== ĆWICZENIA =====
 +
 +
 +==== -  Co to jest DISPLAY====
 +
 +    * wyświetlić wartość zmiennej środowiskowej DISPLAY
 +    * z jakich części się składa?
 +
 +==== -  XClients i Xterm====
 +
 +    * uruchomić ''​xterm''​
 +    * uruchomić ''​xclock''​
 +    * uruchomić ''​xeyes''​
 +    * uruchomić ''​xmessage "​tekst"''​
 +    * uruchamiać w.w. z różnymi wartościami parametr ''​geometry''​ (położenie i rozmiar!)
 +
 +==== -  Serwer i parametry====
 +
 +    * oglądnąć informacje o displayu (XS) ''​xdpyinfo''​
 +    * przeglądnąć listę klientów przez ''​xlsclients''​
 +    * oglądnąć informacje o wybranym oknie (kliencie) ''​xwininfo''​
 +    * oglądnąć informacje o wybranym oknie (kliencie) ''​xprop''​
 +    * prześledzić zdarzenia związane z klientem ''​xev''​
 +    * usunąć wybrany XC przez ''​xkill''​
 +
 +
 +
 +==== -  Clipboard====
 +Przećwiczyć wbudowany mechanizm "​schowka":​
 +   * zaznaczyć tekst w wybranym oknie tekstowym przy pomocy LMB
 +   * wkleić do innego okna tekstowego przez MMB
 +
 +==== -   ​Czcionki====
 +
 +    * wyświetlić przez ''​xset''​ ścieżkę dostępu do czcionek
 +    * wyświetlić przez ''​xlsfonts''​ dostępne czcionki
 +    * uruchomić ''​xfontsel'',​ nazwa wybranej czcionki jest zachowywana w schowku
 +    * uruchomić ''​xterm ''​z czcionką wybraną w.w. programem
 +    * przeprowadzić eksperymenty dla różnych czcionek i klientów
 +    * wyświetlić wybraną czcionkę przez ''​xfd''​
 +
 +==== -  Kolory====
 +
 +    * wyświetlić przez ''​xcolors''​ dostępne kolory
 +    * przez program ''​xcolorsel''​ wybrać kolor/y
 +    * uruchomić ''​xterm''​ z wybranymi kolorami (przez parametry linii poleceń)
 +
 +==== - Zasoby====
 +
 +    * zmienić wybrane zasoby ''​xterm''​
 +    * sprawdzić jakie zasoby opisują w.w. XC,
 +    * dopisać je do pliku //​.Xdefaults//​
 +    * dodać zmienione zasoby do XS przez ''​xrdb''​
 +    * sprawdzić wpływ na nowo uruchamiane instancje XC
 +    * powtórzyć ćwiczenie dla innych XC (np. ''​xedit''​)
 +
 +==== -  Windowmanager====
 +
 +    * przy uruchomionych kilku klientach zmieniać WM, np. poprzez menu Programs/​WindowManagers
 +    * jak zmiana wm wpływa na pracujące aplikacje?
 +    * w obrębie jednego wm zmieniać wygląd dekoracji (np. w IceWM: MenuThemes, w WMakerze: Workspace/​Appearance)
 +    * zmienić środowisko samego WM (WMaker: WindowManagers/​Modules/​Preferences,​ ew. WPrefs)
 +    * sprawdzić działanie wszystkich 3 klawiszy myszy na różnych obszarach, np. w root window, wewnąrz okna, na belce tytułowej, na krawędzi, na przyciskach.
 +
 +
 +
 +==== -  Bezpieczeństwo====
 +Przetestować podstawowy mechanizm autoryzacji:​
 +
 +    * wypisać listę hostów uprawnionych do otwierania okien na XS: ''​xhost''​
 +    * dopisać do listy hostów uprawnionych do otwierania okien na XS adres komputera na którym pracuje 2. osoba.
 +
 +      xhost +costam.ia.agh.edu.pl
 +      xhost +pcb424.b4
 +      xhost +student.uci.agh.edu.pl
 +
 +    * spróbować otworzyć okno xterm z ich terminala na swoim XS zadając wartość DISPLAY z linii poleceń
 +
 +      xterm -display pc100.ia.agh.edu.pl:​0.0
 +
 +    * w nowo otwartym oknie na 2. terminalu sprwadzić do kogo należy powłoka, np.: ''​whoami''​
 +    * UWAGA! powyższe nie będzie działało, jeżeli wszyscy są zalogowani przez XDM na jednym komputerze, np. charon! (wtedy przez ''​xhost''​ należałoby dodać adres/nazwe charona)
 +    * wyłączyć kontrolę dostępu ''​xhost +'',​ jaki jest efekt?
 +    * włączyć kontrolę dostępu ''​xhost -''​
 +    * jak widać powyższa metoda kontroli dostępu przez adresy IP jest ograniczona,​ bardziej zaawansowane są opisane na stronie podręcznika Xsecurity
 +    * dla zaawansowanych:​ skonfigurować dostęp przez ''​xauth''​
 +
 +
 +==== -  X i SSH====
 +
 +    * uruchomić przez SSH XClienty ze zdalnego serwera
 +    * prześledzić otwieranie sesji SSH:
 +
 +      ssh -vX deathstar
 +      ssh -vX charon
 +
 +    * jaki jest ustawiony na nim DISPLAY; dlaczego?
 +    * jak uruchomić zdalną aplikację x-ową?
 +
 +
 +==== - Sesja====
 +
 +    * stworzyć/​rozbudować plik //​~/​.xsession//​
 +    * dopisać uruchamianie dodatkowych klientów
 +    * wymusić uruchomienie zadanego wm, np. dopisując na końcu ''​wmaker''​ lub ''​icewm''​ -> Uwaga: należy najpierw sprawdzić, czy dany wm jest zainstalowany!
 +    * co się stanie, jeżeli się dopisze ''​exec icewm''?​ dopisać coś po tej linijce, jaka jest różnica?
 +    * o ile to możliwe z sesji failsafe uruchomić inne wm
 +    * standardowe wyjście błędów poleceń uruchamianym przez wm jest przekierowane do pliku //​.xsession-errors//​
pl/dydaktyka/unix/lab_xwindow.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0