Learn Linux 101: X11 installeren en configureren

Het X Window configuratiebestand

In de begindagen van X betekende het configureren van een beeldscherm een uitgebreide kennis van de mogelijkheden van het beeldscherm en de mogelijkheid om informatie uit te drukken over niet alleen de resolutie, maar ook horizontale en verticale sync-waarden, kleurdiepte, enzovoort. Sinds de komst van de Video Electronics Standards Association (VESA) en de Display Data Channel (DDC) protocollen, waarmee een beeldscherm deze mogelijkheden kan doorgeven aan een grafische kaart en dus aan een computer, is de configuratie veel meer automatisch geworden. Dit is een gelukkige omstandigheid, omdat we nu verwachten dat we onze notebook overal mee naar toe kunnen nemen en gewoon een beschikbare externe monitor of projector kunnen aansluiten.

Het configureren van uw muis, trackball, of toetsenbord is ook meer automatisch geworden. Over het algemeen sluit je het apparaat gewoon aan, vaak via een USB-verbinding, en het werkt.

Hoewel, zoals met de meeste dingen in Linux, is er een onderliggend configuratiemechanisme dat je kunt gebruiken. In feite haalt de Xorg implementatie van X configuratie-informatie uit verschillende bronnen. Het belangrijkste configuratiebestand is xorg.conf, samen met bestanden uit de xorg.conf.d directory. Deze bevinden zich meestal in /etc/X11. Aanvullende instellingen kunnen komen van commandoregelopties, omgevingsvariabelen, automatische detectie en standaardinstellingen.

Het instellingenbestand xorg.conf en de bestanden in de map xorg.conf.d zijn georganiseerd in secties die in willekeurige volgorde kunnen worden gespecificeerd. De algemene sectie-indeling wordt getoond in Listing 1.

Listing 1. Sectie-indeling in xorg.conf

 Section "SectionName" SectionEntry ... EndSection

Toon meerToon meer pictogram

