---
title: Rozdział 5. System okien X
part: Część I. Pierwsze kroki
prev: books/handbook/ports
next: books/handbook/partii
showBookMenu: true
weight: 7
params:
  path: "/books/handbook/x11/"
---

[[x11]]
= System okien X
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 5
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/x11/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[x11-synopsis]]
== Streszczenie

Środowisko graficzne dostępne we FreeBSD korzysta z zaawansowanego serwera graficznego X11 - implementacji open-source Systemu okien X obejmującej zarówno Xorg jak i XFree86(TM). FreeBSD 5.2.1-RELEASE oraz wcześniejsze wydania wykorzystują XFree86(TM), serwer X11 opracowany przez The XFree86(TM) Project, Inc. Od wersji FreeBSD 5.3-RELEASE podstawową i oficjalną odmianą X11 jest Xorg, serwer przygotowywany przez X.Org Foundation, rozprowadzany na licencji bardzo zbliżonej do wykorzystywanej przez FreeBSD. Dostępne są również komercyjne serwery X dla FreeBSD.

Niniejszy rozdział omawia zagadnienia związane z instalacją i konfiguracją X11 kładąc szczególny nacisk na serwer Xorg. Informacje o konfiguracji XFree86(TM) (np. w starszych wersjach FreeBSD gdzie XFree86(TM) był domyślnym serwerem X11) zawsze znaleźć można w archiwalnych wersjach Podręcznika FreeBSD (ang.) na stronie http://docs.FreeBSD.org/doc/[http://docs.FreeBSD.org/doc/].

Informacje odnośnie obsługiwanego przez X11 sprzętu dostępne są na stronie internetowej projektu http://www.x.org/[Xorg].

Po przeczytaniu tego rozdziału będziemy wiedzieć:

* Jakie elementy wchodzą w skład Systemu okien X i jakie są ich wzajemne relacje.
* Jak zainstalować i skonfigurować X11.
* Jak instalować i korzystać z róźnych menadżerów okien.
* Jak korzystać z czcionek TrueType(R) w X11.
* Jak skonfigurować system do logowania graficznego (XDM).

Przed przeczytaniem tego rozdziału powinniśmy wiedzieć:

* Jak instalować dodatkowe oprogramowanie (crossref:ports[ports,Instalacja programów: pakiety i porty]).

[[x-understanding]]
== Zrozumieć X

Korzystanie z X pierwszy raz może być niejakim szokiem dla osób, które dotychczas korzystały z innych środowisk graficznych, jak np. Microsoft(R) Windows(R) czy Mac OS(R).

O ile nie jest wymagane znać wszystkie detale wielu elementów X i jak one ze sobą współpracują, o tyle podstawowa wiedza w tym zakresie pozwoli nam w pełni wykorzystać możliwości X-ów.

=== Czemu X?

X nie jest pierwszym systemem okienkowym napisanym dla systemów typu UNIX(R), lecz jest on najbardziej popularnym. Grupa projektantów, która przygotowała X, pracowała wcześniej nad innym systemem. System ten nazywał się "W" (od "Window"). X była po prostu kolejną literą w rzymskim alfabecie.

System X może być nazywany po prostu "X", "System okien X", "X11" oraz jeszcze na wiele innych sposobów. Może się również okazać, że stosowanie terminu "X Windows" w odniesieniu do X11 jest traktowane jako obraźliwe przez niektóre osoby. Więcej informacji dostępnych jest w man:X[7].

=== Model klient/serwer

Od samego początku System X zorientowany był na pracę w sieci, stąd też wykorzystanie modelu "klient-serwer".

W modelu systemu X, "serwer X" pracuje na komputerze wyposażonym w klawiaturę, monitor i myszkę. Do zadań serwera należy m.in. zarządzanie wyświetlaniem, czy obsługa sygnałów z klawiatury. Każda aplikacja graficzna (jak np. XTerm czy man:getenv[3]) jest "klientem". Klient wysyła komunikaty do serwera typu "Proszę w tym miejscu narysować okienko". Serwer natomiast: "Użytkownik właśnie kliknął przycisk OK".

W warunkach domowych czy w małym biurze serwer i klienci pracują z reguły na tym samym komputerze. Tym nie mniej istnieje możliwość uruchomienia serwera X na słabszej maszynie a aplikacje (klienci) na np. potężnej i drogiej maszynie obsługującej całe biuro. W takim wypadku komunikacja pomiędzy klientami a serwerem odbywa się za pomocą sieci.

Bywa to mylące, gdyż terminologia stosowana w systemie X jest dokładnie odwrotna do tego czego należałoby się spodziewać w typowym modelu "klient-serwer", czyli "serwera X" pracującego na mocniejszej maszynie oraz "klienta X" na komputerze biurkowym.

Stąd też należy pamiętać, że serwer X jest komputerem z monitorem i klawiaturą, podczas gdy klienci X są programami wyświetlającymi okienka.

Protokół X11 w żaden sposób nie zmusza ani klientów ani serwera, by obydwa działały na tym samym systemie operacyjnym, czy nawet typie komputera. Możliwe jest zatem uruchomienie serwera X w systemie Microsoft(R) Windows(R) czy Mac OS(R) firmy Apple za pomocą dostępnych darmowych i komercyjnych narzędzi.

=== Menedżer okien

Filozofia systemu X jest bardzo zbliżona do filozofii Uniksa: "narzędzia, nie reguły". Oznacza to, że X nie stara się narzucać jak ma zostać wykonane zadanie, dostarcza jedynie narzędzi pozostawiając użytkownikowi decyzję o sposobie ich wykorzystania.

Stąd też X nie wymusza jak powinny wyglądać okienka, jak je przesuwać po ekranie za pomocą myszki, jakie skróty klawiaturowe wykorzystać by przełączać pomiędzy okienkami (np. kbd:[Alt+Tab] w w przypadku Microsoft(R) Windows(R)), jak powinny wyglądać nagłówki okienek, itd.

Serwer X oddelegowuje tą odpowiedzialność do aplikacji nazywanej "Menedżerem okien". Istnieje całe mnóstwo menedżerów okien dla systemu X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker i wiele więcej. Każdy z nich oferuje inny wygląd i sposób obsługi; niektóre obsługują "wirtualne pulpity"; inne umożliwiają definiować własne skróty klawiszowych do zarządzania pulpitem; jeszcze inne posiadają przycisk "Start" bądź podobne rozwiązanie; w niektórych można zmieniać dowolnie motywy graficzne, pozwalając na całkowitą zmianę wyglądu i zachowania przy uruchamianiu nowego motywu. Te menedżery i wiele innych dostępne są w kategorii [.filename]#x11-wm# w Kolekcji portów.

Ponadto, również środowiska graficzne KDE oraz GNOME posiadają w pełni zintegrowane, własne menedżery okien.

