System X Window
Zadanie na laboratorium
Zakres materiału
System X Window, serwer i klient systemu X Window, zarządcy okienek,
widgety, zasoby systemu X Window.
Wymagania wstępne
Przygotowanie: podstawowe pojęcia systemu X Window.
Przebieg ćwiczenia
- (Przygotowanie do wykonania ćwiczenia)
Przypomnij sobie wiadomości o terminalach wirtualnych systemu
Linux i przełączaniu się między tymi terminalami (Ctrl-Alt-Fn).
Podłącz się do systemu na trzech kolejnych terminalach
wirtualnych, na jednym będą wykonywane elementy ćwiczenia, na
drugim otwórz przygotowany opis tego zadania (ten opis, który
właśnie czytasz), a na trzecim otwórz sesję Emacsa (w trybie
tekstowym), w której będziesz rejestrował w pliku tekstowym
wyniki otrzymane w kolejnych punktach. Pamiętaj, że ekran
graficzny pierwszego serwera X Window będzie na pierwszym wolnym
terminalu wirtualnym (np. Ctrl-Alt-F7). Powróć do pierwszego
terminala i rozpocznij wykonywanie następnego punktu.
- (Uruchamianie klientów)
Zaloguj się do systemu X~Window, uruchom jakiś graficzny
emulator terminala umożliwiający wykonywanie poleceń shella.
Pracując w oknie terminala:
- Sprawdź wartość zmiennej środowiskowej DISPLAY.
- Uruchom kilka prostych klientów: xclock, xcalc, xmag, xload.
Wypróbuj podstawowe opcje wywołania klienta:
-geometry, -fg, -bg, -bd oraz opcje specyficzne klientów.
- Wybierz ciekawe kombinacje parametrów dla kilku klientów.
włącznie z ich dobrym rozmieszczeniem na ekranie, wpisz
do pliku sprawozdania z ćwiczenia.
- Uruchom emacsa z tak dobraną kombinacją argumentów X Window
aby zmieścił się na ekranie jednocześnie z oknem
terminala. Wpisz opracowane wywołanie emacsa do pliku
sprawozdania, razem z wywołaniem terminala.
- Wyświetl listę procesów użytkownika ps -fu $LOGNAME.
Zakończ wszystkie uruchomione klienty (patrz: xkill).
- (Ćwiczenie z xtermem)
Emulator terminala xterm jest przydatnym narzędziem
pracy o wielu możliwościach, szczególnie często wykorzystywanym
w pracy programistycznej. Warto zapoznać się z jego
możliwościami, głównie o charakterze manualnym.
Wypróbuj operacje menu xterma: trzymając naciśnięty klawisz
Control naciskaj po kolei klawisze myszy i próbuj wybrać opcje
menu i sprawdzać ich znaczenie.
Wyświetl zawartość jakiegoś pliku aby zapełnić okno
xterma tekstem. Wypróbuj operacje zaznaczania myszą:
naciskając lewy klawisz myszy zaznacz fragment tekstu w oknie
xterma. Następnie sprawdź jak naciskanie prawego klawisza
myszy rozciąga to zaznaczenie, zarówno w przód jak i w tył.
Uruchom osobne okno jakiegoś edytora okienkowego, np. emacsa
(z geometrią opracowaną wcześniej) i środkowym klawiszem
wklejaj doń kolejno zaznaczone fragmenty tekstu. Upewnij się,
że dobrze panujesz nad tym co i gdzie zostaje wklejone.
Skasuj bieżące zaznaczenie w oknie xterma. Z kolei spróbuj
podwójnego kliknięcia lewym klawiszem myszy (zaznacza słowo);
sprawdź jak teraz działa rozciąganie zaznaczenia prawym
klawiszem. Eksperymentuj z czasem: jak szybko musisz klikać
myszą aby zostało to uznane przez serwer jako podwójne
kliknięcie zamiast dwóch pojedynczych.
Na koniec spróbuj potrójnego kliknięcia, co ono zaznacza, jak
działa teraz rozciąganie zaznaczenia? Jaki efekt daje
poczwórne kliknięcie?
- (Konfiguracja pracującego serwera)
Programem xset (man xset) zmieniaj parametry
wygaszacza ekranu, najpierw sprawdź aktualne ustawienia
(parametr q). Ustaw bardzo krótki czas wygaszacza ekranu (s).
Sprawdź możliwość ustawiania parametrów dzwonka (b).
Sprawdź ustawienia parametrów myszy (m), znajdź optymalne dla
siebie ustawienia podwójnego i potrójnego kliknięcia myszą.
Programem xsetroot ustaw kolor tła.
- (Uruchamianie i zatrzymywanie serwera)
Przełącz się na jakiś wolny termin wirtualny i uruchom
goły serwer X Window poleceniem: X.
(Na konkretnym systemie serwer X może znajdować się w katalogu,
którego nie ma w zmiennej PATH. Może to być
/usr/bin/X11/X, lub inny katalog tego programu.)
Jeśli w systemie pracuje już serwer X Window, to odpalenie
drugiego (lub kolejnego) serwera będzie wymagało podania
argumentu :1 (dla drugiego serwera, lub :2, albo więcej, dla
kolejnych).
Zaloguj się na innym terminalu wirtualnym, i uruchom xterma ze
skierowaniem wyświetlania na właśnie odpalony serwer X Window,
podając odpowiedni argument wywołania, np.: xterm -display :0
Serwer można zabić poleceniem kill z dowolnego terminala, lub
naciskając klawisz Control-C w terminalu, w którym został
uruchomiony. Na Linuksie można również zabić serwer kombinacją
klawiszy Ctrl-Alt-Backspace.
- (Realizacja sesji przy pomocy pliku .xinitrc)
Wpisz wypracowane poprzednio wywołania klientów do pliku
.xinitrc w katalogu domowym, pamiętając o dodaniu znaku
& na końcu każdego wiersza wywołującego klienta
okienkowego (jest to zbędne dla programów natychmiast
kończących pracę, jak xset). Jako ostatnią pozycję
w pliku wpisz wywołanie xterm'a z opcją -title GLOWNY,
lecz bez znaku &.
Następnie uruchom serwer X Window poleceniem xinit.
Zaobserwuj jak zakończenie wykonywania wszystkich klientów
powoduje automatyczne zakończenie pracy serwera X Window.
Powtórz eksperymenty usuwając znak & z niektórych
wywołań, a potem także dodając go do ostatniego wywołania
xterm'a (głównego).
Uruchom grę xtetris (lub inną grę wskazaną przez
prowadzącego) i grając przez 5 minut spróbuj osiągnąć
maksymalny wynik. Pokaż koledze wynik zarejestrowany w tabelce
wyników i wpisz go w sprawozdaniu z wykonania ćwiczenia.
- (Praca z zarządcą okien TWM)
Po uruchomieniu sesji X Window w oknie xterma uruchom
zarządcę okien TWM. Wypróbuj:
- zamianę okien klientów na ikonki przyciskiem po lewej
stronie belki tytułoweji ich przywracanie do pełnego rozmiaru
- zmianę rozmiaru okien klientów przyciskiem po prawej
stronie belki
- przesuwanie okien przez przeciąganie belki tytułowej
lewym klawiszem myszy
- uruchamianie nowych klientów z opcją -geometry i bez niej;
zwróć uwagę jak TWM zmusza użytkownika do ostatecznego
wybrania geometrii otwieranych okien: kliknięcię lewym
klawiszem myszy otwiera okno o żądanej lub domyślnej
geometrii, kliknięcie prawym klawiszem otwiera okno o
maksymalnym rozmiarze w dół ekranu, a naciśnięcie i
przytrzymanie środkowego klawisz pozwala wybrac pełną
geometrię okna przez przeciąganie; przećwicz te operacje
- działanie menu operacji TWM uruchamianego lewym (lub prawym)
klawiszem myszy na tle (czyli poza wszystkimi okienkami);
wypróbuj wszystkie dostępne operacje, w szczególności
operacje `exit' i `restart'
- sprawdź, że można uruchomić tylko jednego zarządcę okien
Zmień treść pliku .xinitrc tak aby program twm
był ostatnim wywoływanym klientem (bez &). Sprawdź, że
zakończenie pracy zarządcy okien powoduję teraz zakończenie
sesji serwera X Window. To jest przydatny i często używany
sposób pracy.
Następnie zapoznaj się z dokumentacją twm (man twm) i
posługując się tą dokumentacją:
- Skopiuj systemowy plik konfiguracyjny twm (.twmrc)
do swojego katalogu domowego. Zapoznaj się z jego treścią.
- Zmodyfikuj menu operacji twm wywoływanego
kliknięciem myszy w tle tak aby zawierało wywołania
popularnych klientów: acroread'a i netscape'a (polecenie
f.exec).
Przejrzyj listę innych flag sterujących pracą TWM'a
(np. NoTitleFocus, RandomPlacement, OpaqueMove), wypróbuj je, i
ostatecznie opracuj plik konfiguracyjny .twmrc.
Sprawdź, że działa tak jak chcesz.
Treść plików konfiguracyjnych .xinitrc i .twmrc
opracuj tak aby była zrozumiała (komentarze) i aby łatwo
można było je w dalszym ciągu modyfikować i rozwijać.
Do pliku sprawozdania z ćwiczenia wklej zmiany dokonane w pliku
.twmrc (czyli różnice w odniesieniu do systemowej wersji
tego pliku).
Uwaga: TWM normalnie realizuje naturalne zachowanie serwera
zwane focus-follows-mouse, tzn. poruszanie myszą
powoduje, że aktywne jest okno nad którym znajduje się kursor
myszy. (Tak samo zachowuje się serwer w braku zarządcy okien.)
Okno, które staje się aktywne nie wypływa
automatycznie na wierzch, a tylko zaczyna ono (a ściślej
związany z nim klient) otrzymywać wszystkie zdarzenia z
klawiatury i myszy.
Inne typowe zachowanie serwera zwane click-to-focus,
pozwala zachować aktywność okno niezależnie od ruchów myszy.
Zmianę okna aktywnego wywołuje
się wtedy poprzez kliknięcie w wybranym oknie myszą.
(Użytkownicy komputerów dzielą się na zwolenników jednego
albo drugiego zachowania systemu okienkowego, i potrafią toczyć
między sobą zażarte dysputy. Określ swoje preferencje w tym
sporze.)
TWM posiada na włączenie pewnej wersji zachowania
click-to-focus, przez uruchomienie swojej funkcji f.focus,
standardowo uruchamianej w menu TWM'a. Jednak inni zarządcy
okien pozwalają na bezpośrednie przełączanie się pomiędzy tymi
dwoma podstawowymi zachowaniami.
- (Rejestrowanie obrazów z ekranu)
Zapoznaj się z programami xwd i xwud i wypróbuj zarejestrowanie
obrazu zestawu okien na monitorze programem xwd. Sprawdź
programem xwud czy obraz poprawnie się zarejestrował, a
następnie spróbuj przekonwertować go na format JPEG (podpowiedź:
spróbuj programem convert). Wyświetl obrazek programem
display i sprawdź jego własności.
Nie wklejaj otrzymanych obrazków do sprawozdania, ani nie wysłaj
ich prowadzącemu!
- (Praca w sieci)
Podłącz się do zdalnego serwera, ustaw na nim zmienną
środowiskową DISPLAY na ekran lokalnego serwera X Window,
i uruchom przykładowe proste klienty.
Sprawdź stan autoryzacji xhost wyświetlania w lokalnym
serwerze. Spowoduj zakaz wyświetlania zdalnym klientom, oraz
następnie zezwolenie na wyświetlanie dla wybranego adresu IP.
Sprawdź czy te ustawienia działają (np. współpracując z kolegą).
Następnie wyłącz zgodę na wyświetlanie xhost, sprawdź,
że lista xhost jest pusta, i przekaż klucz
autoryzacyjny sesji X Window na wybrany zdalny komputer,
poleceniem podobnym do poniższego:
xauth extract - $DISPLAY | ssh diablo.ict.pwr.wroc.pl /usr/openwin/bin/xauth merge -
Uwaga: jeśli na zdalnym komputerze posiadasz konto ze wspólnym
systemem plików (tak jak to się ma pomiędzy diablo a panamintem)
to przekazywanie kluczy autoryzacyjnych pomiędzy tymi
komputerami nie ma sensu, ponieważ klucz jest i tak zapisany we
współdzielonym katalogu, i klienty z obu komputerów od razu mają
do nich dostęp. W takim przypadku możesz, współpracując z
kolegą, jemu/jej przesłać swój klucz autoryzacyjny (sprawdź jak
w tym celu naleźy wywołać program ssh). Następnie sprawdź, że
klucz działa, tzn. że klienty wywoływane przez kolegę ze
wskazaniem Twojego serwera śa prawidłowo wyświetlane.
Następnie wygeneruj programem xauth nowy klucz autoryzacyjny, i
sprawdź, że z komputera/ów, którym poprzednio wysłałeś/aś klucz
już nie można podłączyć się do Twojego serwera.
Podłącz się do zdalnego serwera unixowego wywołaniem ssh -X.
Sprawdź, że w zdalnej sesji utworzyła się magicznie zmienna
DISPLAY z dziwnym ustawieniem nieistniejącego serwera.
Sprawdź działanie klientów. Opracuj alternatywne rozwiązanie
automatycznego wywoływania klientów do pliku .xinitrc.
Odnotuj w sprawozdaniu.
- (Praca z zasobami)
Zapoznaj się z notacją zasobów (nazwy zasobów i klas, ścieżka
specyfikacji zasobu), i znajdź nazwy kilku przykładowych zasobów
dla wybranego klienta (np. xclock). Do badania zasobów
pracującego klienta przydatny jest program editres,
którym można ustawić wartości dowolnych zasobów, a następnie
zapisać plik zapamiętujący wybrane ustawienia. Do stwierdzenia
jakie znaczenie mają poszczególne zasoby, oraz jakie mogą
przyjmować wartości konieczne jest przeczytanie opisu klienta
(np. man xclock). Sprawdź, że po zapisaniu ustawień zasobów na
pliku i jego załadowaniu do serwera (xrdb merge nazwapliku),
kolejne uruchamiane wersje danego klienta stosują się do tych
ustawień zasobół. (Program editres teoretycznie pozwala na
dynamiczną modyfikację wartości zasobów pracujących klientów,
ale praktycznie większość klientów ignoruje te polecenia, jak
wyjaśniono w opisie programu editres.
Przeczytaj opis zasobów emacs'a i eksperymentując z
ustawianiem wybranych zasobów programem xrdb, dobierz
optymalne wartości trzech (lub więcej) wybranych zasobółw. Nie
korzystaj z żadnych plików (np. .Xdefaults albo
.Xresources, ani innych), tylko wykonaj ustawienia
zasobów z poziomu shella. Na przykład, mogą to być: geometria
okna, czytelne kolory (-bg -fg -bd), oraz czytelną, łatwą do
pracy czcionkę (liste dostępnych czcionek można uzyskać
programem xlsfonts, a interakcyjnie przeglądać i
wybierać czcionki programem xfontsel). Sprawdź, że
kopie emacsa'a uruchamiane z różnych komputerów
realizują ustawione wartości zasobów. Wpisz wybraną
specyfikację zasobów do pliku .Xdefaults na lokalnym
komputerze. Zatrzymaj i ponownie uruchom serwer X Window, i
upewnij się, że emacs konfiguruje się w oczekiwany
sposób. Wpisz opracowane specyfikacje zasobów do sprawozdania.
- (Praca z zarządcą ekranów xdm)
Uruchom serwer X Window z żądaniem połączenia się ze
zdalnym zarządca ekranów xdm pracującym na diablo, bądź na
innym serwerze, którego specyfikację poda prowadzący
ćwiczenia. Zaloguj się na zdalny system, sprawdź jaka
konfiguracja zostanie uruchomiona, jakie jest ustawienie
zmiennej DISPLAY, jaki pracuje zarządca okien.
Sprawdź jak i skąd można konfigurować elementy systemu:
konfigurację sesji .xsession, konfigurację zarządcy
okien, ustawienia zasobów. Jak działają uprawnienia, co
można kontrolować z systemu lokalnego? Sformułuj krótkie
wnioski w sprawozdaniu.
- (Praca z polską lokalizacją)
Dowiedz się od prowadzącego ćwiczenia jak zalogować się lub po
zalogowaniu wybrać środowisko z polską lokalizacją, na przykład
pl_PL.ISO8859-2. Sprawdź jak wpisuje się polskie litery
do różnych elementów systemu: xterm'a, emacs'a, netscape'a.
Sprawdź czy używane czcionki poprawnie wyświetlają polskie
litery. Jeśli któryś z klientów nie wyświetla polskich liter
(sprawdź xterm), spróbuj wywołać go z ustawieniem czcionki
(opcja -fn) odpowiadającej wybranej polskiej lokalizacji.
Sprawdź jakim zasobem można ustawić wybieranie tej czcionki na
stałe. Sformułuj krótkie wnioski w sprawozdaniu.
- (Porównanie własności różnych zarządców okien)
Uruchamiaj kolejno kilku różnych zarządców okien podanych przez
prowadzącego (na przykład: blackbox, fluxbox, icewm, wmaker,
openbox). Zapoznaj się z ich zachowaniem w domyślnej
konfiguracji, sposobem rozmieszczania przez nich okien
klientów, operacjami zarządcy okien uruchamianymi myszą,
i możliwościami interakcyjnej konfiguracji zarządcy okien.
Następnie zapoznaj się z dokumentacją każdego z nich, i sprawdź
czy jest możliwa jego konfiguracja przez plik(i)
konfiguracyjny(e), i/lub jak w plikach konfiguracyjnych
zapisywana jest konfiguracja ustawiona interakcyjnie.
W szczególności sprawdź, czy można/łatwo jest ustawić zachowanie
serwera focus-follows-mouse oraz click-to-focus.
Oceń który z przetestowanych zarządców okien byłby najlepszym
kandydatem na wystartowanie prostej i niezawodnej sesji.
Dopracuj jego optymalną konfigurację, i zanotuj szczegóły.
- (Opracowanie konfiguracji pulpitu)
Na podstawie wykonanych wcześniej ćwiczeń opracuj konfigurację
pulpitu nadającą się do normalnej bieżącej pracy. Konfiguracja
powinna składać się z:
- konfiguracji wybranych opcji serwera
- kilku wybranych klientów uruchomionych z odpowiednimi opcjami
- wybranego zarządcy okien, ze skonfigurowanymi operacjami
uruchamianymi klawiszami myszy
- pliku ustawień zasobów skonfigurowanych dla wybranych klientów
Pliki konfiguracyjne opatrz komentarzami pozwalającymi w
przyszłości łatwiej edytować je ręcznie (lub automatycznie,
jeśli istnieją odpowiednie do tego narzędzia).
Zadanie domowe
- (Porównanie własności innego serwera X Window)
Sprawdź na innym komputerze (innych komputerach), do
którego/ych masz dostęp, z zainstalowanym serwerem X Window,
czy ustawienia wypracowane w tym ćwiczeniu nadal działają
poprawnie:
- jaki pracuje tam zarządca okien, jakie ma możliwości,
jak się go konfiguruje, jak w nim można ustawić
zachowania click-to-focus oraz
focus-follows-mouse, czy można wyłączyć tego
zarządcę i włączyć np. TWM
- jakie ma domyślne ustawienie zezwolenia na wyświetlanie,
czy można je ustawiać, czy można przekazać kod
autoryzacyjny xauth na zdalny komputer
- czy wypracowana konfiguracja emacs'a (przez
ustawienia zasobów) jest nadal optymalna; w razie
potrzeby dostosuj ustawienia zasobów do wymagań i
możliwości lokalnego serwera X Window i zarządcy okien
- czy połączenie ze zdalnym serwerem xdm jest możliwe i
czy wszystko działa poprawnie (ten element można
ćwiczyć tylko pod warunkiem posiadania sprawnego
połączenia sieciowego do Internetu, 256 kb/s lub wiecej)
- (Środowiska KDE i/lub Gnome)
Uzyskaj dostęp do komputeraz z poprawnie zainstalowanym Linuxem
i systemem X Window ze środowiskiem KDE lub Gnome. Sprawdź jak
w tym środowisku działają poznane mechanizmy systemu X
Window, jak realizowany jest plik .xinitrc. Sprawdź jak
nazywa sie program zarządcy okien, jakie ma możliwości, jakie
elementy zachowania serwera wymusza. Sprawdź jak możesz
konfigurować zachowanie tego zarządcy okien i całe
środowisko programem kdecenter ??? Spróbuj ustawić
zachowania click-to-focus oraz focus-follows-mouse.
- (Uruchamianie serwera X Window w środowisku Microsoft Windows)
Uzyskaj dostęp do komputera z zainstalowanym systemem Microsoft
Windows podłączonym do sieci. Sprawdź czy jest na nim serwer
X Window, jeśli nie to ściągnij taki serwer z diablo,
zainstaluj. Sprawdź działanie wszystkich przećwiczonych
mechanizmów. W szczególności może nie udać się
uruchamianie zarządcy okien, albo niektóre jego ustawienia,
ponieważ niektóre serwery X Window pracujące w środowisku
Microsoft Windows traktują lokalne środowisko okienkowe jako
zarządcę okien.