|
|
— |
pl:dydaktyka:unix:lab_xwindow [2019/06/27 15:50] (aktualna) |
| ====== 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// |