Learn Linux 101: Az X11 telepítése és konfigurálása

Az X Window konfigurációs fájl

Az X korai időszakában a kijelző konfigurálása azt jelentette, hogy alaposan ismerni kellett a kijelző képességeit, és nemcsak a felbontásra, hanem a vízszintes és függőleges szinkronértékekre, a színmélységre és így tovább vonatkozó információkat is ki lehetett fejezni. A Video Electronics Standards Association (VESA) és a Display Data Channel (DDC) protokollok megjelenése óta, amelyek lehetővé teszik, hogy a kijelző közölje ezeket a képességeket a grafikus kártyával és így a számítógéppel, a konfigurálás sokkal automatikusabbá vált. Ez szerencsés, mivel ma már elvárjuk, hogy bárhová magunkkal vihessük a notebookunkat, és egyszerűen csak csatlakoztassunk egy rendelkezésre álló külső monitort vagy kivetítőt.

Az egér, a trackball vagy a billentyűzet konfigurálása szintén automatikussá vált. Általában csak csatlakoztatjuk az eszközt, gyakran USB-kapcsolaton keresztül, és már működik is.

Mindenesetre, mint a legtöbb dolognál a Linuxban, itt is van egy mögöttes konfigurációs mechanizmus, amit használhatunk. Valójában az X Xorg implementációja több forrásból szerzi be a konfigurációs információkat. A fő konfigurációs fájl az xorg.conf, valamint az xorg.conf.d könyvtárból bevont fájlok. Ezek általában az /etc/X11 könyvtárban találhatók. További konfiguráció származhat parancssori opciókból, környezeti változókból, automatikus felismerésből és alapértelmezett visszaállításokból.

A xorg.conf konfigurációs fájl és az xorg.conf.d könyvtárban található fájlok szakaszokba vannak rendezve, amelyek tetszőleges sorrendben megadhatók. A szakaszok általános formátuma az 1. felsorolásban látható.

1. felsorolás. Szekciók elrendezése az xorg.conf állományban

 Section "SectionName" SectionEntry ... EndSection

Még több megjelenítéseMég több ikon megjelenítése

