Portál AbcLinuxu, 24. dubna 2024 18:46

Na co se často ptáme 4: X Window System - I

21. 5. 2004 | Vlastimil Ott
Články - Na co se často ptáme 4: X Window System - I  

Zcela nezajímavý článek s obyčejným tématem. Asi vás vůbec nezaujme - ovšem pokud vám "neklekl" X Window System. Potom zde hledejte vyčerpávající návod jak jej nakonfigurovat.

XFree 4.3.0

X Window System (dále v článku také XFree nebo X) všichni známe, nebudu se věnovat jeho historii, technologii nebo budoucnosti. Budu se věnovat té nejobyčejnější věci, která pro mnohé uživatele představuje noční můru. Jedná se o nastavení tohoto komplexního systému. Protože má mnoho vlastností (features), jedná se o práci složitou. Lze použít pomocné konfigurační nástroje, které bývají dodávány jednak se samotným XFree, jednak s konkrétní distribucí. Takové řešení bývá obvykle funkční a pro normální provoz dostačující. Někdy ale nastane situace, kdy tyto programy nepomohou. Jedná se o případy, kdy máte příliš starý nebo nový hardware (grafická karta, monitor, displej), nebo ve vaší distribuci daný konfigurační nástroj není nebo nefunguje tak, jak má. Nebo, do třetice, program vám grafický systém nastaví, ale jaksi "málo". Často je použit standardní ovladač nebo parametr, který výkon vašeho hardwaru degraduje (typicky nízká obnovovací frekvence monitoru).

V textu se pokusím vyčerpávajícím způsobem popsat jednotlivé sekce a parametry konfiguračního souboru /etc/X11/XF86Config, kterým je nastaveno chování XFree verze 4.3.0. Rád bych upozornil, že se nejedná o poslední finální verzi, protože se ale u aktuální verze 4.4 změnila licence, mnozí producenti distribucí zůstali u verze 4.3, případně přecházejí ke konkurenčním grafickým systémům (x.org, Y Window System).

Rád bych také upozornil, že syntaxe a dělení jednotlivých částí konfiguračního souboru se od starších verzí změnila a tento materiál se na ně nevztahuje. Veškeré informace, a to i ke starším verzím, lze nalézt na stránkách XFree.

Před započetím práce si ověřte, že soubor, který zpracováváte, je při spuštění XFree opravdu interpretován. Pracujete-li jako root, což je pro ladění běhu XFree nutné a máte-li v domovském adresáři soubor XF86Config, což se může stát, je interpretován právě on, nikoliv soubor ze standardní cesty /etc/X11/.

Také si okamžitě vytvořte nejméně jednu zálohu. To je ostatně vhodné opakovat pokaždé, když se vám bude zdát, že máte část souboru odladěnou. Soubor s veškerými výpisy (log) se nachází v adresáři /var/log/ a nejprve se jmenuje XFree.0.log, starší verze mají ještě navíc koncovku .old, případně se vnitřní nula mění na čtyřku.

Konfigurace

Struktura konfiguračního souboru

Konfigurační soubor se skládá z několika sekcí, na jejichž pořadí obvykle (viz níže) nezáleží. Každá ze sekcí má tvar:

Section "Jmeno_sekce"
  Polozka_sekce
  Polozka_sekce
  Polozka_sekce
EndSection

Místo pseudonázvu Jmeno_sekce se doplňuje některý z názvů konkrétních sekcí:

Název sekce Význam a použití
ServerLayout Integrující konfigurace serveru
Files Cesty k souborům písem, palety apod.
ServerFlags Příznaky X-serveru
Module Načítání modulů XFree
InputDevice Definice vstupního zařízení
Device Definice grafického výstupního zařízení
VideoAdaptor Definice Xv grafického adaptéru
Monitor Definice monitoru
Modes Definice grafických režimů
Screen Konfigurace obrazovky
DRI Konfigurace DRI (Direct Rendering)
Vendor Konfigurace závislá na výrobci

Syntaxe konfiguračního souboru

Při interpretaci klíčových slov nehraje roli velikost písmen. Znak "_" (podtržítko) je ignorován; u některých parametrů jsou ignorovány také znaky označující volný prostor (znaky pro mezeru a tabelátor). Každá položka v souboru zabírá obvykle jeden řádek, který se skládá z klíčového slova obvykle následovaného jedním nebo více argumenty. Tyto argumenty mohou nabývat hodnot celých čísel, reálných čísel nebo textových řetězců:

Název Význam, hodnoty, rozmezí
integer Celé číslo v desítkové, šestnáctkové (musí začínat "0x") nebo osmičkové (musí začínat "0") soustavě.
real Reálné číslo s plovoucí čárkou.
string Textový řetězec uzavřený do uvozovek.

Existuje speciální klíčové slovo Option (doslova "volba, možnost"), kterým lze serveru předat nestandardní parametr s volnou strukturou. Option má jeden, nebo dva argumenty. První je název volby a možný druhý je parametr volby. Ten může kromě výše uvedených typů (integer, real, string) nabývat také hodnot

Název Význam, hodnoty, rozmezí
boolean Stavový příznak, který nabývá pouze dvou hodnot: platí, nebo neplatí. Pokud není uvedena hodnota, předpokládá se hodnota "platí". Tu lze také vyjádřit následujícími znaky, které se považují za rovnocenné: 1, on, true, yes. Hodnota "neplatí" se vyjadřuje analogicky: 0, off, false, no.
frequency Hodnota frekvence se vyjadřuje reálným číslem, které může být doplněno jednotkami Hz, k, kHz, M, MHz. Pokud označení jednotky chybí, je odhadnuto z rozmezí, které by mělo být schopno použít dané zařízení. Pochopitelně je vhodné jednotku vždy uvést. Nehrozí ani tak zničení zařízení (monitoru), jako spíše zavlečení chyby.

Všechny parametry volby Option, nejenom řetězce, musejí být uzavřeny v uvozovkách. Pokud parametr začíná předponou "No", je jeho hodnota "neplatí". Následující příklady vyjadřují naprosto totéž (zakázání akcelerace):

Option "Accel" "Off"
Option "NoAccel"
Option "NoAccel" "On"
Option "Accel" "false"
Option "Accel" "no"

Popis jednotlivých sekcí

ServerLayout

Tato sekce má v hierarchii nejvyšší váhu. Svazuje totiž konkrétní vstupní a výstupní zařízení. Vstupní zařízení jsou popsána v sekcích InputDevice. Parametr začínající Core- určuje standardní vstupní zařízení. V systému musí být přesně jedno pro jednotlivé kategorie (myš, klávesnice); není-li explicitně označeno, je použito první, které lze technicky využít. Toto lze určit také v patřičné sekci InputDevice nebo na příkazovém řádku.

Výstupní zařízení se obvykle skládají z vícero nezávislých komponent (grafické karty a monitoru). Tato zařízení jsou svázána v sekcích Screen; na tyto sekce se pak odvolává v sekci ServerLayout. Grafické karty jsou definovány v sekcích Device a monitory v sekcích Monitor. Záměrně vše uvádím v množném čísle, protože XFree podporuje více zařízení v jednom sezení (např. dvě karty a dva monitory, nebo jedna karta se dvěma výstupy na dva monitory apod.). Téma na samostatný článek.

Section "ServerLayout"
  Identifier "XFree86 Configured"
  Screen 0 "Screen0" 0 0
  InputDevice "Mouse0" "CorePointer"
  InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Files

Section "Files"
  RgbPath "/usr/X11R6/lib/X11/rgb"
  ModulePath "/usr/X11R6/lib/modules"
  FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
  FontPath "/usr/X11R6/lib/X11/fonts/misc/"
  FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
  FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
  FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
  FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
  #FontPath "unix/:7100"
  FontPath "tcp/192.168.1.10:7100"
EndSection

Tato sekce je určena k předání informací o souborech, které jsou nutné pro běh serveru. Některé z těchto informací lze předávat serveru jako parametr při spuštění, nebo za běhu, např. programem xset. Takové parametry mají větší váhu než ty, které jsou uvedené v konfiguračním souboru. Položky této sekce jsou následující.

Parametr Hodnota Význam
FontPath adresarova_cesta nebo protokol/klient:cislo_portu Adresářová cesta k souborům s fonty. Je možné (a obvyklé) uvádět více těchto parametrů. Obvyklá cesta k souborům s fonty je /usr/X11R6/lib/X11/fonts/. Pokud daný adresář neexistuje nebo neobsahuje žádné soubory písem nebo není vytvořen jejich seznam (soubory fonts.dir, fonts.alias a fonts.scale), XFree oznámí, že odstraňuje tuto položku ze seznamu. Obvyklý případ hlavně při (nesprávném) použití TrueType fontů. Druhá hodnota je případ spolupráce s fontserverem běžícím v síti. Problematika přesahuje tento článek, viz např. článek o fontech v Mozille.
FontPath adresarova_cesta Specifikace souboru s databází barev. K názvu je přidána přípona .txt. Soubor obsahuje RGB kódy a názvy barev. Obvykle /usr/X11R6/lib/X11/rgb.
ModulePath adresarova_cesta Specifikace adresáře, ve kterém bude systém XFree hledat moduly. Ty se obvykle používají pro akceleraci, podporu TrueType a Type1 písem, zařízení Video4Linux apod. Může být použito opakovaně. Obvykle /usr/X11R6/lib/modules/.

