System X Window
Zadanie na pracownię

Administracyjne przygotowanie ćwiczenia (w przypadku wykonywania na własnym Linuksie): zainstalować wszystkie niezbędne programy, odblokować przyjmowanie połączeń na port 6000 przez wbudowany serwer Xorg (skasować argument wywołania -nolisten), skonfigurować zarządcę ekranów na jakimś serwerze zewnętrznym do obsługiwania żądań klientów (odkomentować wiersz z gwiazdką w pliku /etc/X11/Xaccess lub w innym odpowiednim miejscu).

  1. Przygotowanie do wykonania ćwiczenia [1p]

    Sprawdź operacje na terminalach wirtualnych systemu Linux przez przełączanie się między nimi (Ctrl-Alt-F<n>). Terminale wirtualne numer 1 i 2 będą przydatne w tym ćwiczeniu - zaloguj się na nich w trybie tekstowym. Jeśli w systemie działa podstawowy serwer X Window uruchamiany przez system (w systemach opartych na Debianie często terminal wirtualny nr 7, czyli Ctrl-Alt-F7), i otwórz opis ćwiczenia zalogowany na tym serwerze. W tym przypadku przygotuj się również do notowania w jakimś edytorze otrzymywanych wyników i wniosków.

    W takim przypadku uruchamiany w czasie ćwiczenia należy każdorazowo uruchamiać drugi serwer X Window o numerze :1 (lub jeszcze kolejny). Aby klient komunikował się z tym serwerem musi otrzymać argument -display :1.

    Jeśli w systemie nie jest uruchomiony podstawowy serwer X Window, to postępuj zgodnie z instrukcjami prowadzącego.

  2. Uruchamianie serwera X Window i pojedynczych klientów [3p]

    Z tekstowego terminala wirtualnego, uruchom serwer jako program X (jeśli ma to być drugi serwer to z argumentem :1).

    Sprawdź, że zostałeś przełączony na terminal wirtualny z uruchomionym serwerem. Sprawdź możliwość zabicia serwera „z palca” kombinacją Ctrl-Alt-Backspace, po czym ponownie uruchom ten sam serwer. Wróć do terminala tekstowego. Uruchamiaj kolejno kilku prostych klientów: xclock, xload, xcalc, xterm, lub podobnych.

    Sprawdź, że możesz wyświetlić klienta na świeżo uruchomionym serwerze (-display :1), lub na działającym cały czas serwerze systemowym (-display :0).

    Wypróbuj podstawowe opcje wywołania klienta: -geometry, -fg, -bg, -bd. Znajdź w dokumentacji również jakieś argumenty wywołania specyficzne dla danego klienta, i wypróbuj ich działanie.

    Opracuj jakiś minimalny, ale realny zestaw klientów umożliwiający pracę z systemem (np. jeden lub dwa emulatory terminala, edytor okienkowy, zegar, kalkulator). Dobierz geometrie okien tak, by wszystkie zmieściły się na ekranie (okna mogą się częściowo przysłaniać, o ile nie uniemożliwia to pracy z klientami).

    Zapisz zestaw wywołań klientów z odpowiednimi parametrami w skrypcie .xinitrc. Następnie wypróbuj czy skrypt działa poprawnie zamykając uruchomiony poprzednio serwer X i uruchamiając go ponownie spod programu xinit (sprawdź składnię wywołania programu xinit pozwalającą uruchomić serwer :1).

    Do raportu z wykonania ćwiczenia wklej: treść pliku .xinitrc i polecenie uruchomienia sesji z jego użyciem.

  3. Konfiguracja pracującego serwera [1p]

    Programem xset zmieniaj parametry wygaszacza ekranu, wcześniej sprawdzając aktualne ustawienia (parametr q). Ustaw krótki czas wygaszacza ekranu (parametr s). Sprawdź możliwość ustawiania parametrów „dzwonka” (parametr b). Sprawdź ustawienia myszy (parametr m), znajdź optymalne dla siebie ustawienia podwójnego i potrójnego kliknięcia myszą.

    Programem xsetroot ustaw kolor tła.

    Wklej użyte polecenia do raportu z wykonanego ćwiczenia.

  4. Praca z zarządcą okien [2p]

    W uruchomionej wcześniej sesji X Window uruchamiaj na terminalu wybranych zarządców okien. Zarządcę/ów okien może wskazać prowadzący, lub wybierz ich zgodnie z własnymi preferencjami na podstawie materiałów z wykładu lub z Internetu. Dla wybranych kilku zarządców okien (w tym bardziej minimalistycznych i bardziej rozbudowanych), przeczytaj pobieżnie ich opis man, i wykonaj następujące eksperymenty:

    Wybierz zarządcę okien do minimalistycznej konfiguracji sesji xinit. W raporcie z wykonanego ćwiczenia napisz kilka własnych komentarzy podsumowujących eksperymenty z zarządcami okien, i uzasadnienie wyboru jednego z nich do końcowej konfiguracji.

  5. Porównanie własności różnych środowisk pulpitu X Window [3p]

    Środowiska graficzne pulpitu X Window to kompletne zestawy ustawień, konwencji, specjalnych klientów, i parametrów, konfigurowane w czasie logowania się do sesji X Window.

    Sprawdź jaki wybór środowisk graficznych posiada Twój komputer (powinny być dostępne do wyboru na ekranie logowania). Uruchamiaj je kolejno (na przykład: Gnome, XFCE, WindowMaker), i przeprowadź podstawowe porównania. Po pierwsze, sprawdź własności zarządcy okien uruchomionego w danym środowisku, podobnie jak było to robione w poprzednim punkcie. Po drugie, oceń funkcjonalność i ergonomię całego środowiska. Oceń również możliwość jego konfiguracji i dostosowania do Twoich preferencji.

    Sformułuj w raporcie wniosek, które środowisko odpowiada Ci najbardziej, z krótkim uzasadnieniem. Sformułuj również kilka komentarzy na temat pozostałych badanych środowisk graficznych.

  6. Praca w sieci [2p]

    Przed wykonaniem tego punktu upewnij się, że Twój serwer X Window przyjmuje połączenia sieciowe od zdalnych klientów. Linuksowe serwery X Window zwykle są domyślnie konfigurowane w ten sposób, że nic nie przyjmują z sieci. Spróbuj:

    telnet localhost 6000
    

    Jeśli połączenie zostanie otwarte, to serwer przyjął połączenie. Naciśnij Ctrl-] i napisz quit, i kontynuuj ćwiczenie. W przeciwnym wypadku odblokuj przyjmowanie połączeń sieciowych przez główny serwer X, albo uruchom własny serwer, który będzie przyjmował połączenia (np. serwer :1 na porcie 6001).

    W raporcie z wykonania zadania podaj w jaki sposób odblokowałeś/łaś dostęp sieciowy do serwera X Window na Twoim systemie, oraz jaki jest to system.

    Pracując w grupach dwuosobowych, z terminala okienkowego w sesji X Window, połącz się z komputerem kolegi/koleżanki programem ssh z opcją -Y (lub -X) i zaloguj się na jego/jej konto i komputer. Celem tej części ćwiczenia będzie uruchamianie klientów na tak uzyskanym „obcym” środowisku, z wyświetlaniem na naszym własnym serwerze.

    Sprawdź ustawienie zmiennej środowiskowej DISPLAY na zalogowanej na zdalny komputer sesji, i sprawdź możliwość uruchamiania klientów przy tym ustawieniu. Następnie sprawdź możliwość uruchamiania klientów z podaniem im rzeczywistej sieciowej specyfikacji Twojego serwera/ekranu przez parametr -display (lub nadpisując zmienną środowiskową DISPLAY).

    Jeśli uruchamianie klientów w tej drugiej konfiguracji okazało się niemożliwe, wyłącz kontrolę dostępu poleceniem xhost + i sprawdź ponownie. Jeśli natomiast praca ze specyfikacją fizycznego adresu serwera/ekranu była możliwa to sprawdź jaki był stan kontroli dostępu.

    Ponownie włącz kontrolę dostępu xhost - i z kolei również programem xhost dopisz adres komputera kolegi/koleżanki do listy zezwoleń na dostęp. Jeszcze raz sprawdź możliwość wyświetlania okienek ze zdalnego komputera i konta.

    Następnie włącz kontrolę dostępu (xhost -), sprawdź, że lista adresów uprawnionych jest pusta, i przekaż klucz autoryzacyjny sesji X Window na zdalny komputer i konto kolegi/koleżanki, poleceniem podobnym do poniższego:

    xauth extract - $DISPLAY | ssh user@host xauth merge -
    

    Sprawdź jak spowodować wyświetlanie okienek ze zdalnego komputera na lokalnym serwerze, przy użyciu tak przekazanego klucza. Może to wymagać zamiany skróconej specyfikacji ekranu (lokalnej wartości zmiennej DISPLAY) typu :0 (która na zdalnym komputerze ma zupełnie inną interpretację) na pełną specyfikację sieciową typu: mój.adres.ip:0

    Następnie na lokalnym komputerze wygeneruj programem xauth nowy klucz autoryzacyjny, i ponownie sprawdź możliwość wyświetlania. Jeśli okazało się to niemożliwe, to ponownie przekaż klucz autoryzacyjny na zdalny komputer/konto, i sprawdź jeszcze raz.

    Sformułuj wnioski na temat sterowania dostępem do serwera X Window przez kody autoryzacyjne xauth. Podaj w raporcie postać polecenia, które skutecznie przekazało kod autoryzacyjny na zdalny komputer.

  7. Praca z zarządcą ekranów xdm [2p]

    Ponownie uruchom serwer X Window z żądaniem połączenia się ze zdalnym zarządca ekranów xdm pracującym na jakimś zdalnym serwerze, którego specyfikację poda prowadzący ćwiczenia (spróbuj diablo.ict.pwr.wroc.pl, lub 192.168.4.150):

    X -query serwer.ip.adres :1
    
    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.

    Dodatkowo/alternatywnie uruchom program Xephyr, który jest klientem X Window (a więc trzeba go uruchomić na jakimś działającym serwerze), i jednocześnie tworzy nowy serwer o zadanym numerze:

    Xephyr -screen 1024x768 -display :0 -query server.ip.adres :1
    

    W oknie Xephyra zaloguj się na zdalny system, sprawdź konfigurację. Odpal emulator terminala. Spróbuj uruchamiać na serwerze Xephyr klienty z wyświetlaniem na serwer bazowy, i w przeciwnym kierunku. Otrzymane wyniki podsumuj krótko w raporcie z wykonania ćwiczenia.

Zadanie domowe - opcjonalne

  1. 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 nazwa-pliku), kolejne uruchamiane wersje danego klienta stosują się do tych ustawień zasobów. (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ę (listę 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.

  2. 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 Internetu. (Prostym klientem dla środowiska MS Windows, który nie wymaga instalowania w systemie jest xdemo32. Innym sprawdzonym klientem jest Xmin.) 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.

    Sformułuj wnioski na temat możliwości i ograniczeń pracy w tej konfiguracji.