\"/
\"/ \"/    

X Window Systém pro začátečníka

Michal Brandejs
Ročník V - číslo 2, listopad 1994
Citace: M. Brandejs. X Window Systém pro začátečníka. Zpravodaj ÚVT MU. ISSN 1212-0901, 1994, roč. V, č. 2, s. 3-6.
Tematické zařazení: Programy, nástroje
 předchozí článek | následující článek 

Na tomto místě navážeme na předchozí díl volného povídání, ze kterého by čtenáři mohlo vyplynout, že X Window Systém je něco jako MS-Windows. Není tomu tak. X Window je určen pro prostředí počítačové sítě a zjednodušeně popíšeme možnosti systému v "nejdistribuovanější" variantě následovně: na prvním počítači zadáme povel ke spuštění aplikace, která na druhém počítači poběží, na třetím počítači bude zobrazovat okno, ze čtvrtého počítače bude číst fonty atd.

Abychom si mohli vysvětlit, jak je to zařízeno, musíme se zmínit o základních pojmech: displej je technické zařízení, na kterém aplikace zobrazuje své okno, z jehož klávesnice čte příkazy a jehož myší (polohovacím zařízením) ovládá kurzor. Jeden displej může mít více obrazovek. Program, který řídí činnost displeje, se nazývá server. Aby nedocházelo k nejednoznačnostem ve výkladu pojmu server, používá se zde raději označení X server. Aplikaci, která někde běží a na některém displeji zobrazuje okno, nazýváme X klientem.

Displejem může být konzola pracovní stanice, na které běží jak X server, tak i X klienti. Displejem může také být konzola PC, na kterém běží některý z operačních systémů typu UNIX s implementací X Window Systému. Vyrábějí se též specializovaná zařízení nazývaná X terminály. Jsou to vlastně počítače bez disku, mající rychlý procesor, několik MB paměti, klávesnici, myš a zpravidla velkou obrazovku. V procesoru takového zařízení běží pouze X server, X klienty zde není možné spustit. Program X serveru se do X terminálu zpravidla zavádí po síti v okamžiku, kdy X terminál zapínáme.

Existuje několik variant X terminálů. Vedle nejpřirozenější výše popsané se setkáváme s X terminály, jejichž X servery běží na vzdálené pracovní stanici a dokáží ji dost zatížit. Existují také implementace X serveru pro DOS a MS-Windows. Ty jsou však poměrně drahé a za "pravými" X servery mírně kulhají. X Window Systém je nereálné nasazovat tam, kde mezi počítačem, na kterém běží X klient, a počítačem s X serverem je přenosová linka pomalejší než 100 Kbitů/s.

Spouštění X klientů

X klienty pod operačním systémem UNIX spouštíme stejně jako jiné programy. Na příkazovém řádku shellu zadáváme vedle jména souboru s X klientem také volby (přepínače; jejich klíčové slovo je uvozeno znakem mínus). Základní sada voleb je pro X klienty standardizována a můžeme je tedy použít u většiny X klientů. Uveďme si ty nejpoužívanější.

Určení displeje a obrazovky

Displej a obrazovka, na které se má X klient zobrazovat, se určuje volbou s touto syntaxí:

     -display [počítač]:displej[.obrazovka]
počítač
je adresa počítače, na kterém běží X server. Pokud adresu neuvedeme (nebo uvedeme unix), zobrazí se okno na tom počítači, na kterém běží X klient.
displej
je číslo X serveru, který spravuje požadovaný displej. Displeje se číslují od 0 a právě hodnota 0 se na tomto místě nejčastěji používá. Parametr displej nelze vynechat.
obrazovka
je číslo obrazovky v rámci zadaného displeje. Nejčastější a implicitní hodnota je 0. Parametr lze tedy vynechat.

Pokud při startu X klienta neuvedeme volbu -display, bude se hledat proměnná prostředí DISPLAY. Existuje-li, použije se řetězec s ní spojený tak, jako by byl uveden za -display.

X Window Systém disponuje prostředky ochrany, které dovolují zobrazovat okna pouze na tom displeji, jehož uživatel to explicitně povolil. Uživatel displeje příkazem xhost sdělí lokálnímu X serveru adresy počítačů, ze kterých mohou X klienti displej používat.

