Het X Window Systeem

>> Index <<

X als client-server systeem

De X server op het LAN

Nog enige componenten

De Window Manager

Virtual consoles

Startx

Meerdere X sessies draaien

X servers delen



Het X Window Systeem

Het X Window Systeem (afgekort X en zonder s) zorgt voor de grafische besturing van programma's onder Linux en UNIX. Qua uiterlijk lijkt het X Window Systeem op iedere andere grafische gebruikersinterface (GUI), maar de onderliggende techniek is uniek. Het X Window Systeem is namelijk een heus cliënt-server systeem. Het levert tools, geen politiek.

Het X Window systeem is in 1984 door het Massachusetts Institute of Technology (MIT) voor UNIX ontworpen. Het bestaat uit een X server, een Window Manager en de voor X geschreven applicaties. Deze componenten werken op een TCP/IP netwerk van een of meerdere computers. Vanwege het generieke karakter van het X protocol zijn ze uitwisselbaar.

X server

De X server lever de basale vereisten voor de grafische gebruikersinterface. Ze bepaalt in hoge mate de snelheid en resolutie van het videobeeld. Zo bevat de SVGA X11 server de stuurbestanden voor de Super VGA videokaart, de muis- en het toetsenbord. De X server moet toegang hebben tot de grafische fonts. Deze mogen zich echter ook op een font server bevinden. U kunt als een X server draaien op een PC met 16 MB ram via Remote booting.

Window Manager, WM

Het vensterbeheersysteem bepaalt het uiterlijk en de functionaliteit van de vensters en de desktop. Programma's roepen die functionaliteit aan via een API toolkit. Zaken als startbalken, pop-up desktopmenu's, virtuele desktops, animaties en thema's en het uiterlijk van de vensters worden door het X Window systeem naar de Window Manager gedelegeerd.


Het is wel nuttig om bij de verschillen tussen het X Window systeem en het vensterbeheer van Windows en OS/2 stil te staan.


Onder Windows en OS/2 wordt het vensterbeheer door de 16 en 32 bits Windows en Presentation Manager bibliotheken geleverd. Windows en grafische OS/2 programma's moeten voor deze gepatenteerde Application Programmers Interfaces (API's) geschreven worden. Pas als het besturingssysteem over voldoende functies van die API's beschikt, kan het de betreffende programma's draaien. Om die reden draait Windows geen OS/2 PM applicaties en OS/2 geen 32 bits Windows applicaties (behalve onder ODIN). De makers van het besturingssysteem bepalen dus in hoge mate hoe en of uw programma's in hun vensters op uw desktop afgebeeld kunnen worden.


Maar onder het X Windows systeem zullen vrijwel alle X applicaties onder vrijwel alle Window Managers en X servers en besturingssystemen kunnen lopen. Vanwege het generieke X protocol zijn ze niet afhankelijk van de regels die particuliere bedrijven hen opleggen. U kunt dus via de keus van uw Window Manager (open source of particulier, licht of zwaar) en X server (open source of particulier, lokaal of op afstand) bepalen hoe en waar uw X Window Desktop draait. En omdat dit X protocol via TCP/IP werkt kunnen de in vensters afgebeelde programma's ook op de X server van een heel ander besturingssysteem getoond worden. Zie: De X server op het LAN en XFree86/OS2.

X applicaties en widget bibliotheken