Każdy menedżer okien posiada również odrębny mechanizm konfiguracyjny; niektóre wykorzystują ręcznie modyfikowane pliki konfiguracyjne, inne dysponują narzędziami graficznymi, a przynajmniej jeden (Sawfish) wykorzystuje plik konfiguracyjny napisany w języku Lisp.

[NOTE]
.Sposób uaktywniania
====
Kolejną funkcją realizowaną przez menedżera okien jest "sposób uaktywniania" okien za pomocą myszy. Każdy system okienkowy potrzebuje pewnego sposobu wyboru okna, które będzie aktywnie przyjmować sygnały z klawiatury i powinno wskazywać, które okno jest aktywne.

Znanym wszystkim sposobem uaktywniania jest zapewne "kliknij-by-uaktywnić". Jest to metoda wykorzystywana w systemie Microsoft(R) Windows(R), w której okno zostaje uaktywnione po otrzymaniu kliknięcia myszką.

X nie obsługuje żadnego sposobu uaktywniania sam z siebie. To właśnie menedżer okien kontroluje, które okno jest aktywne w danych czasie. Różne menedżery wspierają różne metody uaktywniania. Wszystkie z nich obsługują kliknij-by-uaktywnić a większość z nich obsługuje również kilka innych.

Najczęściej spotykane sposoby uaktywniania:

aktywuj-za-myszą::
Aktywne jest okno znajdujące się bezpośrednio pod wskaźnikiem myszki. Przy czym, nie koniecznie jest to te samo okno, które znajduje się nad wszystkimi innymi oknami. Zmiana aktywnego okna dokonywana jest przez wskazanie na inne okno. Nie jest wymagane kliknięcie na nim.

leniwe uaktywnianie::
Ta metoda jest drobną wariacją metody aktywuj-za-myszą, w której w sytuacji gdy wskaźnik myszy jest przesunięty nad wolne pole wówczas żadne okno nie jest aktywne, a wszystkie wprowadzane znaki są tracone. W tej metodzie natomiast aktywne okno jest zmieniane tylko gdy wskaźnik zostanie przesunięty nad nowe okno, natomiast nie w momencie gdy opuści bieżące okno.

kliknij-by-uaktywnić::
Aktywne okno jest wybierane poprzez kliknięcie na nie myszką. Okno może później być "podniesione" i pojawić się nad wszystkimi innymi oknami. Wszystkie wprowadzane znaki są kierowane do tego okna, nawet jeśli wskaźnik myszki zostanie przesunięty nad inne okno.

Wiele menedżerów okien wspiera również inne metody, podobnie jak wariacje powyższych. Najlepiej jest sprawdzić dokumentację danego menedżera.
====

=== Elementy interfejsu graficznego

Podejście Systemu X do dostarczania narzędzi a nie reguł dotyczy również elementów interfejsu graficznego widocznych na ekranie w każdej uruchomionej aplikacji.

Pod pojęciem "elementu interfejsu graficznego" (ang. widget) kryją się wszystkie elementy, które można kliknąć bądź w inny sposób nimi manipulować; przyciski, pola wyboru, przyciski opcji, ikony, listy, itd. W systemach Microsoft(R) Windows(R) nazywają się one "formantkami" (ang. controls).

Zarówno Microsoft(R) Windows(R) jak i Apple Mac OS(R) stosują bardzo rygorystyczne podejście do elementów interfejsu graficznego. Od twórców programów wymaga się by ich aplikacje wyglądały jednakowo. Natomiast przy tworzeniu X, nie uznano za rozsądne narzucanie jednego stylu graficznego czy zestawu elementów interfejsu, do którego miałyby być dostosowane wszystkie programy.

W rezultacie nie należy się spodziewać, że aplikacje graficzne będą posiadały jednakowy wygląd czy sposób obsługiwania. Istnieje kilka popularnych zestawów elementów interfejsu graficznego i ich wariacji, włączając w to oryginalny zestaw Athena z MIT, Motif(R) (na podstawie którego został przygotowany zestaw elementów interfejsu graficznego Microsoft(R) Windows(R); wszystkie krawędzie fazowane, trzy odcienie szarości), OpenLook i inne.

Większość nowszych programów graficznych będzie zapewne wykorzystywać jeden ze współczesnych zestawów elementów interfejsu, jak np. Qt, wykorzystywany w KDE, bądź GTK+, stosowany w projekcie GNOME. Pod tym względem, istnieje pewne podobieństwo w wyglądzie i zachowaniu środowisk graficznych w systemach typu UNIX(R), co z pewnością ułatwi pracę z systemem początkującym użytkownikom.

[[x-install]]
== Instalacja X11

Domyślną implementacją serwera X11 dla FreeBSD jest Xorg. Jest on serwerem graficznym o otwartym kodzie (open source) Systemu okien X przygotowanym przez X.Org Foundation. Bazuje on na kodzie XFree86(TM) 4.4RC2 i X11R6.6. Wersją Xorg dostępną aktualnie z kolekcji portów FreeBSD jest 7.7.

By skompilować i zainstalować Xorg z kolekcji portów wpisujemy:

[source,shell]
....
# cd /usr/ports/x11/xorg
# make install clean
....

[NOTE]
====
Nim zaczniemy upewnijmy się, że dysponujemy 4 GB wolnej przestrzeni na dysku na potrzeby kompilacji.
====

Alternatywnie, X11 może zostać zainstalowany z pakietów binarnych za pomocą man:pkg_add[1]. W przypadku wykorzystania opcji zdalnego pobierania pakietów z sieci przez man:pkg_add[1] należy pominąć numer wersji pakietu. Program man:pkg_add[1] automatycznie pobierze najnowszą wersję aplikacji.

Zatem, by pobrać i zainstalować pakiet Xorg wystarczy wpisać:

[source,shell]
....
# pkg_add -r xorg
....

[NOTE]
====
Powyższe polecenia zainstalują kompletne środowisko X11 zawierające serwery, klienty, czcionki itd. Dostępne są również osobne pakiety i porty elementów X11.
====

Pozostała część niniejszego rozdziału wyjaśnia jak skonfigurować serwer X11 oraz jak skonfigurować wspomagające efektywność naszej pracy środowisko pulpitowe.

[[x-config]]
== Konfiguracja X11

=== Nim zaczniemy

Przed rozpoczęciem konfiguracji X11 potrzebne nam będą następujące informacje o docelowym systemie:

* Parametry monitora
* Rodzaj chipsetu karty graficznej
* Rozmiar pamięci karty graficznej

Parametry monitora są wykorzystywane przez X11 do określenia rozdzielczości i częstotliwości odświeżania ekranu, na jakich ma pracować. Parametry te można z reguły odczytać z dokumentacji dostarczonej wraz z monitorem bądź ze strony producenta. Potrzebne są dwa przedziały liczbowe: częstotliwość odchylania poziomego oraz częstotliwość synchronizacji pionowej.