Xorg parancsot a -configure opcióval. A Xorg parancs valójában egy szimbolikus link a X parancsból, amely általában az /usr/bin könyvtárban található. A Xorg parancsot root felhasználóként kell futtatni, és biztosítani kell, hogy ne fusson X-kiszolgáló. Ennek egyik módja a GRUB2 stanza szerkesztése, hogy többfelhasználós üzemmódba bootoljon X nélkül. Hagyományosan ez a 3. futási szint. Egyszerűen szerkessze meg azt a boot menübejegyzést, amelyet bootolni szeretne, és a `linux boot/vmlinuz…’ sor végére írjon egy 3-et a 2. ábrán látható módon.

2. ábra. Többfelhasználós üzemmódba való bootolás X nélkül

Ha systemd-t használ, akkor a 3 helyett a systemd.unit=multi-user.target-t használhatja.

Xorg -configure betölti a rendelkezésre álló eszközillesztőket és szondákat a hardverhez. Sok rendszeren működik, de a man oldal szerint néhány rendszeren problémái vannak. A Fedora dokumentációja a :1 megjelenítés használatát javasolja az alapértelmezett :0 megjelenítés helyett, így kipróbálhatja a Xorg :1 -configure-t, ha a sima Xorg -configure nem működik.

A 2. felsorolásban látható az openSUSE Tumbleweed rendszeremen ezzel a módszerrel létrehozott mintafájl.

A 2. felsorolás. Példa xorg.conf

Feltételezve, hogy a kijelző támogatja a DDC-t, ahogy a legtöbb modern kijelző támogatja, a xrandr paranccsal lekérdezheti a képességeit. A 4. lista egy csatlakoztatott kijelzővel rendelkező notebook drm-információit és a xrandr megfelelő kimenetét mutatja.

Listing 4. Az xrandr használata a kijelző képességeinek meghatározásához

XkbVariant opció határozza meg, hogy a két elrendezés mely változatait kell használni. Az us elrendezés esetén annak alapértelmezett változatát használjuk. A sk elrendezés esetén a qwerty változatot kell használni. A XkbOptions opció jelzi, hogy a felhasználók a CapsLock billentyűvel válthatnak az elrendezések között.

Listázás 5. A billentyűzetkonfiguráció frissítése

localectl parancsot kellene használnia. A localectl status azonban azt mutatja, hogy ezeket a módosításokat a rendszer újraindításakor átvette a rendszer, amint az a 6. listában látható.

Listing 6. A billentyűzet állapotának megjelenítése a localectl segítségével

A kijelzőkezelők három általános kategóriába sorolhatók.

  1. A csempés ablakkezelők a képernyőt csempékre osztják, és minden egyes csempét külön írnak a többitől. A teljesítmény általában jó.
  2. A halmozó ablakkezelők az egyes ablakokat egy Z-sorrendnek nevezett listában halmozzák egymásra a képernyőn. Amikor egy új ablak kap fókuszt, az a Z-sorrend tetejére kerül, és az összes alsó ablakot újrarajzolja. Ez lassú lehet, különösen kisebb változtatások esetén, de számos optimalizációt fejlesztettek ki.
  3. A kompozíciós ablakkezelők általában egymásra halmozó ablakkezelők, amelyek minden egyes ablakhoz tartanak egy puffert, majd a megjelenítéshez egyetlen pufferré egyesítik őket anélkül, hogy minden egyes ablakot újra kellene rajzolni, majd felülírni a Z-sorrendben következő magasabb ablakkal. Ez olyan effektusokat is lehetővé tesz, mint például az átlátszóság.

A 3. ábra az I3 csempéző ablakkezelő egy példáját mutatja. Egy üres asztallal kezdünk, majd létrehozunk egy ablakot, például egy terminálablakot. Ez elfoglalja a teljes képernyőt. Ezután megnyithat egy másik ablakot, amely kettéosztja az eredeti csempét. Ha ezután még egyet nyit, a képernyő három csempére oszlik. Választhat, hogy vízszintesen vagy függőlegesen hoz létre új csempéket. Ebben a példában úgy döntöttem, hogy a sudoku játékot tartalmazó eredeti középső csempét függőlegesen osztom fel, hogy egy másik kis terminálablakot hozzak létre. Ezután ezt vízszintesen felosztottam, hogy hozzáadjak egy xlcock ablakot.

3. ábra. Az I3 csempézett ablakkezelő

Az ablakokat általában áthelyezheti a virtuális asztalok között, ami sokat segít, ha több nagy ablak van nyitva.

A rendelkezésre álló alkalmazások listáját a képernyő tetején található menüként nyithatja meg, és lassú vízszintes görgetéssel vagy gyorsabban, a név egy részének vagy egészének, például az “xclock” beírásával választhat alkalmazásokat.

A csempézett ablakkezelőkkel ellentétben az egymásra helyezett ablakkezelők lehetővé teszik, hogy a kijelző által támogatott bármilyen méretű ablakai legyenek, beleértve a kijelző szélét esetleg átfedő ablakokat is. A 4. ábra egy példa az Openbox halmozó ablakkezelőre, amely négy egymást átfedő ablakot és az új alkalmazások megnyitását lehetővé tevő menüt mutatja.

4. ábra. Az Openbox egymásra helyezett ablakkezelő

Az alapvető egymásra helyezett ablakkezelők azon az elven működnek, hogy a kijelzőn lévő összes ablakot újrarajzolják, amikor a fókuszban lévő ablak megváltozik, vagy áthelyezik, bezárják vagy átméretezik. Ez a képernyő különböző területeinek többszörös újraírását eredményezheti a teljes Z-sorrend feldolgozása során. Algoritmusok segítségével minimalizálható a szükségtelen újraírás mennyisége.

A halmozás alapötletének továbbfejlesztése az összetett ablakkezelő. Egy ilyen ablakkezelő puffert tart az egyes ablakok tartalmáról, és ezeket egyetlen ablakba egyesíti vagy kompozitálja. Ezután csak a frissített részeket kell kiírni a megjelenítőkártya pufferébe. A Compiz a kompozitáló ablakkezelő egyik példája, míg az olyan asztali környezetek, mint a KDE és a GNOME szintén használnak kompozitáló ablakkezelőket.

Az asztali környezet általában teljes körű felhasználói élményt nyújt, beleértve olyan dolgokat, mint a grafikus bejelentkezési üdvözlő, grafikus rendszermenük, egy tálca a widgetek, például a napszak, a nyitott alkalmazások ikonjai stb. megjelenítésére. Az integrált alkalmazások csomagja általában egységes felhasználói élményt nyújt a felhasználó számára. A legtöbb ablakkezelő sokkal könnyebb, mint egy teljes asztali környezet.

Az 5. ábra az átláthatóság fogalmát szemlélteti egy összetett ablakkezelőben vagy asztali környezetben. Tartsa lenyomva az egér bal gombját (1-es gomb) a terminálablak címsorán, amikor az ablak mozgatására készül. A kijelző megváltozik, és megmutatja, hogy milyen ablakok vannak az adott terület alatt. Ez segíthet abban, hogy az egyik ablak ne legyen a másik fölött, amikor azt szeretné, hogy mindkettő látható legyen.

5. ábra. Átláthatóság a KDE Plasma asztallal

A 6. ábra a GNOME 3.28-as verzióját szemlélteti Fedora rendszeren. A képernyő bal felső részén található Tevékenységek gombra kattintva a képernyő bal oldalán megnyílik a kedvencek ikonizált listája, és kis ablakokként megjelenik a futó alkalmazások egy sora. Kattintson egy kedvencre, kattintson egy kis ablakra, vagy használja a képernyő tetején található keresőmezőt egy program keresésére. Ebben a konkrét példában a felső sávban a napra és az időre kattintottam, hogy megnyíljon egy widget, amely néhány üzenetet, például az elérhető frissítéseket vagy az utolsó befejezett parancsot, valamint további dátum- és időinformációkat jelenít meg. A jobb felső sarokban található ikonok segítségével olyan funkciókhoz férhetünk hozzá, mint a hangszóró hangereje, a hálózati beállítások, az elérhetőségi lehetőségek, valamint a leállítás, a kijelentkezés vagy az újraindítás lehetőségei.

6. ábra. Fedora GNOME tevékenységek és widgetek

Elmondtam, hogy az asztali környezetek gyakran tartalmaznak integrált alkalmazásokat, amelyek segítenek az asztal vagy a rendszer különböző aspektusainak kezelésében. A 7. ábra a Fedora GNOME 3.28 beállítások párbeszédpanelét mutatja, amely a megjelenítési beállításoknál van megnyitva. Ez a példa egy külső Viewsonic monitorral rendelkező notebookról készült. Gyakori választási lehetőségek ebben az esetben a két képernyő egyetlen kijelzőként való egyesítése vagy az egyik képernyő tartalmának tükrözése a másikra. Ebben az esetben a két képernyő egyesítését választjuk úgy, hogy a beépített kijelző logikailag a külső monitor jobb oldalán legyen.

7. ábra. Fedora GNOME képernyőbeállítások párbeszédpanel

Mivel az xorg.conf fájlban megváltoztathatjuk a képernyő felbontását, azt is megmondhatjuk a kompozitornak, hogy az ablakot 100%-ra vagy 200%-ra méretezze. Az elérhető méretezés függhet a monitor méretétől, valamint az Ön által használt konkrét munkaasztaltól. Nekem is van UHD (4K) monitorom és szemem, amely nem tudja olvasni a nagyon kicsi natív szövegfelbontást. Így ezen a monitoron gyakran használok 200%-os méretezési tényezőt.

Megjegyzendő, hogy a GNOME beállítások segítségével végzett módosítások nem frissítik az xorg.conf állományt. Ehelyett ezek a beállítások az otthoni könyvtárban lévő .config/monitors.xml fájlba kerülnek elmentésre. A GNOME egyéb kijelző- és billentyűzetbeállításokat is karbantart a dconf adatbázisban, amelyet szintén a home könyvtárad alatt találsz. Azzal, hogy ezek a beállítások a home könyvtáradban vannak, csak rád vonatkoznak. Más felhasználóknak más beállításai lehetnek.

Ha több asztali környezetet vagy ablakkezelőt telepített, akkor talán elgondolkodott azon, hogy hogyan választhat közöttük. A bemutató korábbi részében leírtak szerint többfelhasználós üzemmódba bootolhat, majd a startx parancsot futtatva elindíthatja az X-et a megfelelő kezelővel. Ha olyan asztali környezeted van, mint a GNOME, amely üdvözlőprogramot biztosít,akkor valószínűleg van egy beállítási lehetőség az üdvözlőprogram képernyőjén. A 8. ábra a Fedora 28-as rendszeremre telepített választási lehetőségeket mutatja.

8. ábra. Fedora GNOME 3 üdvözlője WM választással

Az X-kiszolgálóhoz való hozzáférés és az alkalmazások távoli megjelenítése

Eleddig példákat láthattunk arra, hogy az X egy, esetleg két monitorral rendelkező asztali számítógépen fut. Az X-kiszolgáló az egyetlen kijelzőt olyan monitorok gyűjteményeként kezeli, amelyek osztoznak a bemeneti eszközök közös készletén.

A 7. ábrán látható notebookon tehát egy kijelző van, annak ellenére, hogy van beépített és egy külső monitor is. Ebben a példában a két monitor úgy működik, mintha össze lenne kötve. Így egyetlen logikai képernyő jön létre, amely lehetővé teszi, hogy az ablakok a monitorok között mozogjanak, vagy akár meg is oszthatók közöttük. A többfelhasználós rendszerek általában több kijelzővel rendelkeznek, ezért szükség van ezek leírására.

X háromrészes nevet használ a kijelzőkhöz a hostname:displaynumber.screennumber formában, ahol a hostname a számítógép állomásneve, a displaynumber egy 0-val kezdődő szám, amely leírja az adott kijelzőt, a screennumber pedig akkor érvényes, ha két vagy több monitort különálló képernyőként kezel, nem pedig egyetlen logikai képernyőként. Mind a hostname, mind a screennumber elhagyható, így a leggyakoribb kijelző jelölés a :0. Az aktuális beállítást a DISPLAY környezeti változóban láthatja a 7. felsorolásban látható módon.

7. felsorolás. A DISPLAY környezeti változó

ian@attic5-u18:~$ echo $DISPLAY:0

Show moreShow more ikon

DISPLAY környezeti változó beállításával bármelyik felhasználó írhatna kimenetet a képernyőre, de az X-nek van néhány hozzáférés-szabályozási korlátja. Három módszert mutatok az X-kiszolgálóhoz való csatlakozásra.

  1. Ssh használata X-továbbítással
  2. Xauthority és xauth használata
  3. Host vagy felhasználóvezérlés használata xhosttal

Az X használatának legbiztonságosabb módja egy másik kijelzőn az X-továbbítás (néha tunnelingnek is nevezik) használata. Ezt engedélyezni kell az SSH-kiszolgálón, amelyhez csatlakozik, a X11Forwarding yes sorral a /etc/ssh/sshd_config konfigurációs fájlban. A kliensen is engedélyeznie kell a ssh parancsban a -X (ez nagy X) opció megadásával. A 8. lista összehasonlítja, mi történik, ha a su - jane paranccsal átváltok a rendszeremen jane felhasználóra, majd a ssh -X jane@localhost parancsot használom. Mindkét esetben megpróbálom futtatni a xclock parancsot, hogy egy kis óra jelenjen meg a képernyőmön.

Listázás 8. X-továbbítás

DISPLAY változó a localhost:10.0-ra van állítva. Az sshd kiszolgáló gyakorlatilag létrehoz egy X-kiszolgálót a célrendszeren. Nem akarod, hogy ez zavarja a rendszerben lévő valódi X-kiszolgálókat. Ezért a konfigurációs fájl, az /etc/ssh/sshd_config tartalmaz egy X11DisplayOffset 10 sort az ssh-n keresztüli X-kiszolgálók kezdő eltolásának (0-tól) megadására. Az alapértelmezett érték 10, ami általában elegendő egy egyfelhasználós munkaállomáson, de egy többfelhasználós rendszerben szükség lehet a növelésére. Egy második ssh-kapcsolat a szerverhez a 11-es kijelzőt kapná, és így tovább.

A második módszer, amellyel lehetővé tehetjük, hogy mások is csatlakozhassanak egy X-kiszolgálóhoz, az Xauthority módszer. Az Xauthority fájl tartalmazza az X-kiszolgálóhoz való csatlakozáskor használt engedélyezési információkat. A XAUTHORITY környezeti változó adja meg a jelenleg használt fájl nevét, amely vagy egy rendszer által generált fájl, például /run/user/1000/gdm/Xauthority az én Ubuntu 18 rendszeremen, vagy a saját .Xauthority fájl.

A xauth paranccsal listázhatja, kivonhatja vagy beolvaszthatja az új hatóságokat. a -f kapcsolóval megadhat egy másik Xauthority fájlt, mint ami a XAUTHORITY környezeti változóban szerepel. Megadhatja a xauth parancsokat a parancssorban, vagy elindíthatja a programot, és a programon belül használhatja a parancsokat. A 9. lista mutat néhány példát, és kivonja a :0 megjelenítésre vonatkozó jogosultságomat egy auth-ian.

nevű fájlba

Listing 9. Hatósági információk kinyerése az xauth használatával

XAUTHORITY környezeti változót. Ezután jane felhasználó megjelenítheti az alkalmazásokat a kijelzőmön.

10. lista. Hatósági információk összevonása xauth használatával

xhost parancs használata. Munkaállomáson ezt arra használhatja, hogy grafikus programokat nyisson meg, miközben más felhasználóként fut. A xhost parancs opciók nélkül megjeleníti az aktuális hozzáférés-vezérlési listát. A + opciót egy névvel együtt használhatja további rendszerek vagy felhasználók engedélyezéséhez. A 11. lista azt mutatja, hogy a helyi rendszeremen lévő john nevű felhasználót hozzáadjuk a hozzáférés-vezérlési listához, majd azt, hogy a john nevű felhasználó megnyitja a grafikus xclock programot.

11. lista. Az xhost használata egyetlen helyi felhasználó engedélyezéséhez

xhost +local: használatával történik a 12. listában bemutatott módon. Figyelje meg a kettőspontot (:) a local végén.

12. lista. Az xhost használata az összes helyi, nem hálózati felhasználó engedélyezéséhez

+ helyett a --t használja az engedélyezett bejegyzések eltávolításához. További lehetőségekért lásd az xhost man vagy info oldalakat.

A biztonság érdekében a xauth vagy xhost helyett inkább SSH-alagutat vagy esetleg más megoldást, például Virtual Network Computingot (VNC) használjon. A VNC nem tartozik ennek a bemutatónak a tárgykörébe, de jobb teljesítményt nyújt, mint az SSH tunneling.

Ha a dolgok rosszul mennek

Az X konfigurációs információk oly sok lehetséges forrása miatt tudnia kell, hol keresse a naplóinformációkat. Az egyéni X-munkamenethez kapcsolódó hibák a .xsession-errors vagy esetleg a .xsession-errors-:0 könyvtárban találhatók az otthoni könyvtárban. A :0 utótag a megjelenő hibákra vonatkozik :0.

A fő X-napló a /var/log könyvtárban található. A neve általában /var/log/Xorg.0.log, ahol a 0 a kijelző száma. A szám más lesz, ha nem a display :0-t használod.

Wayland, egy új kompozitáló ablakkezelő

A közelmúltban kifejlesztettek egy új megjelenítési kiszolgálót és kompozitáló protokollt Wayland néven. Ebben a modellben az alkalmazások, maguk hozzák létre ablakuk tartalmát egy képernyőn kívüli pufferben. A kompozitort és a kiszolgálót integrálják. A Wayland célja, hogy az X-nél egyszerűbb és hatékonyabb megoldást nyújtson. A Wayland többnyire a meglévő meghajtókat és infrastruktúrát használja újra, ami lehetővé teszi a projektet.

A Wayland az X-szel ellentétben nem hálózati transzparens kialakítású. Más megoldások, például a VNC használható, ha távoli ablakmegjelenítésre van szükség.

A Weston egy Waylandet megvalósító referencia kompozitor. A GNOME, a KDE, az Enlightenment és számos más ablakkezelő már támogatja a Waylandet. Az olyan eszközkészletek, mint a Qt 5 és a GTK+ szintén támogatják a Waylandet. A cikk írásának idején (2018 decemberében) a Fedora és az Ubuntu is a Waylandet szállítja alapértelmezett megjelenítő szerverként.

A Xorg szerver most már tartalmazza az XWaylandet, amely lehetővé teszi, hogy a meglévő X alkalmazások Wayland kompozitorral fussanak.

A legtöbb jelenlegi implementációban még mindig választható, hogy az X vagy a Wayland fut-e minden munkamenetben. A 7. ábrán látható egy példa arra, hogy a GMS üdvözlője hogyan teszi lehetővé a munkamenet típusának kiválasztását. A Fedora rendszeren az alapértelmezett a GNOME futtatása Waylanden.

Futásidőben is ellenőrizheti, anélkül, hogy be kellene jelentkeznie. Ha Waylandet futtat, akkor a WAYLAND_DISPLAY környezeti változó lesz beállítva. A systemd-t használó rendszereken a loginctl paranccsal meghatározhatja a bejelentkezési munkamenet számát, majd újra használhatja a munkamenet típusának meghatározásához. A 13. lista mutatja ezeket az eszközöket, először egy Waylandet használó Fedora 28-as rendszeren, majd egy Xorgot futtató Ubuntu 18-as rendszeren.

13. lista. Annak meghatározása, hogy X-et vagy Waylandet használ-e

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.