X applicaties zijn toepassingen die via het X protocol communiceren. Pure X applicaties zijn lastig te schrijven. Zeker als ze meer moeten dan een in tekstmodus (CLI) lopend programma in een xterm venster tonen (een x terminal is te vergelijken met een telnet venster). Om die reden maken X programmeurs veelvuldig gebruik van de voor het X protocol geschreven bibliotheken (toolkits) met kant en klare Widgets (menu's, buttons, scrollvensters, etc), die hun veel handwerk besparen. Veel X applicaties hebben dus lokale hulpbibliotheken nodig (Gnome/GTK+, KDE2/3, Tk/Tcl).



Het XFree86 project

Bij vrijwel alle Linux distributies wordt de XFree86 SVGA server geleverd. Deze X server wordt door de non-profit organisatie The XFree86 Project, Inc onderhouden. Ik gebruik nu versie 3.3.4 van XFree86versie 11 release 6 (X11R6). De 86 slaat op de intel microprocessor, maar er zijn ook versies voor niet intel systemen.

Daarnaast zijn er X servers van commerciële producenten (MetroX, AcceleratedX, SciTech). Ook voor de Windows en MAC. Deze kunnen aanzienlijk sneller zijn dan de standaard open source X server. Een aparte vermelding verdient het het XFree86/OS2 project van Holger Veit. Holger porteert regelmatig XFree86 versies naar OS/2. Deze X server loopt als een fullscreen OS/2 toepassing. Recent werd versie 4 geporteerd.

XFree86 is nog geen razendsnel platform voor computerspelletjes. Weliswaar worden veel geaccelereerde kaarten door X ondersteund (aanbevolen), maar grafische programma's krijgen onder Linux niet zoveel toegang tot de videohardware als onder Windows. Bovendien kon de XFree86 versie 3 server maar een fractie van de mogelijkheden van de voor Microsofts DirectX ontworpen 3D videokaarten aanspreken. Wel werden 3Dfx (Voodoo) kaarten ondersteund.

Tot nu toe waren de XFree86 servers geheel open source. De SVGA versie van de X server ondersteunt honderden videokaarten. Om de acceleratie van de videokaart optimaal te benutten zijn de specificaties van de kaart nodig. Maar vaak bleef die informatie alleen onder het bereik van commerciele producenten van X servers die een non-disclosure agreement met de fabrikant afsloten.

De in ontwikkeling zijnde versie 4 van de XFree86 server heeft een modulaire opbouw gekregen waardoor een videoadapter fabrikant de gelegenheid krijgt de server met hardware specifieke binaire code te completeren zonder zijn fabrieksgeheimen aan het open source project te hoeven prijsgeven. Dit zal ongetwijfeld snellere X servers opleveren. Op een recente Linux distributie (SuSE 8) bleken OpenGL 3D spelletjes goed op mijn Matrox G400 kaart te werken.



X als client-server systeem

> Top <

Linux verandert een Personal Computer (PC) in een multi-user netwerk besturingssysteem. Zo verloopt de communicatie tussen u en de X server via het TCP/IP protocol. Op stand-alone PC's vervult de loopback interface (lo) de rol van netwerkkaart. Deze functioneert als een TCP/IP verbinding met de eigen computer (lo = localhost).

Normaal gesproken zit een server op een andere computer dan het werkstation. Cliënt software zit in de regel op uw eigen PC.

Maar omdat de X server uw beeldscherm, toetsenbord en muis aanstuurt, moet hij in de praktijk wel op het werkstation draaien. Een generiek stuurbestand voor alle beeldschermen, videokaarten, muizen en toetsenborden bestaat niet. Alleen in tekstmodus lukt zoiets, zoals destijds op een UNIX mainframe waar terminals op inlogden. Cliënten werkten toen gezamenlijk op een server (mainframe, mini-computer).

Tegenwoordig werken we niet meer met terminals, maar gebruiken we zware grafische pakketten op snelle PC's. Harde schijf ruimte is geen probleem. Ook X clients (dat zijn de programma's) worden meestal vanaf de harde schijf van het werkstation gestart. Ze communiceren met de X server via de loopback interface. Maar het starten van X clients op andere computers (via het Network File System of telnet ) kan nog steeds. De clients van de X server zijn immers alle voor X geschreven programma's die via het TCP/IP netwerk zijn te bereiken.

Op een gewone PC (werkstation, in netwerktermen "localhost") worden de activiteiten van uw muis en het toetsenbord door de op dat beeldscherm actieve X server geregistreerd. Als u de muis beweegt in het actieve venster of op het toetsenbord tikt, wordt dit door de gebruikte X server geregistreerd en aan het betreffende programma doorgeven. Het programma maakt vervolgens van de diensten van de X server gebruik om de videokaart aan te sturen. Het utility Event Tester (xev) kan deze communicatie weergeven, maar maak er maar geen logbestand van.