Od rodzaju chipsetu karty graficznej zależy który moduł X11 wykorzysta do komunikacji z kartą graficzną. W większości przypadków możliwe jest automatyczne wykrycie rodzaju chipsetu. Tym nie mniej warto jest go znać, na wypadek gdyby autodetekcja nie powiodła się.

Rozmiar pamięci karty graficznej wpływa bezpośrednio na rozdzielczość i głębię kolorów, przy których system będzie pracował. Informacja ta jest istotna, by użytkownik znał ograniczenia systemu w tym zakresie.

=== Konfiguracja X11

Konfiguracja X11 jest procesem składającym się z kilku kroków. Pierwszym z nich jest przygotowanie wstępnego pliku konfiguracyjnego. Wystarczy jako użytkownik `root` wpisać:

[source,shell]
....
# Xorg -configure
....

Wygeneruje to szkielet konfiguracji X11 w katalogu [.filename]#/root#, w pliku o nazwie [.filename]#xorg.conf.new# (niezależnie czy skorzystaliśmy z man:su[1] czy zalogowaliśmy się bezpośrednio na konto, plik zostanie utworzony w katalogu zdefiniowanym w zmiennej `$HOME` dla użytkownika `root`). X11 spróbuje wykryć parametry sprzętu graficznego zainstalowanego w komputerze i zapisać plik konfiguracyjny, by przy starcie serwera X były ładowane właściwe sterowniki dla wykrytego sprzętu.

Kolejnym krokiem jest przetestowanie konfiguracji i sprawdzenie czy Xorg jest w stanie współpracować ze sprzętem graficznym w systemie. W tym celu należy wpisać:

[source,shell]
....
# Xorg -config xorg.conf.new
....

Jeśli na ekranie pojawi się siatka złożona z czarnych i szarych elementów, a także kursor myszy w kształcie litery X, oznaczać to będzie, że X11 został skonfigurowany poprawnie. By wyłączyć ekran testowy wystarczy wcisnąć kombinację klawiszy kbd:[Ctrl+Alt+Backspace].

[NOTE]
====
Jeśli okaże się, że kursor nie reaguje na ruchy myszy będziemy musieli wpierw ją skonfigurować. crossref:install[mouse,Ustawienia myszki] rozdziału "Instalacja FreeBSD" zawiera szczegółowe informacje na ten temat.
====

Następnym krokiem jest dostrojenie konfiguracji pliku [.filename]#xorg.conf.new# do naszych upodobań. Otwórzmy plik w edytorze tekstu, np. w man:emacs[1] bądź man:ee[1]. Wpierw powinniśmy dodać częstotliwości z jakimi może pracować nasz monitor. Z reguły określane są jako częstotliwości synchronizacji pionowej i poziomej. Wartości te są dodawane do pliku [.filename]#xorg.conf.new# w sekcji `"Monitor"`:

[.programlisting]
....
Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection
....

Słów kluczowych `HorizSync` i `VertRefresh` może brakować w pliku konfiguracyjnym. Jeśli tak jest, można je śmiało dodać wpisując właściwą wartość częstotliwości odchylania poziomego zaraz po `HorizSync` oraz wartość częstotliwości synchronizacji pionowej po `VertRefresh`. W powyższym przykładzie wartości te zostały wpisane.

X umożliwia również korzystanie z funkcji DPMS (Energy Star), jeśli dysponujemy monitorem zgodnym z tym standardem. Program man:xset[1] kontroluje limity czasowe i może wymusić tryb oczekiwania, zawieszenia czy tryby wyłączania. Jeśli chcemy włączyć funkcje DPMS dla naszego monitora, musimy dodać poniższy wiersz w sekcji monitora:

[.programlisting]
....

        Option       "DPMS"
....

Mając wciąż otwarty w edytorze plik [.filename]#xorg.conf.new# wybierzmy domyślną rozdzielczość i głębię kolorów. Parametry te definiowane są w sekcji `"Screen"`:

[.programlisting]
....
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection
....

Słowo kluczowe `DefaultDepth` odnosi się do domyślnej głębi kolorów. Opcja ta może być zmieniona za pomocą parametru `-depth` polecenia man:Xorg[1]. Słowo kluczowe `Modes` odnosi się do rozdzielczości, w której ma pracować serwer X dla danej głębi kolorów. Należy zwrócić uwagę, iż dostępne są jedynie standardowe tryby VESA, zgodne ze sprzętem graficznym instalowanym w danym systemie. W powyższym przykładzie, domyślna głębia kolorów to dwadzieścia cztery bity na piksel. Przy tej głębi dostępna jest rozdzielczość 1024 na 768 pikseli.

Możemy w końcu zapisać plik konfiguracyjny i sprawdzić go wykorzystując podany powyżej tryb testowy.

[NOTE]
====
Jednym z pomocnych narzędzi w radzeniu sobie z problemami są pliki dzienników X11, zawierające informacje odnośnie każdego urządzenia, do którego jest podłączony serwer X11. Nazwy plików dzienników Xorg wykorzystują format [.filename]#/var/log/Xorg.0.log#. Dokładna nazwa pliku dziennika może być różna w zakresie od [.filename]#Xorg.0.log# do [.filename]#Xorg.8.log#.
====

Jeśli test wypadł dobrze, należy zainstalować plik konfiguracyjny w miejscu gdzie man:Xorg[1] będzie w stanie go znaleźć. Z reguły jest to [.filename]#/etc/X11/xorg.conf# lub [.filename]#/usr/X11R6/etc/X11/xorg.conf#.

[source,shell]
....
# cp xorg.conf.new /etc/X11/xorg.conf
....

Proces konfiguracji X11 dobiegł końca. Xorg można uruchomić za pomocą pomocą polecenia man:startx[1]. Serwer X11 może być również uruchamiany wykorzystując man:xdm[1].

[NOTE]
====
Dostępny jest również graficzny konfigurator - man:xorgcfg[1] - dostarczany razem z dystrybucją X11. Pozwala on nam interaktywnie zdefiniować naszą konfigurację wybierając odpowiednie sterowniki i ustawienia. Program ten można uruchomić z konsoli wpisując polecenie `xorgcfg -textmode`. Więcej szczegółów zawiera strona podręcznika systemowego man:xorgcfg[1].

Istnieje również, jako alternatywa, program man:xorgconfig[1], będący aplikacją konsolową, mniej przyjazną dla początkujących użytkowników, jednakże przydatną w sytuacjach gdy inne narzędzia nie działają poprawnie.
====

=== Konfiguracja zaawansowana

==== Konfiguracja z chipsetem graficznym Intel(R) i810

Konfiguracja ze zintegrowanym chipsetem Intel(R) i810 wymaga wykorzystania interfejsu programowego AGP [.filename]#agpgart# do obsługi karty w X11. Więcej informacji można znaleźć w podręczniku systemowym sterownika man:agp[4].