Adresy počítačů, které mohou lokální displej používat, načítá X server při startu ze souboru /etc/X0.hosts (číslice udává pořadí X serveru). Uživatel potom už za běhu X serveru tento seznam modifikuje následujícími parametry příkazu xhost:

     [+]adresa     počítači povolí zobrazovat
-adresa počítači zakáže zobrazovat
+ povolí zobrazovat všem
- zakáže všem vyjma X0.hosts

Uveďme příklad spouštění X klienta xterm, který se má zobrazit na počítači atys.fi.muni.cz:

     xterm -display atys.fi.muni.cz:0 &

A chceme-li všechny X klienty (u nichž explicitně neuvedeme jinou možnost) zobrazovat na počítači atys, můžeme situaci elegantně vyřešit nastavením proměnné prostředí (v interpretech příkazů odvozených od sh):

     DISPLAY=atys.fi.muni.cz
export DISPLAY
xterm&

Určení geometrie okna

Další volbou nastavujeme velikost prvního okna X klienta a případně i umístění okna v kořenovém okně. Volba má tuto syntaxi:

     -geometry šířkaxvýškax±y]

Údaje jsou dány buď v počtech sloupců a řádků (u textových aplikací, např. xterm), nebo v pixelech. Povinné údaje udávají velikost okna. Kladné hodnoty nepovinných udávají umístění okna vzhledem k levému hornímu rohu kořenového okna, záporné hodnoty vzhledem k pravému nebo dolnímu okraji kořenového okna.

Určení fontu

Fontům se v tomto čísle Zpravodaje věnuje článek Libora Škarvady. Na tomto místě si řekněme, že jméno fontu představuje jak jeho řez (tvar), tak i jeho velikost. Jméno fontu uvádíme za volbou -fn nebo -font. Uveďme si příklad určení fontu pro okno s emulátorem terminálu:

     xterm -fn 10x20 &

Emulátor xterm používá fonty pevné šířky různých velikostí. Určením fontu nepřímo specifikujeme velikost okna emulátoru. Jeden X klient může používat více fontů, touto volbou však specifikujeme pouze ten základní.

Určení barev

Další typickou vlastností je možnost nastavit barvu popředí, pozadí a rámečku lemujícího okno X klienta. Barva popředí se zadává za volbou -fg (nebo -foreground), barva pozadí volbou -bg (-background) a barva rámečku -bd (-border). Barevné displeje zpravidla ovládají X servery zobrazující 256 možných barev. Z těchto 256 barev bývá 216 barev předurčeno ve formě univerzální palety společné všem X klientům (216 barev vznikne kombinací 6 úrovní od každé barevné složky) a 40 barev zbývá pro volné použití klienty.

Nezávisle na tom, kolik barev X server zobrazuje, určujeme barvu buď jménem (výběrem z položek souboru /usr/X11/lib/X11/rgb.txt), nebo kombinací čísel. V tomto druhém případě barvu popíšeme ve tvaru:

     rgb:červená/zelená/modrá

Každá barevná složka se zadává šestnáctkovým číslem v intervalu 0 až ffff. Např. kombinace rgb:ffff/ffff/0 představuje žlutou barvu. Tyto údaje se přímo předají X serveru a předpokládá se, že jsou již po gamma korekci (přepočet odpovídající lidskému vnímání barev). Spojitý barevný prostor lze definovat zápisem:

     rgbi:červená/zelená/modrá

Zde se zadávají čísla v intervalu 0.0 až 1.0 a chápou se jako intenzity jednotlivých barevných složek. Tyto údaje ještě projdou gamma korekcí. Oba uvedené numerické způsoby zápisu adres byly zavedeny v X11R5. Díky kompatibilitě se starší verzí můžeme ještě použít jiný šestnáctkový zápis:

     #rgb
#rrggbb
#rrrgggbbb
#rrrrggggbbbb

Ve všech variantách, kde je méně než 16 bitů pro každou barevnou složku, představují uvedené číslice vyšší řády. Tedy #3a7 je totéž co #3000a0007000.

Ikona místo okna

Dává-li uživatel přednost prvotnímu zobrazení klienta ve formě ikony před vykreslením okna, může na příkazový řádek zapsat volbu -iconic.

Změna názvu a titulku

Za volbou -name uvádíme nový název X klienta. Implicitně je název shodný se jménem souboru, ze kterého byl spuštěn. Nový název se objeví např. na výpise aktivních procesů a jeho pomocí dokážeme konkrétního klienta identifikovat.