Utilities als xhost regelen de toegang tot de X server, die standaard alleen de X clients van de systeembeheerder (root) en degene die de X server met startx opriep toegankelijk is.

Op één computer kunnen (met voldoende geheugen) ook meerdere X servers draaien. Dit is handig als u met verschillende kleurdiepten werkt of als meerdere personen van de computer gebruik maken. Zo hoef ik mijn X sessie niet af te breken als mijn zoontje van zeven even een tekening maakt. Ik start gewoon een tweede X sessie onder zijn naam op. Zie: Meerdere X sessies draaien verderop. Dan kan hij hoogstens zijn home map vernachelen (onder Windows 2000 moet ik eerst uitloggen, maar Linux is een multi-user systeem).

De X server op het LAN

Met telnet of remote shell opdrachten kunnen gemakkelijk programma's op een andere computer worden gestart. X cliënten kunnen met iedere op het TCP/IP netwerk bereikbare X server communiceren. TCP/IP is niet aan een platform gebonden en het X Window systeem evenmin. Hierdoor is het mogelijk de grafische output van een onder Linux draaiend programma naar een onder Windows of OS/2 draaiende X server te versturen. De Linux computer fungeert dan als server van X clients.

Vooral voor OS/2 gebruikers is deze optie interessant. IBM heeft ooit een X server voor OS/2 uitgebracht die net als Win-OS/2 seamless met de WPS integreerde. Maar de software van het XFree86/OS2 project van Holger Veit is open source en draait onder OS/2 in een volledig scherm.

Het draaien van X clients op andere computers via het TCP/IP netwerk gaat behoorlijk snel. Veel sneller dan het eveneens onder TCP/IP draaiende Virtual Network Computing. Een VNC server exporteert het volledige beeldscherm van de computer waar hij op draait naar de computer met de VNC viewer. Voordeel is dat alle applicaties (niet alleen X clients) zichtbaar te maken zijn, maar alle pixels moeten over het netwerk worden verzonden.