ServerFlags

# Nastavení "dvouhlavé" karty pro dva monitory
Section "ServerFlags"
  DefaultServerLayout "Multihead"
  Option "BlankTime" "0"
  Option "Xinerama" "true"
EndSection

Tato sekce je určena k specifikaci globálních vlastností X serveru. Všechny položky v této sekci jsou typu Option (viz výše). Jsou interpretovány také některé položky ze starších verzí XFree; těmi se zde ovšem nezabýváme.

Parametr Typ argumentu Význam hodnoty
DefaultServerLayout string Sekce ServerLayout, která bude použita jako standardní, pokud není její jméno definováno na příkazové řádce parametrem -layout. Je-li nalezeno více sekcí ServerLayout, platí poslední uvedená!
NoTrapSignals boolean Určeno pro ladění. Rozhodnutí, má-li X server překonat chyby, nebo se naopak ukončit a uložit ladicí informace.
DontVTSwitch boolean Je-li true, není možné přepínat se na další terminály pomocí klávesových zkratek Ctrl+Alt+Fn.
DontZap boolean Je-li true, není možné ukončit (nebo pouze restartovat) XFree pomocí Ctrl+Alt+Backspace.
DontZoom boolean Je-li true, není možné přepínat videorežimy pomocí Ctrl+Alt+šedé Plus a Ctrl+Alt+šedé Minus.
AllowMouseOpenFail boolean Je-li true, server se spustí, i když není připojena nebo správně nastavena myš.
XkbDisable boolean Povoluje, nebo zakazuje rozšíření XKEYBOARD, které slouží k přepínání klávesových map. Standardně povoleno.
BlankTime integer Čas (v minutách) definující dobu, než se spustí spořič obrazovky. Lze změnit za běhu pomocí xset. Různá prostředí (KDE) tuto hodnotu modifikují.
StandbyTime integer Čas (v minutách) definující dobu, než se monitor přepne do "stand-by" režimu. Lze změnit za běhu pomocí xset. Nemusí fungovat u všech videodriverů a monitorů. Nastaveno pouze v případě, že je v sekci Monitor definován parametr DPMS (viz níže).
SuspendTime integer Čas (v minutách) definující dobu, než se monitor přepne do uspávacího režimu. Lze změnit za běhu pomocí xset. Nemusí fungovat u všech videodriverů a monitorů. Nastaveno pouze v případě, že je v sekci Monitor definován parametr DPMS (viz níže).
OffTime integer Čas (v minutách) definující dobu, než se monitor vypne. Lze změnit za běhu pomocí xset. Nemusí fungovat u všech videodriverů a monitorů. Nastaveno pouze v případě, že je v sekci Monitor definován parametr DPMS (viz níže). Všechny tyto čtyři sekce jsou závislé na hardwaru a jejich chování lze vyzkoušet snad jedině prakticky.
Xinerama boolean Zakáže, nebo povolí rozšíření XINERAMA, které umožňuje práci s více monitory a kartami, případně vícehlavými kartami (např. ATI).

Existují další parametry, které mají speciální význam a které se obvykle, tj. ve standardní uživatelské konfiguraci, nepoužívají.

Module

V této sekci se specifikují moduly, které se mají při sezení načíst. Jedná se obvykle o rozšíření X serveru nebo moduly pro práci s různými typy písem (TrueType, Type1, Speedo apod.). Většina ostatních modulů je načítána na žádost, takže se o ně nemusíme starat.

Existují dva způsoby jak specifikovat moduly. Nejčastější a nejpohodlnější je způsob Load "nazev-modulu". Argument nazev-modulu je název modulu, nikoliv souboru. Řetězec rozlišuje velikost znaků a nesmí obsahovat předponu lib stejně jako přípony .a, .o nebo .so.

Druhý, méně častý, způsob je položka SubSection s argumentem názvu modulu a parametry typu Option, které jsou předány modulu při jeho načtení. Tento způsob je určen pro opravdu speciální případy, kdy je nutné zcela přesně nastavit parametry hardwaru. Je tedy nutné znát parametry jednotlivých modulů, což jejich autor (v takovém případě spíše výrobce) určitě sděluje v dokumentaci k modulu.