Titulek, který většina klientů vypisuje v hlavním okně aplikace, můžeme nastavit či změnit řetězcem uvedeným za volbou -title. Řetězec obsahující alespoň jednu mezeru musí být uzavřen do uvozovek.

Reverzní barvy

Volba -rv (nebo -reverse) zamění barvu pozadí s barvou popředí u těch klientů, které tuto operaci podporují. Volba se často používá při spouštění klienta xterm, v jeho případě se po uvedení volby zobrazují bílá písmena na černém pozadí. Volbou +rv se naopak reverze barev potlačuje (je-li zapnuta jiným způsobem).

Konfigurace X serveru příkazem xset

Pro snadné nastavování parametrů X serveru je v X11R5 několik konfiguračních klientů. V předchozím textu jsme se již zmínili o klientu xhosts, kterým se povoluje přístup klientů k displeji, a v minulém díle o klientu xsetroot nastavujícím barvu kořenového okna a xrefresh obnovujícím obsah obrazovky. Dalším důležitým konfiguračním klientem je xset.

Nastavení zvukového signálu

Parametry klienta xset můžeme nastavit jak zvukový signál generovaný znakem "zvonek" (bell - ASCII kód 7), tak i zvukový signál spojený se stiskem klávesy. Zdaleka ne všechny servery však toto umějí. Zvonek se ovládá parametrem b s touto syntaxí:

     b on    zapíná zvonek
b off vypíná zvonek
b [hlasitost[,frekvence[,délka]]]
Hlasitost zadáváme v intervalu 0 až 100, frekvenci v Hz a délku v milisekundách.

Zvukový signál, který se generuje po stisku klávesy, ovládá parametr c:

     c on    zapíná ťukání
c off vypíná ťukání
c hlasitost Hlasitost se opět zadává v intervalu 0 až 100.

Nastavení cest k fontům

Parametrem fp se nastavují cesty určené ke hledání fontů. Popsán je v článku věnovaném fontům.

Nastavení klávesnice

Následujícími parametry lze ovládat svíticí indikátory na klávesnici a zapínat/vypínat funkci automatického opakování kláves (autorepeat).

     led číslo    rozsvítí indikátor číslo
-led číslo zhasne indikátor číslo
r on zapíná automatické opakování kláves
r off vypíná automatické opakování kláves

Nastavení akcelerace myši

Nepříjemné dlouhé pohyby myší lze zredukovat nastavením vhodné akcelerace parametrem m. Ta se uplatní po spojitém pohybu myší o definovanou vzdálenost. Syntaxi si ukažme na příkladě:

     xset m 5 10
xset m default

První příklad nastaví režim, ve kterém se po souvislém pohybu myší o 10 pixelů uplatní pětkrát vyšší citlivost. Druhý příklad vrátí nastavení do počátečních hodnot.

Nastavení mapy barev

Parametrem p nastavujeme určený řádek mapy barev. Parametr má tuto syntaxi:

     p řádek barva

Údaj řádek specifikuje číslo barvy jako hodnotu pixelu, barva se vybírá z databáze barev rgb.txt.

Nastavení šetřiče obrazovky

Parametrem s se X serveru sděluje, jakým způsobem má šetřit obrazovku. Většina displejů (jakožto fyzických zařízení) umí na pokyn X serveru obrazovku zhasnout. Toto se děje po určité době nečinnosti s cílem zajistit, aby se do obrazovky "nevypalovaly" obrysy trvale zobrazovaných objektů. Na těch displejích, které neumějí obrazovku zhasínat, X server obraz náhodně posunuje. Syntaxe je následující:

     s on    zapíná šetření obrazovky
s off vypíná šetření obrazovky
s t1 [t2] zapíná šetření obrazovky po t1 sekundách. Je-li uveden t2 a obrazovka se neumí zhasínat, potom se obraz každých t2 sekund posune.

Šetření se uplatní po uplynutí určené doby bez činnosti uživatele. První událost (stisk klávesy, posun myši) po zhasnutí obrazovku rozsvítí.

Zjištění nastavení X serveru

Potřebujeme-li zjistit, jak je X server momentálně nastaven, napíšeme příkaz:

     xset q

Zde se dovíme nastavení všech parametrů, které můžeme klientem xset modifikovat.

Zpět na začátek
ÚVT MU, poslední změna 14.11.2011