Pozwoli to nam skonfigurować naszą kartę graficzną jak każdą inną. W tym momencie należy zwrócić uwagę na fakt, iż w systemach bez man:agp[4] wkompilowanego w jądro, próba załadowania modułu za pomocą man:kldload[8] nie powiedzie się. Sterownik ten musi być obecny w jądrze w trakcie uruchamiania systemu poprzez wkompilowanie go bądź załadowanie za pomocą [.filename]#/boot/loader.conf#.

==== Dodanie płaskiego monitora szerokokątnego

Sekcja ta zakłada, że posiadamy odrobinę wiedzy o zaawansowanej konfiguracji X11. Jeśli próby wykorzystania opisanych wyżej standardowych narzędzi konfiguracyjnych nie powiodły się, w plikach dzienników znajdziemy dostateczną ilość informacji pomocnych w uruchomieniu X z monitorem szerokokątnym. Będziemy musieli wykorzystać dowolny edytor teksu.

Obecne formaty szerokokątne (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, itd.) obsługują formaty 16:10 oraz 10:9 bądź o innych proporcjach obrazu, które mogą stworzyć problemy w trakcie konfiguracji X. Niektórymi z powszechnie wykorzystywanych rozdzielczości ekranu dla proporcji 16:10 są:

* 2560x1600
* 1920x1200
* 1680x1050
* 1440x900
* 1280x800

W pewnym momencie będzie to tak proste jak dodanie którejś z tych rozdzielczości jako możliwych trybów `Mode` w `Section "Screen"`, jak np.:

[.programlisting]
....
Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
DefaultDepth 24
SubSection "Display"
        Viewport  0 0
        Depth     24
        Modes     "1680x1050"
EndSubSection
EndSection
....

Tym nie mniej Xorg jest na tyle sprytny, że potrafić pozyskać informacje o rozdzielczości ekranu monitora szerokokątnego za pomocą I2C/DDC w taki sposób, że wie jakie rozdzielczości potrafi obsłużyć monitor w kwestii częstotliwości i rozdzielczość.

Jeśli odpowiednie wpisy `ModeLine` nie istnieją w sterownikach, będziemy musieli podpowiedzieć co nieco serwerowi Xorg. Z pliku [.filename]#/var/log/Xorg.0.log# możemy wydobyć dostateczną ilość informacji, by móc ręcznie stworzyć poprawnie obsługiwany `ModeLine`. Wystarczy odnaleźć zapis podobny do:

[.programlisting]
....
(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz
....

Jest to tzw. informacja EDID. Stworzenie na jej podstawie `ModeLine` jest zaledwie kwestią wpisania we właściwej kolejności kilku liczb:

[.programlisting]
....
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
....

Tak więc wpis `ModeLine` w `Section "Monitor"` dla tego przykładu wyglądałby następująco:

[.programlisting]
....
Section "Monitor"
Identifier      "Monitor1"
VendorName      "Bigname"
ModelName       "BestModel"
ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option          "DPMS"
EndSection
....

Po tych kilku prostych zmianach X powinien zacząć działać poprawnie z naszym szerokokątnym monitorem.

[[x-fonts]]
== Korzystanie z czcionek w X11

[[type1]]
=== Czcionki Type1

Czcionki dostarczane razem z X11 są dalekie od idealnych dla typowych aplikacji biurowych. Duże czcionki sprawiają wrażenie postrzępionych i mało profesjonalnych. Natomiast, małe czcionki w man:getenv[3] są całkowicie nieczytelne. Tym nie mniej, dostępnych jest kilka darmowych, wysokiej jakości czcionek Type1 (PostScript(R)), gotowych do użycia z X11. Na przykład, kolekcja czcionek URW (package:x11-fonts/urwfonts[]) zawiera wysokiej jakości wersje standardowych czcionek type1 (Times Roman(TM), Helvetica(TM), Palatino(TM) i innych). Kolekcja Freefonts (package:x11-fonts/freefonts[]) to wiele dodatkowych czcionek, przy czym większość z nich przewidzianych jest do użycia z oprogramowaniem graficznym, jak np. Gimp, tym samym nie są przygotowane do wykorzystania jako czcionki do aplikacji. Dodatkowo, przy minimum wysiłku, można skonfigurować X11, by korzystał z czcionek TrueType(R). Więcej szczegółów znaleźć można w podręczniku systemowym man:X[7] lub w części <<truetype,poświęconej czcionkom TrueType(R)>>.

By zainstalować kolekcje czcionek Type1 z portów, należy wpisać następujące polecenia:

[source,shell]
....
# cd /usr/ports/x11-fonts/urwfonts
# make install clean
....

Analogicznie postępujemy z czcionkami freefont bądź innymi kolekcjami. Aby serwer X wykrył zainstalowane czcionki, należy dodać odpowiedni wpis do pliku konfiguracji serwera ([.filename]#/etc/X11/xorg.conf#) postaci:

[.programlisting]
....
FontPath "/usr/X11R6/lib/X11/fonts/URW/"
....

Alternatywną metodą jest wpisanie w trakcie sesji X:

[source,shell]
....
% xset fp+ /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash
....

O ile rozwiązanie to również przyniesie pożądany efekt, o tyle dokonane w ten sposób zmiany zostaną stracone po zakończeniu sesji X. Oczywiście powyższe polecenia można dodać do pliku startowego ([.filename]#~/.xinitrc# dla typowej sesji `startx` bądź pliku [.filename]#~/.xsession# przy logowaniu się za pomocą graficznego menedżera logowania, jak np. XDM). Trzecią metodą jest skorzystanie z nowego pliku [.filename]#/usr/X11R6/etc/fonts/local.conf#: szczegóły w części poświęconej <<antialias,wygładzaniu>>. 

[[truetype]]
=== Czcionki TrueType(R)

Xorg posiada wbudowaną obsługę czcionek TrueType(R). Istnieją dwa moduły, które mogą aktywować tę funkcję. W przykładzie wykorzystany został moduł freetype, z uwagi na większą spójność z innymi wewnętrznymi elementami wyświetlającymi czcionki. By włączyć moduł freetype, wystarczy dodać poniższy wiersz do sekcji `"Module"` pliku [.filename]#/etc/X11/xorg.conf#.

[.programlisting]
....
Load  "freetype"
....

Teraz musimy utworzyć katalog dla czcionek TrueType(R) (na przykład [.filename]#/usr/X11R6/lib/X11/fonts/TrueType#) i skopiować wszystkie czcionki do tego katalogu. Należy pamiętać, że czcionki TrueType(R) nie mogą być bezpośrednio skopiowane z systemu Macintosh(R), by możliwe było wykorzystanie ich z X11; muszą być w formacie UNIX(R)/MS-DOS(R)/Windows(R). Po skopiowaniu plików należy wykorzystać ttmkfdir do stworzenia pliku [.filename]#fonts.dir#, by poinformować X, że zostały zainstalowane nowe czcionki. Program `ttmkfdir` dostępny jest z kolekcji portów FreeBSD jako package:x11-fonts/ttmkfdir[].

[source,shell]
....
# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir
....

Na koniec musimy dodać katalog TrueType(R) do ścieżki czcionek. Robimy to analogicznie jak w przypadku czcionek <<type1,Type1>>, za pomocą polecenia

[source,shell]
....
% xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash
....

bądź dodając wiersz `FontPath` do pliku [.filename]#xorg.conf#.

Gotowe. Teraz man:getenv[3], Gimp, StarOffice(TM) i wszystkie inne aplikacje X powinny rozpoznawać zainstalowane czcionki TrueType(R). Bardzo małe czcionki (jak np. tekst na stronie WWW przy ustawionej wysokiej rozdzielczości ekranu) oraz bardzo duże (w StarOffice(TM)) będą wyglądały zdecydowanie lepiej.

[[antialias]]
=== Wygładzane czcionki

Wygładzanie (anti-aliasing) dostępne było w X11 od XFree86(TM) 4.0.2. Jednakże konfiguracja czcionek była niezmiernie nieporęczna do ukazania się XFree86(TM) 4.3.0. Począwszy od tej właśnie wersji, wszystkie czcionki w X11 dostępne w katalogach [.filename]#/usr/X11R6/lib/X11/fonts/# oraz [.filename]#~/.fonts/# są automatycznie dostępne dla aplikacji korzystających z wygładzania Xft. Nie wszystkie aplikacje potrafią korzystać z Xft, lecz wiele z czasem otrzymało wsparcie Xft. Przykładami aplikacji korzystających z Xft są Qt 2.3 i późniejsze (pakiet narzędzi graficznych dla środowiska KDE), GTK+ 2.0 i późniejsze (pakiet narzędzi graficznych dla środowiska GNOME desktop) oraz Mozilla 1.2 i późniejsze. 

By móc kontrolować, które czcionki będą wygładzane bądź skonfigurować właściwości wygładzania, należy stworzyć (bądź zmodyfikować, jeśli istnieje) plik [.filename]#/usr/X11R6/etc/fonts/local.conf#. Wykorzystując ten plik możemy dostroić kilka zaawansowanych opcji systemu czcionek Xft, jednakże rozdział ten skupia się jedynie na kilku podstawowych funkcjach. Więcej szczegółów znaleźć można w podręczniku systemowym man:fonts-conf[5].

W pliku tym stosowany jest format kodu XML. Przy jego edycji należy pamiętać o właściwym zamykaniu wszystkich znaczników. Zaczyna się on od typowego nagłówka XML oraz definicji DOCTYPE. Następnym w kolejności jest znacznik `<fontconfig>`:

[.programlisting]
....

      <?xml version="1.0"?>
      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
      <fontconfig>
....

Jak już to zostało wcześniej powiedziane, wszystkie czcionki w katalogach [.filename]#/usr/X11R6/lib/X11/fonts/# oraz [.filename]#~/.fonts/# są automatycznie dostępne dla aplikacji korzystających z Xft. Jeśli natomiast chcemy dodać inny katalog nie będący podkatalogiem żadnego z powyższych, musimy dodać do pliku [.filename]#/usr/X11R6/etc/fonts/local.conf# wiersz podobny do poniższego:

[.programlisting]
....
<dir>/ścieżka/do/moich/czcionek</dir>
....

Po dodaniu nowych czcionek, a szczególnie nowych katalogów, powinniśmy uruchomić poniższe polecenie, by przebudować bufor informacji o czcionkach:

[source,shell]
....
# fc-cache -f
....

Wygładzanie sprawia, że brzegi czcionek stają się lekko zamazane, dzięki czemu małe litery są bardziej czytelne, a duże pozbawione efektu "schodków". Może jednak prowadzić do zmęczenia oczu gdy zostanie użyte w stosunku do liter o normalnej wiekości. By wyłączyć wygładzanie czcionek o rozmiarze mniejszym niż 14 punktów, należy dodać poniższe wiersze do pliku konfiguracyjnego:

[.programlisting]
....
        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>
....

Korzystając z wygładzania może się okazać, iż również odstępy pomiędzy literami niektórych czcionek o stałej szerokości są niewłaściwe. Ma to miejsce szczególnie w przypadku KDE. Jedynym rozwiązaniem tego problemu jest wymuszenie stałego odstępu o wartości 100 dla danych czcionek. W tym celu musimy wpisać:

[.programlisting]
....
       <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>
....

(powyższe deklaruje inne typowe nazwy czcionek o stałej szerokości jako `"mono"`), a następnie:

[.programlisting]
....
         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>
....

Niektóre czcionki, jak np. Helvetica, mogą stwarzać problemy jeśli zostaną poddane wygładzaniu. Z reguły daje to efekt czcionki przeciętej pionowo na pół. W najgorszym wypadku, może prowadzić to do załamania aplikacji typu Mozilla. By tego uniknąć, warto dodać poniższe do pliku [.filename]#local.conf#:

[.programlisting]
....
         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>
....

Skończywszy edycję [.filename]#local.conf# upewnijmy się, że plik kończy się znacznikiem `</fontconfig>`. Bez tego może się okazać, że nasze zmiany zostaną zignorowane.

Korzystanie z domyślnego zestawu czcionek, dostępnego wraz z X11, nie jest wskazane jeśli chodzi o wygładzanie. Zdecydowanie lepszy zestaw domyślnych czcionek zawiera port package:x11-fonts/bitstream-vera[]. Port ten zainstaluje również plik [.filename]#/usr/X11R6/etc/fonts/local.conf# jeśli jeszcze go nie mamy. Jeśli natomiast istnieje już taki plik w systemie, stworzony zostanie plik [.filename]#/usr/X11R6/etc/fonts/local.conf-vera#. Wystarczy dołączyć zawartość tego pliku do [.filename]#/usr/X11R6/etc/fonts/local.conf#, by czcionki Bitstream automatycznie zastąpiły domyślne czcionki X11 Serif, Sans Serif i Monospaced.

Na koniec, użytkownicy mogą dodać swoją konfigurację poprzez własny plik [.filename]#.fonts.conf#. W tym celu każdy użytkownik może stworzyć i zmodyfikować plik [.filename]#~/.fonts.conf#. Również ten plik wykorzystuje format XML.

Ostatnia rzecz: osoby korzystające z monitorów LCD mogą pragnąć zastosować wygładzanie podpikselowe. W skrócie, w metodzie tej czerwone, zielone i niebieskie komponenty (oddzielone w płaszczyźnie poziomej) traktowane są oddzielnie, co poprawia rozdzielczość poziomą i przynosi radykalne efekty. By włączyć wygładzanie podpikselowe należy dodać poniższy wiersz do pliku [.filename]#local.conf#:

[.programlisting]
....

         <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>
....

[NOTE]
====
Zależnie od typu monitora, może się okazać, że będziemy musieli zastąpić `rgb` wartościami `bgr`, `vrgb` lub `vbgr`: poeksperymentujmy i sprawdźmy co da najlepszy efekt.
====

Wygładzanie powinno być aktywne przy następnym uruchomieniu serwera X. Tym nie mniej, programy muszą zostać poinformowane, by z niego korzystać. W chwili obecnej pakiet narzędzi Qt korzysta z wygładzania czcionek, tym samym również i całe środowisko KDE. GTK+ oraz GNOME również można skonfigurować do pracy z wygładzanymi czcionkami poprzez aplet "Font" (<<x11-wm-gnome-antialias>> zawiera szczegółowy opis). Domyślnie, Mozilla 1.2 i późniejsze będą automatycznie korzystać z wygładzania. By wyłączyć tę opcję, należy ponownie skompilować program z parametrem `-DWITHOUT_XFT`.

[[x-xdm]]
== Menedżer pulpitów X

=== Omówienie

Menedżer pulpitów X (ang. X Display Manager XDM) jest opcjonalną częścią Systemu okien X, wykorzystywaną do zarządzania sesjami logowania. Znajduje on zastosowanie w kilku typach sytuacji, włączając w to zarówno minimalistyczne "Terminale X", komputery prywatne, jak również ogromne sieciowe serwery graficzne. Z uwagi na fakt, iż System okien X jest niezależny od wykorzystywanej sieci jak i protokołu, istnieje wiele możliwych konfiguracji klientów i serwerów na różnych maszynach połączonych ze sobą za pomocą sieci. XDM dostarcza graficznego interfejsu pozwalającego wybrać, z którym serwerem się połączymy, jak i przeprowadzić autoryzację, np. za pomocą kombinacji loginu i hasła.

XDM można postrzegać jako narzędzie dostarczające użytkownikowi takich samych funkcjonalności jak man:getty[8] (szczegółowy opis zawiera crossref:serialcomms[term-config,Configuration]). Oznacza to, że to właśnie menedżer pulpitów w imieniu użytkownika dokonuje logowania do systemu i uruchamia menedżera sesji (z reguły menedżera okien). Następnie, XDM oczekuje aż program zakończy działanie, sygnalizując tym samym, że użytkownik skończył pracę i menedżer pulpitów powinien go wylogować z systemu. W tym momencie XDM może ponownie wyświetlić ekran logowania i wyboru środowiska graficznego oczekująć na kolejnego użytkownika.

=== Korzystanie z XDM

Demon XDM znajduje się w [.filename]#/usr/X11R6/bin/xdm#. Program ten może zostać uruchomiony w dowolnej chwili przez użytkownika `root` i od razu rozpocznie zarządzanie ekranami X w lokalnym systemie. Jeśli jednak XDM ma być uruchamiany przy każdym starcie systemu, najlepszym rozwiązaniem jest dodanie odpowiedniego wpisu do pliku [.filename]#/etc/ttys#. crossref:serialcomms[term-etcttys,Adding an Entry to /etc/ttys] zawiera więcej informacji odnośnie formatu i wykorzystania tego pliku. W domyślnej wersji plik [.filename]#/etc/ttys# zawiera wiersz uruchamiający demona XDM w wirtualnym terminalu:

[source,shell]
....
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure
....

Domyślnie, wiersz ten jest nieaktywny. By go uaktywnić należy zmienić zawartość 5 kolumny z `off` na `on` i ponownie uruchomić man:init[8] wykorzystująć wskazówki z crossref:serialcomms[term-hup,Force init to Reread /etc/ttys]. Pierwsza kolumna - nazwa terminala, którym będzie zarządzał dany program - to `ttyv8`. Oznacza to, że XDM będzie pracował na dziewiątny wirtualnym terminalu.

=== Konfiguracja XDM

W katalogu [.filename]#/usr/X11R6/lib/X11/xdm# znajdują się pliki konfiguracyjne XDM. Pliki te można wykorzystać do zmiany zachowania i wyglądu menedżera ekranów. Z reguły są to następujące pliki:

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Plik
| Opis

|[.filename]#Xaccess#
|Zestaw reguł autoryzacji klientów.

|[.filename]#Xresources#
|Domyślne wartości zasobów X.

|[.filename]#Xservers#
|Lista zdalnych i lokalnych ekranów do zarządzania.

|[.filename]#Xsession#
|Domyślny skrypt sesji logowania.

|[.filename]#Xsetup_#*
|Skrypt uruchamiający aplikacje przed interfejsem logowania.

|[.filename]#xdm-config#
|Konfiguracja globalna dla wszystkich ekranów danej maszynie.

|[.filename]#xdm-errors#
|Błędy generowane przez program serwera.

|[.filename]#xdm-pid#
|Identyfikator procesu aktualnie działającego XDM.
|===

W tym katalogu znajduje się również kilka skryptów i programów wykorzystywanych do konfiguracji pulpitów w trakcie działania XDM. Zadanie każdego z tych plików zostanie pokrótce omówione. Dokładna składnia i wykorzystanie wszystkich tych plików znajduje się w man:xdm[1].

W domyślnej konfiguracji pojawi się prostokątne okno logowania z nazwą maszyny wypisaną dużą czcionką na samej górze, wraz z polami "Login:" i "Password:". Jest to dobry punkt wyjściowy do modyfikacji wyglądu i zachowania ekranów XDM.

==== Xaccess

Protokół wykorzystywany do łączenia z puplitami obsługiwanymi przez XDM nosi nazwę X Display Manager Connection Protocol (XDMCP). Plik ten jest zestawem reguł do kontroli połączeń XDMCP ze zdalnych maszyn. Z reguły jest on ignorowany, chyba że w pliku [.filename]#xdm-config# zostanie włączona opcja nasłuchiwania zdalnych połączeń. Domyślnie nie zezwala się na połączenia z innych klientów.

==== Xresources

Jest to plik domyślnej konfiguracji programu wyboru puplitu i ekranu logowania. W tym właśnie pliku można modyfikować ich wygląd. Format pliku jest identyczny z formatem app-defaults opisanym w dokumentacji X11.

==== Xservers

Lista zdalnych pulpitów, do wyboru których mamy mieć dostęp za pomocą menedżera.

==== Xsession

Domyślny skrypt sesji XDM uruchamiany po zalogowaniu się użytkownika. Z reguły każdy użytkownik posiada zmodyfikowany według własnego upodobania skrypt sesji w pliku [.filename]#~/.xsession#, uruchamiany zamiast tego skryptu.

==== Xsetup_*

Skrypty te zostaną automatycznie uruchomione przed wyświetleniem interfejsu logowania i wyboru pulpitu. Dla każdego wykorzystywanego ekranu znajduje się tu plik o nazwie [.filename]#Xsetup_# wraz z numerem lokalnego ekranu (na przykład [.filename]#Xsetup_0#). Z reguły skrypty te uruchamiają jeden bądź dwa programy w tle, jak np. `xconsole`.

==== xdm-config

Plik ustawień w formacie app-defaults, mający zastosowanie do wszystkich puplitów zarządzanych przez menedżera.

==== xdm-errors

Plik ten zawiera wydruki wyjściowe serwerów X, które XDM stara się uruchomić. Jeśli w trakcie uruchamiania pulpitu z jakiegoś powodu proces ten zawiesi się, najlepszym miejscem poszukiwania komunikatów błędów jest właśnie ten plik. Komunikaty te są również umieszczane w pliku [.filename]#~/.xsession-errors# użytkownika dla danej sesji.

=== Konfiguracja sieciowego serwera graficznego

By umożliwić innym klientom łączenie się z serwerem graficznym, należy zmodyfikować reguły kontroli dostępu i włączyć opcję nasłuchiwania połączeń. Domyślnie opcja ta jest nie aktywna. Jej aktywacja polega na odkomentowaniu poniższej linii w pliku [.filename]#xdm-config#:

[source,shell]
....
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0
....

Następnie należy ponownie uruchomić XDM. Pamiętajmy, że komentarze w plikach app-defaults rozpoczynają się od znaku "!" zamiast typowego "#". Lektura przykładowego pliku [.filename]##Xaccess## oraz podręcznika systemowego man:xdm[1] może nam pomóc gdy będziemy potrzebować bardziej surowej kontroli dostępu.

=== Alternatywy dla XDM

Dostępnych jest kilka alternatyw dla domyślnego menedżera XDM. Jeden z nich - kdm (dostarczany razem z KDE) - został bliżej opisany w tym w dalszej części rozdziału. Menedżer kdm oferuje wiele wizualnych usprawnień i kosmetycznych dodaktów, jak również możliwość wyboru menedżera okien przed zalogowaniem do systemu.

[[x11-wm]]
== Środowiska graficzne

Niniejsza sekcja opisuje różne typy środowisk graficznych dostępnych dla X we FreeBSD. Termin "środowisko graficzne" może oznaczać wszystko, od prostego menedżera okien po kompletny zestaw aplikacji puplitu, jak KDE czy GNOME. 

[[x11-wm-gnome]]
=== GNOME

[[x11-wm-gnome-about]]
==== O GNOME

GNOME jest przyjaznym użytkownikowi środowiskiem graficznym, umożliwiającym łatwą konfigurację i proste korzystanie z komputera. GNOME posiada panel (do uruchamiania aplikacji i wyświetlania ich statusu), puplit (gdzie można umieszczać dane i aplikacje), zestaw standardowych narzędzi biurowych i aplikacji oraz zestaw pewnych konwencji ułatwiających współpracę miedzy aplikacjami i zachowanie wzajemnej spójności. Użytkownicy innych systemów operacyjnych powinni czuć się jak w domu korzystając z potężnego środowiska graficznego dostarczanego przez GNOME. Więcej informacji odnośnie środowiska GNOME we FreeBSD dostępnych jest na stronie WWW projektu http://www.FreeBSD.org/gnome[FreeBSD GNOME Project]. Strona ta zawiera również w miarę zrozumiałe FAQ traktujące o instalacji, konfiguracji i zarządzaniu GNOME.

[[x11-wm-gnome-install]]
==== Instalacja GNOME

Najprostszym sposobem instalacji GNOME jest poprzez menu "Desktop Configuration" w trakcie instalacji FreeBSD, co omawia crossref:desktop[default-desktop,Wybór menedżera okien] rozdziału 2. Możliwa jest również instalacja z pakietu bądź kolekcji portów:

By zainstalować pakiet GNOME z sieci, wystarczy wpisać:

[source,shell]
....
# pkg_add -r gnome2
....

By skompilować GNOME ze źródeł najlepiej jest skorzystać z portu:

[source,shell]
....
# cd /usr/ports/x11/gnome2
# make install clean
....

Mając już zainstalowanego GNOME musimy poinformować serwer X, by uruchamiał właśnie jego w miejsce domyślnego menedżera okien.

Najprostszą metodą uruchomienia GNOME jest wykorzystanie GDM - menedżera pulpitów GNOME (ang. GNOME Display Manager). GDM jest instalowany jako część środowiska GNOME, jednakże jest on domyślnie wyłączony. By go włączyć, należy dodać wiersz `gdm_enable="YES"` do pliku [.filename]#/etc/rc.conf#. Po ponownym uruchomieniu systemu, GNOME zostanie automatycznie włączony zaraz po zalogowaniu się - nie wymagana jest dodatkowa konfiguracja.

Oczywiście, GNOME można uruchomić również bezpośrednio z linii poleceń poprawnie konfigurując plik [.filename]#.xinitrc# w katalogu domowym. Jeśli plik ten już istnieje wystarczy zastąpić wiersz odpowiadający za uruchomienie aktualnego menedżera okien na wiersz uruchamiający /usr/X11R6/bin/gnome-session. Jeśli w pliku nie dokonywaliśmy żadnych istotnych zmian, najprościej będzie po prostu wpisać:

[source,shell]
....
% echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc
....

Następnie wpisujemy `startx`, co spowoduje uruchomienie środowiska GNOME.

[NOTE]
====
Jeśli wykorzystujemy starszego menedżera okien, jak np. XDM, powyższe rozwiązanie nie zadziała. W takiej sytuacji musimy stworzyć plik wykonywalny [.filename]#.xsession# zawierający powyższe polecenie. W tym celu należy zmodyfikować ten plik i zastąpić polecenie uruchamiające aktualnego menedżera poleceniem /usr/X11R6/bin/gnome-session: 
====

[source,shell]
....
% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession
....

Jeszcze jedną metodą jest skonfigurowanie menedżera pulpitów tak, by umożliwiał wybór menedżera okien w trakcie logowania. Sekcja <<x11-wm-kde-details,Więcej informacji o KDE>> wyjaśnia jak to zrobić w kdm - menedżerze puplitów KDE.

[[x11-wm-gnome-antialias]]
==== Wygładzane czcionki w GNOME

X11 obsługuje wygładzanie czcionek (anti-aliasing) za pomocą rozszerzenia "RENDER". GTK+ w wersji 2.0 i późniejszych (pakiet narzędzi graficznych wykorzystywany przez GNOME) potrafi korzystać z tej funkcji. Konfigurację wygładzania czcionek opisuje <<antialias>>. Zatem, wykorzystując najnowsze oprogramowanie, możliwe jest wygładzanie czcionek w środowisku GNOME. Wystarczy przejść do menu menu:Applications[Desktop Preferences > Font] i wybrać jedną z opcji: btn:[Best shapes] (najlepsze kształty), btn:[Best contrast] (najlepszy kontrast) lub btn:[Subpixel smoothing (LCDs)] (wygładzanie podpikselowe). Natomiast dla aplikacji GTK+ nie będących częścią środowiska GNOME, należy ustawić zmienną środowiskową `GDK_USE_XFT` na `1` przed uruchomieniem programu.

[[x11-wm-kde]]
=== KDE

[[x11-wm-kde-about]]
==== O KDE

KDE jest prostym w użyciu współczesnym środowiskiem graficznym, zawierającym między innymi:

* Ładnie wyglądający puplit
* Pulpit odznaczający się całkowitą przezroczystością sieci
* Zintegrowany system pomocy, udostępniający w prosty sposób informacje o korzystaniu ze środowiska KDE i jego aplikacji
* Jednakowy wygląd i zachowanie wszystkich aplikacji KDE
* Standardowe menu i paski narzędzi, skróty klawiaturowe, schematy kolorów, itp.
* Internacjonalizacja: KDE jest dostępny w ponad 40 językach
* Scentralizowaną i spójną konfigurację środowiska
* Całą masę przydanych aplikacji

KDE posiada własną przeglądarkę internetową - Konqueror, która stanowi poważną konkurencję dla innych przeglądarek z systemów UNIX(R). Więcej informacji o KDE znaleźć można na http://www.kde.org/[stronie KDE]. Natomiast informacje o jego współpracy z FreeBSD dostępne są na stronie http://freebsd.kde.org/[FreeBSD-KDE team].

[[x11-wm-kde-install]]
==== Instalacja KDE

Podobnie jak w przypadku GNOME czy dowolnego innego środowiska graficznego, najprostszym sposobem instalacji KDE jest skorzystanie z menu "Desktop Configuration" w procesie instalacji FreeBSD, co omawia crossref:desktop[default-desktop,Wybór menedżera okien] rozdziału 2. Ponownie, również KDE można zainstalować z pakietu bądź z kolekcji portów:

By zainstalować pakiet KDE z sieci, wystarczy wpisać:

[source,shell]
....
# pkg_add -r kde
....

man:pkg_add[1] automatycznie pobierze najnowszą wersję aplikacji.

By skompilować KDE ze źródeł najlepiej jest skorzystać z portu:

[source,shell]
....
# cd /usr/ports/x11/kde3
# make install clean
....

Po instalacji KDE należy poinformować serwer X, by uruchamiał go w miejsce domyślnego menedżera okien. W tym celu należy zmodyfikować plik [.filename]#.xinitrc#:

[source,shell]
....
% echo "exec startkde" > ~/.xinitrc
....

Od tej pory, za każdym razem gdy uruchomimy System okien X za pomocą polecenia `startx`, uruchomione zostanie środowisko KDE.

Jeśli wykorzystujemy starszego menedżera okien, jak np. XDM, wymagana jest odmienna konfiguracja. Opis konfiguracji kdm znajduje się w dalszej części tego rozdziału.

[[x11-wm-kde-details]]
=== Więcej informacji o KDE

Skoro zainstalowaliśmy już KDE, większość informacji można odnaleźć w systemie pomocy, bądź po prostu klikając w dowolne menu. Użytkownicy systemów Windows(R) czy Mac(R) powinni czuć się jak w domu.

Najlepszym źródłem informacji o KDE jest dostępna w sieci dokumentacja. KDE zawiera własną przeglądarkę internetową - Konqueror, masę przydatnych aplikacji i obszerną dokumentację. Pozostała część tego rozdziału skupi się na technicznych zagadnieniach, trudnych do nauczenia się poprzez dość losowe poznawanie środowiska.

[[x11-wm-kde-kdm]]
==== Menedżer puplitów KDE

Administratorzy systemów wieloużytkownikowych mogą chcieć skorzystać z graficznego ekranu logowania. W tym celu można zastosować <<x-xdm,XDM>>, jak to zostało opisane wcześniej. Można również wykorzystać alternatywne rozwiązanie dostępne razem z KDE - kdm - wyglądające zdecydowanie bardziej atrakcyjnie oraz posiadające wiele dodatkowych opcji logowania. W szczególności, użytkownicy mogą w prosty sposób wybrać (poprzez menu), które środowisko graficzne uruchomić po zalogowaniu (KDE, GNOME, bądź inne).

By aktywować kdm, należy zmodyfikować wpis dla `ttyv8` w pliku [.filename]#/etc/ttys#. Wiersz ten powinien wyglądać następująco:

[.programlisting]
....
ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure
....

[[x11-wm-xfce]]
=== XFce

[[x11-wm-xfce-about]]
==== O XFce

XFce jest środowiskiem graficznym wykorzystującym pakiet narzędzi GTK+, podobnie jak GNOME, lecz jest zdecydowanie lżejsze i przeznaczone dla osób poszukujących prostego i efektywnego środowiska, lecz również łatwego w obsłudze i konfiguracji. Wyglądem bardzo przypomina CDE, często dostępne w komercyjnych systemach UNIX(R). Niektóre z cech XFce:

* Prosty i łatwy w obsłudze pulpit
* Możliwość konfiguracji wszystkich elementów za pomocą myszki, metody przeciągnij i upuść, itp.
* Główny panel podobny do CDE z wieloma opcjami menu, apletami i programami wywołującymi
* Zintegrowane menedżery okien, plików, dźwięku, moduł zgodności GNOME i inne dodatki
* Możliwość stosowania motywów (skoro wykorzystuje GTK+)
* Szybkie, lekkie i wydajne: idealny dla starszych/wolniejszych maszyn lub z ograniczonym zasobem pamięci

Więcej informacji dostępnych jest na http://www.xfce.org/[stronie XFce].

[[x11-wm-xfce-install]]
==== Instalacja XFce

W chwili pisania niniejszego tekstu dostępny jest pakiet binarny. By z niego zainstalować XFce, wystarczy wpisać:

[source,shell]
....
# pkg_add -r xfce4
....

Oczywiście, można również skompilować go ze źródeł przy pomocy kolekcji portów:

[source,shell]
....
# cd /usr/ports/x11-wm/xfce4
# make install clean
....

Pozostaje jeszcze poinformować serwer X by uruchamiał XFce przy kolejnych uruchomieniach X. Wystarczy wpisać:

[source,shell]
....
% echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrc
....

Przy kolejnym uruchomieniu X jako środowisko graficzne zostanie wykorzystane XFce. Podobnie jak wcześniej, tak i teraz należy stworzyć plik [.filename]#.xsession# gdy korzystamy z XDM, co zostało umówione w części poświęconej <<x11-wm-gnome,GNOME>>, wpisując polecenie [.filename]#/usr/X11R6/bin/startxfce4#. Alternatywnie, należy skonfigurować menedżera pulpitów, by pozwalał na wybór środowiska graficznego w trakcie logowania, zgodnie z opisem z sekcji poświęconej <<x11-wm-kde-kdm,kdm>>.