Soubory s moduly jsou hledány v adresářích, které jsme určili v sekci Files. Každý z nich může obsahovat podadresáře (např. drivers, input, extensions, fonts), které jsou také prohledávány. Standardní adresář je /usr/X11R6/lib/modules/. Jako absolutní minimum se doporučuje nahrát alespoň modul extmod, bitmap pro správu systémových písem se nahrává automaticky.

Section "Module"
  Load "record"
  Load "xaa"
  Load "extmod"
  Load "drm"
  Load "dbe"
  Load "dri"
  Load "v4l"
  Load "GLcore"
  Load "glx"
  Load "xtrap"
  Load "type1"
  Load "freetype"
  Load "xtt"
  Load "speedo"
EndSection

InputDevice

Konfigurační soubor může obsahovat (a obvykle také obsahuje) více těchto sekcí. Minimálně dvě jsou vždy přítomny: jedna pro myš a druhá pro klávesnici.

Section "InputDevice"
  Identifier "Keyboard0"
  Driver "Keyboard"
  Option "CoreKeyboard"
  Option "MapName" "Standard Keyboard [ pc105 + toggle ]"
  Option "Protocol" "Standard"
  Option "XkbLayout" "cz,us"
  Option "XkbModel" "pc105"
  Option "XkbOptions" "grp:shift_toggle"
  Option "XkbRules" "xfree86"
EndSection

Section "InputDevice"
  Identifier "Mouse0"
  Driver "mouse"
  Option "CorePointer"
  Option "Protocol" "auto"
  Option "Device" "/dev/mouse"
  Option "Buttons" "3"
  #Option "Resolution" "N" #ukázka
  Option "ZAxisMapping" "4 5"
EndSection

Celá sekce je platná, je-li na ni odkazováno v sekci ServerLayout nebo parametrem z příkazové řádky.

Parametr Význam hodnoty
Identifier Představuje jedinečné jméno vstupního zařízení.
Driver Typ zařízení, nejčastěji keyboard a mouse.
CoreKeyboard Definuje hlavní klávesnici, viz také výše.
CorePointer Definuje hlavní polohovací zařízení, viz také výše.
MapName Popis typu klávesnice.
Protocol V případě klávesnice obvykle standard. V případě myší dnes již nejlépe auto, ale různé typy jsou stále rozlišovány.
Device Platí pro myš, obvykle /dev/mouse, což bývá symbolický odkaz např. na /dev/psaux.
Buttons X server neumí zjistit počet tlačítek myši (což mě udivuje, ale tak se to píše v dokumentaci). Přednastavená hodnota je 3 tlačítka.
Resolution Rozlišení pro pohyb kurzoru myši.
ZAxisMapping Namapování ostatních tlačítek myši. V uvedeném případě je pomyslné tlačítko 4 (ve skutečnosti pohyb kolečkem od sebe) a 5 (pohyb kolečkem k sobě) namapováno na osu Z, tedy posunování obsahu okna (scrolling).
XkbRules Soubory pravidel pro mapování klávesnice, soubory se nacházejí v adresáři /usr/X11R6/lib/X11/xkb/rules/.
XkbModel Název modelu klávesnice, její typ.
XkbLayout Rozložení klávesnice.
XkbVariant Varianty rozložení.
XkbOptions Další vlastnosti a konfigurace ovládání klávesnice.

Další parametry jsou pro speciální účely, případně nedokumentované. Konfigurace klávesnice prošla během vývoje XFree mnoha změnami a zejména komplexní prostředí jako KDE tento vývoj výrazně ovlivnila. Už fakt, že návody k nastavení klávesnice jsou nejednotné, stejně jako technologie, svědčí o tom, že řešení není ideální. Více informací lze nalézt v již zmiňovaném dokumentu.

Příště se budeme věnovat nastavení výstupních zařízení.

Seriál Na co se často ptáme (dílů: 11)

První díl: Na co se často ptáme 1: LILO, poslední díl: Na co se často ptáme: Balíčkovací systémy.
Předchozí díl: Na co se často ptáme: Organizácia disku
Následující díl: Na co se často ptáme 4: X Window System - II

Související články

Na co se často ptáme 4: X Window System - II
Na co se často ptáme 4: X Window System - III
Seriál Na co se často ptáme
Multimediální a jinak vylepšené klávesnice
Vylepšete si KDE
Jak řešit problémy
Instalace TrueType fontů do Mozilly
KDE: tipy a triky

Odkazy a zdroje

Popis konfiguračního souboru XFree
Dokumentace k XFree 4.3.0
Konkurenční grafický server x.org
Vyvíjející se konkurence Y Window System

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.