Echte X cliënten zijn (evenals veel database server-cliënt programma's) voor een efficiente communicatie op een TCP/IP netwerk ontworpen. Ze kunnen - evenals de van andere platformen geporteerde X cliënten - niet zonder. De X server op het werkstation stuurt het beeldscherm aan. Pixels hoeven dus niet over het netwerk te worden verzonden. De X clients hoeven alleen maar te zeggen hoe. De X server interpreteert de opdrachten en stuurt ze naar de PCI bus van de videokaart.



Nog enige componenten op een rijtje

> Top <

Command processor, schil. Linux beschikt over stabiele gebruikersinterfaces als Bash, Bourne en andere C shells die in de tekstmodus werken. Bash ondersteunt een uitgebreide script taal. Opvallend is het gebrek aan interne commando's van de UNIX shells. Opdrachten als kopiëren (cp) en verwijderen (rm) worden door hulpprogramma's in sbin afgewerkt. Dit heeft als voordeel dat de systeembeheerder het gebruik van potentieel gevaarlijke commando's kan beperken.

De X server loopt als een set user ID programma in de user space. Hij wordt opgestart vanaf de prompt, hoewel een grafische login ook steeds meer wordt gebruikt. Het vastlopen van het X Windows systeem betekent nog geen vastgelopen besturingssysteem. Eventuele downloads op de achtergrond blijven gewoon lopen. Wel is het zo dat - als onder de vastgelopen grafische besturing het toetsenbord (Alt-F2) niet meer te benaderen is - u alleen nog maar met een remote login vanaf een andere terminal (ssh) de vastgelopen X server kunt stoppen.

De X server is het hardware specifieke deel van het X Window systeem. De X server haalt zijn instellingen uit het configuratiebestand /etc/XF86Config. Het gaat om instellingen van de muis, het toetsenbord, de videokaart en het beeldscherm. De X server is daarmee een soort superdriver. Een stuurprogramma (driver) schept voorwaarden, maakt gebruik van hardware mogelijk. Zonder X server is er geen video. In dit geval creëert het mogelijkheid tot de grafische aansturing van het beeldscherm. De manier waarop dat vormgeven wordt (het uiterlijk) wordt bepaald door de Window Manager. Het opstarten van alleen maar een X server (bijv. rechtstreeks /usr/X11R6/bin/XF86_SVGA starten) laat u slechts een fijn patroon van pixels (puntjes) zien, te vergelijken met het sneeuwbeeld van een televisie waarvoor nog geen zender is ingesteld (uitzetten met Ctr-Alt-Backspace). Pas na het laden van de Window Manager ziet u de grafische gebruikersinterface. Dit regelt het startx script voor u.

De Window Manager (WM) is een speciaal programma (een cliënt van de X server) dat de plaatsing en vormgeving van programma's en menu's in vensters regelt. Programma's zetten m.b.v. de API van de Window Manager het sneeuwscherm van de X server om in herkenbaar beeld van vensters, menu's en iconen. De Window Manager bepaalt daarmee in hoge mate het aanzien van uw desktop. In zoverre dat u vanuit de Window Manager programma's ook kunt starten, kunt u de Window Manager zien als de grafische user interface (GUI) van het X Window Systeem. De X server is te zien als gecompliceerd stuurbestand voor de videoadapter, met dien verstande dat hij zich via het TCP/IP netwerk besturen laat.

Onder Linux hebt u een ruime keus aan Window Managers. Het zijn er tientallen. Virtual Window Managers als FVWM , FVWM2 en FVWM95, de K Desktop environment (KDE) en GNOME (eigenlijk geen WM) worden op de grote distributies in standaard configuraties meegegeven. Dat is wel handig, want er valt veel in te stellen. Vanwege het gebruiksgemak gebruik ik op dit moment de vrij zware object georiënteerde KDE, maar er is een ruime keus aan Window Managers die met minder geheugen genoegen nemen.

Programma's roepen uiteindelijk kernel functies aan. Vrijwel altijd gebeurt dat indirect via hulpprogramma's en door het aanroepen van routines uit bibliotheken. Het programma's waarmee u programma's via rpm's installeert kan dan ook klagen over "failed dependecies". Het installatieprogramma detecteert dan dat benodigde bibliotheken niet correct geïnstalleerd zijn. Grafische programma's gebruiken de API (Application Program Interface) van de Window Manager om vensters, scrollmenu's e.d. te tonen. Ook hier gaat het om bibliotheken. Tot de hulpprogramma's behoren de daemonen: programma's die op de achtergrond draaien en ingeschakeld worden als hun hulp nodig is.

Bibliotheken. Bibliotheken bevatten programmacode voor veel gebruikte functies. Programma's roepen deze functies aan. Programmeurs kunnen gebruik maken van in de praktijk beproefde routines. Dit versnelt de ontwikkeltijd en houdt de programma's relatief klein. Code die in het programma ontbreekt, wordt tijdens het compileren dynamisch gelinkt (verbonden) aan al geïnstalleerde bibliotheken.

De belangrijkste bibliotheek is de C library. De meeste programma's en het grootste deel van Linux zijn geschreven in C. Hiervan bestaan vele versies: Major en minor. De huidige "major" c bibliotheken op mijn systeem zijn libc versies 5 en 6. Een programma dat gecompileerd is voor mylib.6.0 zou het nog moeten doen na een systeemupgrade naar mylib.6.99. Maar als u deze bibliotheek zou opwaarderen naar major versie number 7 of hoger niet meer. Dan zou u het programma opnieuw moeten compileren. Maar zoals u ook ziet kunnen er onder Linux ook meerdere bibliotheekversies naast elkaar bestaan.

Waarschuwing!

De beste manier om Linux te leren kennen is om de commando's gewoon uit te proberen. Doe dit echter nooit als root, maar als gebruiker! Maak eventueel als root een dummy user aan. In uw /home/dummy directory kunt u veilig experimenteren.



Het X Window Systeem is ongelooflijk flexibel systeem. Omdat de XFree86 server een heuse server is op een multi-user (netwerk) systeem kunnen meerdere personen er gebruik van maken. U kunt zelf vanaf een login prompt of vanuit een X terminal meerdere X servers draaien, elk met een eigen resolutie en met een eigen Window Manager. Hierbij maakt u gebruik van de virtual consoles.

Virtual consoles

> Top <

Linux biedt officieel ruimte voor 63 virtuele toetsenborden (zie : man console ). Ze zijn te vinden als de apparatuurbestanden /dev/tty1 t/m /dev/tty63. Het actieve virtuele toetsenbord is /dev/ttty0.

Tty staat voor Tele Typer, een terminal zonder beeldscherm uit het begin van deze eeuw (Teletype ASR33). Terminals, bestaande uit een toetsenbord en een beeldscherm, werden veel gebruikt voordat de PC zijn intrede deed. De rekenkracht werd geleverd door een centrale mainframe computer, waar de terminals mee verbonden waren. Onder Linux kunt u deze situatie met virtuele toetsenborden (virtual console, VC) en virtuele beeldschermen (virtual terminal, VT) nabootsen.

Op een PC is doorgaans maar een toetsenbord en een monitor aangesloten. Toch kunnen Windows en OS/2 gebruikers meerdere DOS sessies (virtual DOS machines) draaien, waarbij ze de invoer van het toetsenbord als het ware steeds op ander scherm zien staan. De monitor is hetzelfde, maar het beeld (virtuele scherm) verschilt. Onder Linux is zoiets ook het geval, alleen draait u dan geen DOS.

Op een virtueel toetsenbord onder Linux kunt u opnieuw inloggen. U werkt dan in tekstmodus. Met sneltoetsen (Ctrl-Alt-Functietoets) kunt u van het ene naar het andere virtuele scherm springen. Wat is het praktisch nut hiervan? Ik geef enige voorbeelden uit mijn praktijk.

Overigens kunt u ook in een terminalvenster in X het commando login gebruiken en als superuser inloggen met het commando su.

Toets Alt-F2 en u kunt opnieuw inloggen als root om bijv. iets bij te stellen. Met Alt-F1 komt u weer op uw eerste scherm terug (Alt-F7 indien u onder X zit).

Met Alt-F1 t/m Alt-F12 start u de eerste 12 virtuele toetsenborden. Voor de volgende 12 gebruikt u dezelfde functietoetsen met de rechter ALT toets.

In de praktijk bestaat de login prompt maar voor Alt-F1 t/m Alt-F6 (VC 1-6). Dit is geregeld in het bootbestand /etc/inittab (zie man inittab). VC7 is voor XDM.

Onder X heb je vaak de combinatie Ctrl + Alt + Functietoets nodig om naar een ander console te gaan. Als u 6 VC's heeft, brengt (Ctrl-)Alt-F7 u terug naar X.

Met ALT + pijltje links of rechts wandelt u tussen openstaande sessies (dat werkt echter niet overal, bij mij niet in X).

Het commando chvt n (change virtual console) maakt het toetsenbord n actief ( zie: man chvt). Let wel op de permissies. Als root mag u naar elk scherm wisselen, maar een gewoon gebruiker kan niet zien wat een ander op zijn scherm doet.

Startx

X wordt opgestart met het startx script:

sjoerd@visser:~ > whereis startx
startx: /usr/bin/startx /usr/X11R6/bin/startx /usr/X386/bin/startx /usr/bin/X11/startx /usr/X11/bin/startx /usr/X386/man/man1/startx.1x.gz /usr/X11/man/man1/startx.1x.gz

Het startx script uit /usr/X11R6/bin wordt gebruikt. De andere verwijzingen die whereis vindt zijn symlinks en de ge(nu)zipte manual (in tweevoud bij mij). Linux maakt veel gebruik van symlinks. Ze maken het o.a mogelijk bibliotheken te updaten terwijl de oude bibliotheek nog actief is. De update wordt actief zodra de symlink naar de nieuwe bibliotheek verwijst.

Startx kent vele opstartopties. Teveel om hier te bespreken. Maar om te voorkomen dat u en ik door de bomen het bos niet meer zien, heb ik de door mij gebruikte op een rijtje gezet. U mag uw eigen varianten bedenken.

startx zonder opties geeft de default instellingen:

startx

Als er al een X server draait krijgt u een foutmelding:

sjoerd@visser:~ > startx
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock and start again.
When reporting a problem related to a server crash, please send the full server output, not just the last messages

Als de X server niet opstart kunt u de foutmeldingen opslaan in een logbestand:

startx >>/tmp/startx.log 2>&1

Het logbestand kan een hint geven over de aard van de storing.

Is de prompt uit beeld dan kunt u meestal met Crtl-C een vastgelopen startx script stoppen.

Een X server die blijft hangen (televisie storingsbeeld) sluit u af met Ctr-Alt-Backspace. Een veelvoorkomende reden is dat er nog geen Window Manager actief is.

Natuurlijk doet u dat niet als er een Window Manager draait. Dan is de gangbare procedure rechtsklikken op de Desktop met de muis en voor "uitloggen" of iets dergelijks kiezen. Openstaande applicaties sluit u van tevoren af, want als de X server sluit kunnen ze niets meer opslaan.

Is het beeld niet naar wens (vaak te groot), probeer dan een met Ctrl-Alt-+ of Ctrl-Alt-- (de plus en min toetsen van het numerieke toetsenbord) het beeld te vergroten of te verkleinen. Wellicht hebt u te maken met een onwerkbaar groot virtueel scherm.

Met de startx van SuSE kunt u bepaalde Window Manager starten:

startx [Window Manager]

[Window Manager] is bijv. fvwm2, startkde.

Gnome heeft geen eigen Window Manager, maar wordt vanuit x opgestart met de opdracht panel.

Kleurendiepte instellen

De optie -bpp [bits per pixel] start x op met het door u gewenste kleurendiepte.

Een kleurendiepte van acht bits per pixel laat 2 tot de macht 8 (2^8=256) kleuren zien:

startx -- -bpp 8

Idem met 16 bit per pixel (2^16 is 65536 kleuren):

startx -- - bpp 16

Gangbare waarden zijn: 8 (2^3= 256 kleuren), 16 (2^16= 65536 kleuren), 24 (2^24=

Meerdere X sessies draaien

> Top <

Standaard start u X op met:

startx

X leest dit als:

startx -- :0.0

De X server die op uw computer met startx geladen wordt, verbindt het beeldscherm (display) met het eerste vrije virtuele toetsenbord zonder login prompt. Bij mij is dat console 7. De eerst geladen X server heeft een ID nummer : 0.0 (Linux begint meestal te tellen bij 0).

Ga nu naar virtual console 2 (Ctrl-Alt-F2) en log onder een andere naam in (user, root).

startx -- :1.0

start een tweede X server met ID nummer 1.0 op. Deze wordt geladen in combinatie met het eerstvolgende vrije virtuele toetsenbord zonder login prompt (bij mij is die te vinden onder Ctrl-Alt-F8).

Als u twee keer onder dezelfde naam dezelfde Window Manager opstart, krijgt u onder de KDE foutmeldingen omdat de KDE de bestanden van de gebruiker "locked". U kunt dus wel op vt1 als user inloggen en op vt2 als root, waarbij u op console 7 en console 8 de KDE gebruikt, maar niet twee keer onder dezelfde naam de KDE gebruiken.

U kunt wel onder dezelfde naam twee verschillende Window Managers gebruiken.

startx fvwm2 -- :1.0

vanaf vt2 of start een tweede X server op met fvwm2.

Tenslotte: open in fvwm2 een x-terminal en tik:

startx fvwm95 -- :2.0 &

en een derde X server met fvwm95 als Window Manager wordt gestart op vt 8.

Het starten van een tweede of derde X sessie vanuit de x terminal van een andere WM heeft echter niet de voorkeur, omdat dan de ene WM van de andere (met het terminal venster) afhankelijk wordt. Vanaf vt1 (steeds te bereiken met Ctr-alt-F1) kunt u wel de volgende opdrachten geven.

startx &
startx fvwm2 -- :1.0 &
startx fvwm95 -- :2.0 &

Het toetsenbord en de resolutie is ook expliciet op te geven:

startx -- :1.0 vt08 -bpp 16

Let er echter op dat :1.0 als eerste parameter doorgegeven wordt. Geeft u -bpp 16 voor de :1.0 op dan geeft het X Window systeem de foutmelding dat er al een X server is. X weet immers nog niet dat u een 2e X server wilt gebruiken!

Als bij u de default Window Manager de KDE is, kunt u eventueel voor uzelf of een ander een account aanmaken waarbij een andere WM de default is. Dit kan bijvoorbeeld door in het verborgen bestand .bashrc in de betreffende home directory de volgende zin te plaatsen:

export WINDOWMANAGER=/usr/X11R6/bin/fvwm2

die in dit geval fvwm2 laadt.

Of:

startx fvwm2 -- :1.0

Dit commando heeft echter ook veel opties:

Ze zijn uitgebreid gedocumenteerd:

man startx
man xinit
man Xserver

Onder SuSE kunt u deze manual pages uitermate plezierig onder Netscape bekijken!

Virtual terminal instellen

De optie vtXX (zonder -) start X op het virtual teminal met nummer XX op.

Op mijn systeem start x op virtual terminal 7 op:

startx -- vt07

of gewoon

startx

(hierbij worden de default instellingen van etc/XFconfig gebruikt).

Wilt u een 2e X server opstarten in 256 kleuren op scherm 8 (virtual terminal 8, met Ctrl-Alt-8 te bereiken):

startx -- :1.0 -bpp 8





X servers delen

> Top <

De utilities xhost en xauth regelen de toegang tot de X server. Standaard laat een X server die met startx door een gebruiker opgestart wordt geen andere X server gebruikers dan root toe. Dit is van groot belang.

De X server is namelijk netwerk transparant. Ze is gemaakt om netwerken te bedienen. Op een stand-alone computer zou een voor iedereen toegankelijke X server geen veiligheidsprobleem mogen opleveren, maar aangezien de meeste computers tegenwoordig regelmatig op het gevaarlijkste netwerk ter wereld (internet!) aangesloten zijn, is een beveiligde X server van groot belang.

De hiervoor gebruikte utilities zijn:

Globaal is de toegang tot de X server met xhost te regelen. xhost zonder opties geeft de status van de beveiliging weer.

sjoerd@visser:~ > xhost
access control enabled, only authorized clients can connect
INET:localhost
LOCAL:

Kwaadwilligen op het netwerk zouden zelfs op uw Desktop kunnen meekijken als u met xhost + iedereen toegang tot de X server zou verlenen:

sjoerd@visser:~ > xhost +
access control disabled, clients can connect from any host
sjoerd@visser:~ > xhost
access control disabled, clients can connect from any host
INET:localhost
LOCAL:

Op deze manier zijn zelfs uw su wachtwoorden te ontfutselen, dus met xhost - maakt u het snel weer ongedaan:

sjoerd@visser:~ > xhost
access control enabled, only authorized clients can connect

xhost +gebruiker@host laat bepaalde gebruikers op computer met de naam host toe

Voorbeeld: xclock draaien ingelogd als sjoerd vanaf console 2 met Ctr-Alt-F2 terwijl de X server (startx als root) vanaf console 1 is geladen:

xclock -display visser:0.0

Of met opmaak.

xclock -display visser:0.0 -hd -white -bg white -fg black &

De xclock is op console 6 te zien (weer te bereiken via Ctrl-Alt-F7).

visser is de hostname van de computer (opvraagbaar met echo $HOSTNAME).

sjoerd@visser:~ > echo $HOSTNAME
visser

Zoals u ziet verschijnen gebruiker (sjoerd) en host (visser) bij mij op de prompt.

Het actieve display (0:0) is met echo $DISPLAY in een x terminal op te vragen.

sjoerd@visser:~ > echo $DISPLAY
:0.0
> Top <
>> Index <<

Meer lezen:

Welcome to my GUI Gallery : het begon echt niet met Windows...

The X-Windows Disaster : uit het Unix haters handbook.

[LnX] Games v1.1 - Making Linux more fun. Games, 3D, hardware, tweaking and lots of downloads