- Konfigurační soubor okna X
- XkbVariant definuje, které varianty dvou rozložení se mají používat. V případě rozvržení us se použije jeho výchozí varianta. V případě rozložení sk se použije jeho varianta qwerty. Možnost XkbOptions určuje, že uživatelé mohou přepínat mezi rozloženími pomocí klávesy CapsLock.
- Správa přístupu k serveru X a vzdálené zobrazování aplikací
- Když se něco pokazí
- Wayland, nový kompozitní správce oken
Konfigurační soubor okna X
V počátcích systému X konfigurace displeje znamenala mít rozsáhlé znalosti o možnostech displeje a schopnost vyjádřit informace nejen o rozlišení, ale také o hodnotách horizontální a vertikální synchronizace, barevné hloubce atd. Od nástupu sdružení VESA (Video Electronics Standards Association) a protokolů DDC (Display Data Channel), které umožňují, aby displej sděloval tyto schopnosti grafické kartě a tím i počítači, se konfigurace stala mnohem automatičtější. To je šťastné, protože nyní očekáváme, že budeme moci vzít svůj notebook kamkoli s sebou a jen připojit dostupný externí monitor nebo projektor.
Konfigurace myši, trackballu nebo klávesnice se také stala automatičtější. Zpravidla stačí zařízení připojit, často prostřednictvím připojení USB, a funguje.
Jako u většiny věcí v Linuxu však existuje základní konfigurační mechanismus, který můžete použít. Implementace Xorg ve skutečnosti získává konfigurační informace z několika zdrojů. Hlavním konfiguračním souborem je xorg.conf spolu se soubory obsaženými v adresáři xorg.conf.d. Ty se obvykle nacházejí v adresáři /etc/X11. Další konfigurace může pocházet z voleb příkazového řádku, proměnných prostředí, automatické detekce a záložních výchozích nastavení.
Konfigurační soubor xorg.conf a soubory v adresáři xorg.conf.d jsou uspořádány do sekcí, které mohou být uvedeny v libovolném pořadí. Obecný formát sekcí je uveden ve výpisu 1.
Výpis 1. Rozložení sekcí v souboru xorg.conf
Section "SectionName" SectionEntry ... EndSection
Zobrazit víceZobrazit více ikonu
Xorg s volbou -configure
. Příkaz Xorg
je vlastně symbolický odkaz z příkazu X
, který se obvykle nachází v /usr/bin. Příkaz Xorg
musíte spustit jako root a zajistit, aby nebyl spuštěn žádný server X. Jedním ze způsobů, jak toho dosáhnout, je upravit stavový řádek GRUB2 tak, aby se spouštěl ve víceuživatelském režimu bez X. Tradičně se jedná o runlevel 3. Jednoduše upravte položku spouštěcí nabídky, kterou chcete spustit, a přidejte 3
na konec řádku `linux boot/vmlinuz…‘, jak je znázorněno na obrázku 2.
Obrázek 2. Zavedení víceuživatelského režimu bez X
Pokud používáte systemd, můžete místo 3
použít systemd.unit=multi-user.target
.
Xorg -configure
načte dostupné ovladače zařízení a sondy pro hardware. Funguje na mnoha systémech, ale podle manuálové stránky má na některých systémech problémy. Dokumentace Fedory doporučuje používat zobrazení :1 místo výchozího zobrazení :0, takže můžete zkusit Xorg :1 -configure
, pokud prosté Xorg -configure
nefunguje.
Ukázkový soubor vytvořený touto metodou na mém systému openSUSE Tumbleweed je uveden v seznamu 2.
Listing 2. Příklad souboru xorg.conf
Předpokládáme-li, že váš displej podporuje DDC, což většina moderních displejů podporuje, můžete použít příkaz xrandr
k dotazu na jeho možnosti. Výpis 4 ukazuje informace o drm pro notebook s připojeným displejem a odpovídající výstup z příkazu xrandr
.
Výpis 4. Použití xrandr pro zjištění schopností displeje
XkbVariant definuje, které varianty dvou rozložení se mají používat. V případě rozvržení us se použije jeho výchozí varianta. V případě rozložení sk se použije jeho varianta qwerty. Možnost XkbOptions
určuje, že uživatelé mohou přepínat mezi rozloženími pomocí klávesy CapsLock.
Listování 5. Aktualizace konfigurace klávesnice
localectl. Nicméně příkaz localectl status
ukazuje, že tyto změny byly zachyceny při restartu systému, jak ukazuje výpis 6.
Výpis 6. Zobrazení stavu klávesnice pomocí localectl
Správci zobrazení se dělí do tří obecných kategorií.
- Správci dlaždicových oken rozdělují obrazovku na dlaždice a každou dlaždici zapisují odděleně od ostatních. Výkon je obecně dobrý.
- Skládací správci oken skládají jednotlivá okna na obrazovce do seznamu známého jako Z-pořadí. Když je novému oknu přidělen focus, je umístěno na vrchol Z-pořadí a všechna nižší okna jsou překreslena. To může být pomalé, zejména při drobných změnách, ale bylo vyvinuto několik optimalizací.
- Skládací správci oken jsou obvykle stohovací správci oken, kteří uchovávají vyrovnávací paměť pro každé okno a pak je spojí do jediné vyrovnávací paměti pro zobrazení, aniž by bylo nutné překreslovat každé jednotlivé okno a pak je přepsat dalším vyšším oknem v pořadí Z. V případě, že je okno zobrazeno v pořadí Z, je nutné jej překreslit. To také umožňuje efekty, jako je průhlednost.
Obrázek 3 ukazuje příklad správce oken I3 tiling. Začínáte s prázdnou pracovní plochou a poté vytvoříte okno, například okno terminálu. To zabírá celou obrazovku. Poté můžete otevřít další okno, které původní dlaždici rozdělí na dvě. Pokud pak otevřete další, obrazovka se rozdělí na tři dlaždice. Můžete se rozhodnout, zda chcete nové dlaždice vytvářet vodorovně nebo svisle. V tomto příkladu jsem se rozhodl rozdělit původní prostřední dlaždici obsahující hru sudoku vertikálně a vytvořit tak další malé okno terminálu. To jsem pak rozdělil vodorovně, abych přidal okno xlcock.
Obrázek 3. Správce oken v dlaždicích I3
Obvykle můžete okna přesouvat mezi virtuálními plochami, což velmi pomáhá, pokud máte otevřeno více velkých oken.
Seznam dostupných aplikací můžete otevřít jako nabídku přes horní okraj obrazovky a aplikace vybírat pomalým horizontálním posouváním nebo rychleji zadáním části nebo celého názvu, například „xclock“.
Na rozdíl od dlaždicových správců oken umožňují stohovací správci oken mít okna libovolné velikosti podporované displejem, včetně oken, která mohou přesahovat okraj displeje. Na obrázku 4 je příklad správce stohovacích oken Openbox, který ukazuje čtyři překrývající se okna a nabídku, která umožňuje otevírat nové aplikace.
Obrázek 4. Správce stohovacích oken Openbox
Základní správci stohovacích oken pracují na principu překreslování všech oken na displeji při změně nebo přesunu okna s fokusem, jeho zavření nebo změně velikosti. To může mít za následek vícenásobné přepsání různých oblastí obrazovky, protože se zpracovává celý Z-pořadník. K minimalizaci množství zbytečného přepisování lze použít algoritmy.
Vylepšením základní myšlenky stohování je správce skládání oken. Takový správce oken uchovává vyrovnávací paměť obsahu jednotlivých oken a sloučí je nebo složí do jediného okna. Do vyrovnávací paměti zobrazovací karty je pak třeba zapsat pouze aktualizované části. Jedním z příkladů kompozitního správce oken je Compiz, zatímco desktopová prostředí jako KDE a GNOME také používají kompozitní správce oken.
Pracovní prostředí obecně poskytuje plnohodnotné uživatelské prostředí, včetně věcí, jako je grafický uvítací systém pro přihlášení, grafické systémové nabídky, zásobník pro zobrazení widgetů, jako je denní čas, ikony otevřených aplikací atd. Sada integrovaných aplikací obvykle poskytuje uživateli konzistentní prostředí. Většina správců oken je mnohem lehčí než kompletní desktopové prostředí.
Obrázek 5 znázorňuje koncept průhlednosti v kompozitním správci oken nebo desktopovém prostředí. Při přípravě na přesun okna terminálu podržte stisknuté levé tlačítko myši (tlačítko 1) na titulkovém pruhu okna terminálu. Zobrazení se změní a ukáže, jaká okna se nacházejí pod danou oblastí. To vám může pomoci přesunout jedno okno tak, aby nebylo nad jiným oknem, když chcete, aby byla viditelná obě.
Obrázek 5. V případě, že chcete přesunout jedno okno nad jiné okno, můžete se podívat na obrázek 5. Průhlednost s pracovní plochou KDE Plasma
Obrázek 6 ilustruje prostředí GNOME 3.28 v systému Fedora. Klepnutím na tlačítko Aktivity v levém horním rohu této obrazovky se otevře ikonový seznam oblíbených položek v levé části obrazovky a zobrazí se sada spuštěných aplikací jako malá okna. Můžete kliknout na oblíbenou položku, kliknout na malé okno nebo použít vyhledávací pole v horní části obrazovky k vyhledání programu. V tomto konkrétním příkladu jsem kliknutím na den a čas v horním panelu otevřel widget, který zobrazuje některé zprávy, například dostupné aktualizace nebo poslední dokončený příkaz, a také další informace o datu a čase. Ikony v pravém horním rohu umožňují přístup k funkcím, jako je hlasitost reproduktoru, nastavení sítě, možnosti přístupu a možnosti vypnutí, odhlášení nebo restartování počítače.
Obrázek 6. Činnosti a widgety prostředí Fedora GNOME
Zmínil jsem se, že desktopová prostředí často obsahují integrované aplikace, které vám pomáhají spravovat různé aspekty pracovní plochy nebo systému. Obrázek 7 ukazuje dialogové okno nastavení prostředí Fedora GNOME 3.28 otevřené u nastavení zobrazení. Tento příklad je z notebooku s externím monitorem Viewsonic. Běžnou volbou v tomto případě je spojení obou obrazovek v jeden displej nebo zrcadlení obsahu jedné obrazovky na druhou. V tomto případě zvolíme spojení obou displejů s vestavěným displejem logicky vpravo od externího monitoru.
Obrázek 7: Spojení obou displejů. Dialogové okno Nastavení obrazovky prostředí Fedora GNOME
Jako můžete měnit rozlišení obrazovky v souboru xorg.conf, můžete také kompozitoru říci, aby okno škáloval na 100 % nebo 200 %. Dostupné škálování může záviset na velikosti monitoru a také na konkrétní pracovní ploše, kterou používáte. Mám také monitor UHD (4K) a oči, které nedokážou přečíst velmi malé nativní rozlišení textu. Na tomto monitoru tedy často používám škálovací faktor 200 %.
Všimněte si, že změny provedené pomocí nastavení GNOME neaktualizují soubor xorg.conf. Místo toho jsou tato nastavení uložena v souboru .config/monitors.xml ve vašem domovském adresáři. GNOME také udržuje další nastavení displeje a klávesnice v databázi dconf, kterou rovněž najdete pod svým domovským adresářem. Tím, že jsou tato nastavení ve vašem domovském adresáři, platí pouze pro vás. Ostatní uživatelé mohou mít jiná nastavení.
Pokud máte nainstalováno více desktopových prostředí nebo správců oken, možná vás zajímá, jak si mezi nimi vybrat. Můžete spustit víceuživatelský režim, jak bylo popsáno dříve v tomto návodu, a poté spustit příkaz, například startx
, který spustí X s příslušným správcem. Pokud máte desktopové prostředí, jako je GNOME, které poskytuje uvítací okno,budete mít pravděpodobně na obrazovce uvítacího okna možnost volby nastavení. Obrázek 8 ukazuje volby nainstalované v mém systému Fedora 28.
Obrázek 8. Uvítací okno prostředí Fedora GNOME 3 s výběrem WM
Správa přístupu k serveru X a vzdálené zobrazování aplikací
Dosud jste viděli příklady spuštění systému X na stolním počítači s jedním, případně dvěma monitory. Server X zachází s jedním displejem jako se souborem monitorů, které sdílejí společnou sadu vstupních zařízení.
Notebook zobrazený na obrázku 7 má tedy jeden displej, přestože má vestavěný monitor a externí monitor. V tomto příkladu oba monitory pracují, jako by byly spojeny dohromady. Vzniká tak jediná logická obrazovka, která umožňuje přesouvání oken mezi monitory, nebo dokonce jejich rozdělení. Víceuživatelské systémy mají obvykle více displejů, takže potřebujete způsob, jak je popsat.
X používá pro displeje třídílný název ve tvaru hostname:displaynumber.screennumber, kde hostname je název hostitele počítače, displaynumber je číslo začínající 0, které popisuje konkrétní displej, a screennumber se použije, pokud jsou dva nebo více monitorů považovány za samostatné obrazovky, nikoli za jedinou logickou obrazovku. Název hostitele i číslo obrazovky lze vynechat, takže nejčastěji se setkáte se zápisem displeje :0. Aktuální nastavení si můžete prohlédnout v proměnné prostředí DISPLAY
, jak ukazuje výpis 7.
Výpis 7. Proměnná prostředí DISPLAY
ian@attic5-u18:~$ echo $DISPLAY:0
Zobrazit víceZobrazit více ikony
DISPLAY umožní libovolnému uživateli vypisovat výstup na obrazovku, ale systém X má určitá omezení řízení přístupu. Ukážu vám tři způsoby, jak se připojit k serveru X.
- Použijte ssh s předáváním X
- Použijte Xauthority a xauth
- Použijte řízení hostitele nebo uživatele pomocí xhost
Nejbezpečnějším způsobem, jak používat X na jiném displeji, je použití předávání X (někdy nazývané tunelování). To musí být povoleno na serveru SSH, ke kterému se připojujete, pomocí řádku X11Forwarding yes
v konfiguračním souboru /etc/ssh/sshd_config. Musíte ji také povolit na klientovi zadáním volby -X
(to je velké X) v příkazu ssh
. Výpis 8 porovnává, co se stane, když se pomocí příkazu su - jane
přepnu na uživatele jane v systému a pak použiji příkaz ssh -X jane@localhost
. V obou případech se pokusím spustit příkaz xclock
, aby se mi na obrazovce zobrazily malé hodiny.
Listování 8. X forwarding
DISPLAY nastavena na localhost:10.0. Všimněte si, že po přihlášení pomocí ssh je proměnná DISPLAY
nastavena na localhost:10.0. Server sshd pro vás v cílovém systému fakticky vytváří server X. Nechcete, aby to zasahovalo do skutečných serverů X v systému. Proto konfigurační soubor /etc/ssh/sshd_config obsahuje řádek X11DisplayOffset 10
, který určuje počáteční offset (od 0) pro servery X přes ssh. Výchozí hodnota je 10, což obvykle stačí pro pracovní stanici s jedním uživatelem, ale v systému s více uživateli může být nutné ji zvýšit. Druhému ssh připojení k serveru by bylo přiřazeno zobrazení 11 a tak dále.
Druhou metodou umožňující ostatním připojit se k serveru X je metoda Xauthority. Soubor Xauthority obsahuje autorizační informace, které se používají při připojování k serveru X. Proměnná prostředí XAUTHORITY
určuje název aktuálně používaného souboru, buď systémem vygenerovaného souboru, jako je /run/user/1000/gdm/Xauthority v mém systému Ubuntu 18, nebo vašeho vlastního souboru .Xauthority.
Příkaz xauth
slouží k vypsání, extrakci nebo sloučení nových autorit. pomocí volby -f
můžete zadat jiný soubor Xauthority než ten, který je ve vaší proměnné prostředí XAUTHORITY
. Můžete zadat příkazy xauth
na příkazovém řádku nebo jej spustit a použít příkazy z programu. Výpis 9 ukazuje několik příkladů a extrahuje mou autorizaci pro zobrazení :0 do souboru s názvem auth-ian.
Výpis 9. Extrakce informací o autoritě pomocí xauth
XAUTHORITY. Uživatelka jane pak může zobrazovat aplikace na mém displeji.
Výpis 10. Sloučení informací o autoritě pomocí xauth
xhost. Na pracovní stanici jej můžete klidně použít k tomu, abyste mohli otevírat grafické programy při spuštění jako jiný uživatel. Příkaz xhost
bez voleb zobrazí aktuální seznam řízení přístupu. Chcete-li povolit další systémy nebo uživatele, použijte příkaz +
s volbou jména. Výpis 11 ukazuje, jak přidat uživatele john v mém místním systému do seznamu řízení přístupu, a poté zobrazuje uživatele john, který otevírá grafický program xclock
.
Výpis 11. Výpis 11 ukazuje, jak přidat uživatele john do seznamu řízení přístupu. Použití xhost k povolení jednoho místního uživatele
xhost +local:, jak je znázorněno v seznamu 12. Všimněte si dvojtečky (:) na konci local
.
Listování 12. Použití xhost pro povolení všech místních nesíťových uživatelů
– místo +
. Další možnosti naleznete v manuálové nebo informační stránce xhost.
Pro zabezpečení byste měli spíše než xauth
nebo xhost
použít tunelování SSH nebo případně jiné řešení, například virtuální síťový počítač (VNC). VNC je mimo rozsah tohoto tutoriálu, ale poskytuje lepší výkon než tunelování SSH.
Když se něco pokazí
Při tolika možných zdrojích informací o konfiguraci X musíte vědět, kde hledat informace z protokolů. Chyby související s vaší individuální relací X se mohou nacházet v souboru .xsession-errors nebo případně .xsession-errors-:0 ve vašem domovském adresáři. Přípona :0 je určena pro chyby na displeji :0.
Hlavní log X se nachází v adresáři /var/log. Jeho název je obvykle /var/log/Xorg.0.log, kde 0 je číslo vašeho displeje. Číslo bude jiné, pokud nepoužíváte display :0.
Wayland, nový kompozitní správce oken
Nedávno byl vyvinut nový zobrazovací server a kompozitní protokol Wayland. V tomto modelu aplikace samy vytvářejí obsah svých oken ve vyrovnávací paměti mimo obrazovku. Kompozitor a server jsou integrovány. Záměrem Waylandu je poskytnout jednodušší a efektivnější řešení než X. Wayland většinou znovu využívá stávající ovladače a infrastrukturu, což projekt umožňuje.
Na rozdíl od X nemá Wayland síťově transparentní design. V případě potřeby vzdáleného zobrazení oken lze použít jiná řešení, například VNC.
Weston je referenční kompozitor implementující Wayland. GNOME, KDE, Enlightenment a několik dalších správců oken nyní podporuje Wayland. Sady nástrojů, jako je Qt 5 a GTK+, také podporují Wayland. V době psaní tohoto článku (prosinec 2018) se Fedora i Ubuntu dodávají s Waylandem jako výchozím zobrazovacím serverem.
Server Xorg nyní obsahuje XWayland, který umožňuje spouštět stávající aplikace X s kompozitorem Wayland.
Většina současných implementací má stále na výběr, zda pro každou relaci spustí X nebo Wayland. Na obrázku 7 je příklad toho, jak uvítací systém GMS umožňuje zvolit typ relace. Ve Fedoře je výchozím nastavením spuštění GNOME na Waylandu.
Můžete to také zkontrolovat za běhu, aniž byste se museli přihlašovat. Pokud používáte Wayland, bude nastavena proměnná prostředí WAYLAND_DISPLAY
. V systémech používajících systemd můžete použít příkaz loginctl
k určení čísla přihlašovací relace a poté jej znovu použít k určení typu relace. Výpis 13 ukazuje tyto nástroje nejprve v systému Fedora 28 používajícím Wayland a poté v systému Ubuntu 18 používajícím Xorg.
Výpis 13. Určení, zda používáte X nebo Wayland