Xorg commando met de -configure optie. Het Xorg commando is eigenlijk een symbolische link van het X commando dat gewoonlijk in /usr/bin staat. U moet het Xorg commando als root uitvoeren en ervoor zorgen dat er geen X server draait. Eén manier om dit te doen is om uw GRUB2 stanza aan te passen om in multi-user modus te booten zonder X. Traditioneel is dit runlevel 3. Bewerk gewoon de entry in het opstartmenu dat u wilt opstarten en voeg een 3 toe aan het einde van de `linux boot/vmlinuz…’ regel, zoals geïllustreerd in Figuur 2.

Figuur 2. Opstarten in multi-user modus zonder X

Als u systemd gebruikt, kunt u systemd.unit=multi-user.target gebruiken in plaats van 3.

Xorg -configure laadt beschikbare apparaatstuurprogramma’s en sondes voor hardware. Het werkt op veel systemen, maar heeft problemen op sommige systemen volgens de man page. De Fedora documentatie beveelt aan om de :1 weergave te gebruiken in plaats van de standaard :0 weergave, dus u kunt Xorg :1 -configure proberen als gewone Xorg -configure niet werkt.

Een voorbeeldbestand gegenereerd met deze methode op mijn openSUSE Tumbleweed systeem wordt getoond in Listing 2.

Listing 2. Voorbeeld xorg.conf

Aannemend dat uw beeldscherm DDC ondersteunt, zoals de meeste moderne beeldschermen doen, kunt u het xrandr commando gebruiken om de mogelijkheden ervan op te vragen. Listing 4 toont de drm informatie voor een notebook met een aangesloten beeldscherm en de overeenkomstige uitvoer van xrandr.

Listing 4. Gebruik van xrandr om beeldschermmogelijkheden te bepalen

XkbVariant optie definieert welke varianten van de twee indelingen gebruikt moeten worden. In het geval van de us layout wordt de standaard variant gebruikt. In het geval van de sk layout wordt de qwerty variant gebruikt. De XkbOptions optie geeft aan dat gebruikers kunnen wisselen tussen de layouts met behulp van de CapsLock toets.

Listing 5. Bijwerken van de toetsenbordconfiguratie

localectl commando moeten gebruiken. localectl status toont echter dat deze wijzigingen werden opgepikt toen het systeem herstart werd, zoals getoond in Listing 6.

Listing 6. Toetsenbord status tonen met localectl

Display managers vallen in drie algemene categorieën.

  1. Tiling window managers verdelen het scherm in tiles en schrijven elke tile apart van anderen. De prestaties zijn over het algemeen goed.
  2. Stacking window mangers stapelen individuele vensters op het scherm in een lijst die bekend staat als een Z-volgorde. Wanneer een nieuw venster focus krijgt, wordt het bovenaan de Z-volgorde geplaatst en alle lagere vensters worden opnieuw getekend. Dit kan traag zijn, vooral voor kleine veranderingen, maar er zijn verschillende optimalisaties ontwikkeld.
  3. Compositing window managers zijn meestal stacking window managers die voor elk window een buffer bijhouden en deze dan combineren in een enkele buffer voor weergave zonder dat elk individueel window opnieuw getekend hoeft te worden en dan overschreven met het volgende hogere in de Z-volgorde. Dit maakt ook effecten als transparantie mogelijk.

Figuur 3 toont een voorbeeld van de I3 tiling window manager. Je begint met een leeg bureaublad en maakt dan een venster aan, zoals een terminal venster. Dit neemt het volledige scherm in beslag. U kunt dan een ander venster openen dat de oorspronkelijke tegel in tweeën splitst. Als u daarna nog een venster opent, wordt het scherm in drie tegels gesplitst. U kunt ervoor kiezen om nieuwe tiles horizontaal of verticaal te maken. In dit voorbeeld heb ik ervoor gekozen om de oorspronkelijke middelste tile met het sudoku spel verticaal te splitsen, om een ander klein terminal venster te maken. Daarna splitste ik dat horizontaal om een xlcock venster toe te voegen.

Figuur 3. De I3 tiling window manager

Je kunt vensters meestal tussen virtuele desktops verplaatsen, wat veel helpt als je meerdere grote vensters open hebt staan.

Je kunt de lijst met beschikbare applicaties openen als een menu aan de bovenkant van het scherm en applicaties selecteren door langzaam horizontaal te scrollen of sneller door een naam geheel of gedeeltelijk in te typen, zoals ‘xclock’.

In tegenstelling tot tiling window managers, kunt u met stacking window managers vensters hebben van elke grootte die door uw beeldscherm wordt ondersteund, inclusief vensters die de rand van het beeldscherm kunnen overlappen. Figuur 4 is een voorbeeld van de Openbox stacking window manager met vier overlappende vensters en het menu waarmee u nieuwe toepassingen kunt openen.

Figuur 4. De Openbox stacking window manager

Basic stacking window managers werken volgens het principe dat alle vensters op uw beeldscherm opnieuw worden getekend wanneer het venster met de focus verandert of wordt verplaatst, gesloten of van grootte wordt veranderd. Dit kan resulteren in meerdere herschrijvingen van verschillende gebieden van het scherm omdat de hele Z-volgorde wordt verwerkt. Algoritmen kunnen worden gebruikt om de hoeveelheid onnodig herschrijven te minimaliseren.

Een verbetering op het basis stacking idee is een samenstellende window manager. Zo’n window manager houdt een buffer bij van de inhoud van elk window en voegt deze samen of stelt ze samen tot een enkel window. Alleen de bijgewerkte delen hoeven dan naar de displaykaartbuffer te worden geschreven. Compiz is een voorbeeld van een samenstellende window manager, terwijl desktop omgevingen zoals KDE en GNOME ook samenstellende window managers gebruiken.

Een desktop omgeving biedt over het algemeen een volledige gebruikers ervaring, inclusief dingen zoals een grafische login begroeter, grafische systeem menu’s, een tray om widgets te tonen zoals de tijd van de dag, open applicatie iconen, enzovoorts. Een suite van geïntegreerde applicaties biedt meestal een consistente ervaring voor een gebruiker. De meeste window managers zijn veel lichter van gewicht dan een volledige desktop omgeving.

Figuur 5 illustreert het concept van transparantie in een samengestelde window manager of desktop omgeving. Houd de linker muisknop (knop 1) ingedrukt op de titelbalk van het terminalvenster wanneer u voorbereidingen treft om het te verplaatsen. De weergave verandert om te laten zien welke vensters zich onder dat bepaalde gebied bevinden. Dit kan u helpen om een venster niet bovenop een ander venster te zetten wanneer u beide zichtbaar wilt hebben.

Figuur 5. Transparantie met KDE Plasma bureaublad

Figuur 6 illustreert GNOME 3.28 op Fedora. Klikken op de Activiteiten knop aan de linker bovenkant van dit scherm opent een geïicooniseerde lijst van favorieten aan de linker kant van het scherm en toont een set van draaiende toepassingen als kleine vensters. U kunt op een favoriet klikken, op een klein venster klikken, of het zoekvak boven in het scherm gebruiken om naar een programma te zoeken. In dit specifieke voorbeeld heb ik op de dag en tijd in de bovenste balk geklikt om een widget te openen die enkele berichten toont, zoals beschikbare updates of laatst voltooide opdracht, evenals aanvullende datum- en tijdinformatie. De icoontjes rechtsboven geven toegang tot functies zoals luidspreker volume, netwerk instellingen, toegankelijkheid opties en shutdown, logout of reboot opties.

Figuur 6. Fedora GNOME activiteiten en widgets

Ik noemde al dat bureaublad omgevingen vaak geïntegreerde applicaties bevatten om u te helpen verschillende aspecten van het bureaublad of het systeem te beheren. Figuur 7 toont het Fedora GNOME 3.28 instellingen dialoogvenster geopend bij de beeldscherm instellingen. Dit voorbeeld is van een notebook met een externe Viewsonic monitor. Veel voorkomende keuzes in dit geval zijn om de twee schermen samen te voegen als een enkel scherm of om de inhoud van het ene scherm te spiegelen naar het andere. In dit geval kiezen we ervoor om de twee schermen samen te voegen met het ingebouwde scherm logischerwijs rechts van de externe monitor.

Figuur 7. Fedora GNOME Scherm Instellingen dialoog

Zoals u de schermresolutie kunt veranderen in het xorg.conf bestand, kunt u de compositor ook vertellen om het venster te schalen naar ofwel 100% of 200%. De beschikbare schaal kan afhangen van de grootte van de monitor en de specifieke desktop die je gebruikt. Ik heb ook een UHD (4K) monitor en ogen die de zeer kleine native tekstresolutie niet kunnen lezen. Dus op die monitor gebruik ik vaak een schaalfactor van 200%.

Merk op dat veranderingen gemaakt met de GNOME instellingen xorg.conf niet bijwerken. In plaats daarvan worden deze instellingen opgeslagen in het bestand .config/monitors.xml in uw thuismap. GNOME houdt ook andere beeldscherm- en toetsenbordinstellingen bij in de dconf database die u ook onder uw home directory kunt vinden. Door deze instellingen in uw home directory te hebben, zijn ze alleen op u van toepassing. Andere gebruikers kunnen andere instellingen hebben.

Als u meerdere bureaubladomgevingen of window managers heeft geïnstalleerd, vraagt u zich misschien af hoe u tussen hen kunt kiezen. U kunt opstarten in de multi-user modus zoals eerder in deze handleiding beschreven en dan een commando uitvoeren zoals startx om X te starten met de juiste manager. Als u een bureaubladomgeving zoals GNOME heeft die een begroeter biedt, dan heeft u waarschijnlijk een keuze voor instellingen op het begroetingsscherm. Figuur 8 toont de keuzes die geïnstalleerd zijn op mijn Fedora 28 systeem.

Figuur 8. Fedora GNOME 3 greeter met WM selectie

Toegang tot de X server beheren en toepassingen op afstand weergeven

Tot nu toe heeft u voorbeelden gezien waarbij X draait op een desktop computer met één, of misschien twee beeldschermen. Een X server behandelt een enkel beeldscherm als een verzameling beeldschermen die een gemeenschappelijke set invoerapparaten delen.

Dus de notebook in Figuur 7 heeft één beeldscherm, ook al heeft hij de ingebouwde monitor en een externe monitor. In dit voorbeeld werken de twee monitoren alsof ze zijn samengevoegd. Hierdoor ontstaat een enkel logisch scherm dat het mogelijk maakt vensters tussen monitoren te verplaatsen, of zelfs over monitoren te verdelen. Systemen met meerdere gebruikers hebben meestal meerdere beeldschermen, dus is er een manier nodig om ze te beschrijven.

X gebruikt een driedelige naam voor beeldschermen van de vorm hostname:displaynummer.screennummer waarbij hostname de hostnaam van de computer is, displaynummer een getal beginnend bij 0 dat het specifieke beeldscherm beschrijft, en screennummer is van toepassing als twee of meer monitoren als aparte schermen worden behandeld in plaats van als een enkel logisch scherm. Zowel hostnaam als schermnummer kunnen worden weggelaten, dus de meest voorkomende weergave-notatie is :0. U kunt uw huidige instelling zien in de DISPLAY omgevingsvariabele zoals weergegeven in Listing 7.

Listing 7. De DISPLAY omgevingsvariabele

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

Toon meerToon meer pictogram

DISPLAY omgevingsvariabele iedere gebruiker in staat zou stellen om uitvoer op uw scherm te schrijven, maar X heeft enkele toegangscontrole beperkingen. Ik zal u drie manieren laten zien om verbinding te maken met een X server.

  1. Gebruik ssh met X forwarding
  2. Gebruik Xauthority en xauth
  3. Gebruik host of user control met xhost

De meest veilige manier om X op een ander beeldscherm te gebruiken is door X forwarding te gebruiken (soms ook wel tunneling genoemd). Dit moet ingeschakeld zijn op de SSH server waarmee u verbinding maakt met de regel X11Forwarding yes in het configuratiebestand, /etc/ssh/sshd_config. U moet het ook inschakelen op de client door de optie -X (dat is een hoofdletter X) op te geven in uw ssh commando. In Lijst 8 wordt vergeleken wat er gebeurt als ik su - jane gebruik om over te schakelen naar gebruiker jane op mijn systeem en vervolgens ssh -X jane@localhost gebruik. In beide gevallen probeer ik het xclock commando uit te voeren om een kleine klok op mijn scherm weer te geven.

Listing 8. X forwarding

DISPLAY variabele is ingesteld op localhost:10.0. De sshd server maakt in feite een X server voor u aan op het doelsysteem. U wilt niet dat dit interfereert met echte X servers op het systeem. Dus bevat het instellingenbestand, /etc/ssh/sshd_config, een regel X11DisplayOffset 10 om de start-offset (vanaf 0) op te geven voor X servers via ssh. De standaardwaarde is 10, wat meestal voldoende is voor een werkstation voor één gebruiker, maar in een systeem met meerdere gebruikers kan het nodig zijn om de standaardwaarde te verhogen. Een tweede ssh-verbinding met de server zou display 11 toegewezen krijgen, enzovoort.

De tweede methode om anderen verbinding te laten maken met een X server is de Xauthority methode. Het Xauthority-bestand bevat autorisatie-informatie die wordt gebruikt wanneer u verbinding maakt met een X-server. De XAUTHORITY omgevingsvariabele specificeert de naam van het bestand dat momenteel in gebruik is, ofwel een door het systeem gegenereerd bestand zoals /run/user/1000/gdm/Xauthority op mijn Ubuntu 18 systeem, ofwel uw eigen .Xauthority bestand.

Gebruik het xauth commando om nieuwe authoriteiten op te sommen, uit te pakken, of samen te voegen. gebruik de -f optie om een ander Xauthority bestand op te geven dan degene in uw XAUTHORITY omgevingsvariabele. U kunt xauth commando’s opgeven op de commandoregel, of het programma starten en de commando’s vanuit het programma gebruiken. Listing 9 toont enkele voorbeelden en extraheert mijn authorisatie voor display :0 naar een bestand met de naam auth-ian.

Listing 9. Het extraheren van autorisatie-informatie met xauth

XAUTHORITY in te stellen. Gebruiker jane kan dan toepassingen op mijn beeldscherm tonen.

Listing 10. Het samenvoegen van autoriteitsinformatie met behulp van xauth

xhost commando. Op een werkstation kunt u dit gebruiken om grafische programma’s te openen terwijl u als een andere gebruiker draait. Het xhost commando zonder opties geeft de huidige toegangscontrolelijst weer. Gebruik de optie + met een naam om bijkomende systemen of gebruikers toe te laten. Listing 11 toont hoe gebruiker john op mijn lokale systeem toe te voegen aan de toegangscontrole lijst en toont vervolgens gebruiker john die het grafische xclock programma opent.

Listing 11. Gebruik xhost om een enkele lokale gebruiker in te schakelen

xhost +local: zoals weergegeven in Lijst 12. Let op de dubbele punt (:) aan het eind van local.

Listing 12. Gebruik xhost om alle lokale niet-netwerkgebruikers in te schakelen

– in plaats van + om ingangen te verwijderen die u hebt ingeschakeld. Zie de xhost man of info pagina’s voor aanvullende opties.

Voor de veiligheid zou u SSH tunneling of mogelijk een andere oplossing zoals Virtual Network Computing (VNC) moeten gebruiken in plaats van xauth of xhost. VNC valt buiten het bereik van deze tutorial maar levert betere prestaties dan SSH tunneling.

Wanneer het fout gaat

Met zoveel mogelijke bronnen van X configuratie informatie moet u weten waar u moet zoeken naar log informatie. Fouten gerelateerd aan uw individuele X sessie kunnen te vinden zijn in de .xsession-errors of mogelijk .xsession-errors-:0 in uw home directory. Het :0 achtervoegsel is voor fouten op het scherm :0.

Het hoofd X log staat in /var/log. De naam is meestal /var/log/Xorg.0.log, waarbij 0 uw beeldschermnummer is. Het nummer zal anders zijn als u geen display :0 gebruikt.

Wayland, een nieuwe compositing window manager

Onlangs is er een nieuwe display server en compositing protocol ontwikkeld, Wayland genaamd. In dit model creëren applicaties hun vensterinhoud zelf in een buffer buiten het scherm. De compositor en de server zijn geïntegreerd. De bedoeling van Wayland is om een eenvoudiger en efficiëntere oplossing te bieden dan X. Wayland hergebruikt vooral bestaande stuurprogramma’s en infrastructuur, wat het project mogelijk maakt.

In tegenstelling tot X, heeft Wayland geen netwerk transparant ontwerp. Andere oplossingen zoals VNC kunnen worden gebruikt als remote window display nodig is.

Weston is een referentie compositor die Wayland implementeert. GNOME, KDE, Enlightenment, en verscheidene andere window managers ondersteunen nu Wayland. Toolkits zoals Qt 5 en GTK+ ondersteunen ook Wayland. Op het moment van schrijven (december 2018) worden zowel Fedora als Ubuntu geleverd met Wayland als de standaard weergaveserver.

De Xorg-server bevat nu XWayland, waardoor bestaande X-toepassingen kunnen draaien met een Wayland-compositor.

De meeste huidige implementaties hebben nog steeds de keuze om ofwel X of Wayland voor elke sessie te draaien. Zie Figuur 7 voor een voorbeeld van hoe de GMS greeter je toestaat om een sessie type te kiezen. Op Fedora is de standaard om Gnome op Wayland te draaien.

U kunt dit ook tijdens het draaien controleren zonder in te hoeven loggen. Als u Wayland gebruikt, zal de WAYLAND_DISPLAY omgevingsvariabele worden ingesteld. Op systemen die systemd gebruiken, kunt u het commando loginctl gebruiken om het nummer van uw inlogsessie te bepalen en het dan opnieuw gebruiken om het sessietype te bepalen. Lijst 13 toont deze gereedschappen, eerst op een Fedora 28 systeem dat Wayland gebruikt en daarna op een Ubuntu 18 systeem dat Xorg draait.

Lijst 13. Bepalen of je X of Wayland gebruikt

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.