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ć:
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
-
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*"
Czcionki
XS udostępnia XC czcionki
spis źródeł czcionek: xset q
podanie adresu XFontSerwera:
xset fp+ tcp/hostname:port/cataloguelist
-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
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
2 XClients i Xterm
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”:
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:
xhost +costam.ia.agh.edu.pl
xhost +pcb424.b4
xhost +student.uci.agh.edu.pl
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
ssh -vX deathstar
ssh -vX charon
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