Praca w środowisku X Window

- Co właściwie znaczy słowo Ubuntu?
- W starym afrykańskim narzeczu "Nie umiem zainstalować Debiana"...
                              /* nadesłał: Piotr Konsek, IS 2012 */

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: X.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.:
      -display a.b.c.d:x:y.z
      -geometry WxH+XO+YO
      -fn "*courier*"
  • 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ć:
 -foundry-family-weight-slant-set_width-style-pixels-points-horizdpi-vertdpi-spacing-avwidth-charset-encoding

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:

ĆWICZENIA

1 Co to jest DISPLAY

  • wyświetlić wartość zmiennej środowiskowej DISPLAY
  • z jakich części się składa?

2 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!)

3 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

4 Clipboard

Przećwiczyć wbudowany mechanizm „schowka”:

  • zaznaczyć tekst w wybranym oknie tekstowym przy pomocy LMB
  • wkleić do innego okna tekstowego przez MMB

5 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

6 Kolory

  • wyświetlić przez xcolors dostępne kolory
  • przez program xcolorsel wybrać kolor/y
  • uruchomić xterm z wybranymi kolorami (przez parametry linii poleceń)

7 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)

8 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.

9 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

10 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ą?

11 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