Linux X Window System VVV

Revisie: 1.7, 13 Sep 1999

Dit is een lijst van veel voorkomende vragen (VVV's) over het X Window Systeem van Linux gebruikers in de nieuwsgroep De laatste versie van dit document is te vinden op:

Over deze VVV Als de ontwerpers van het X Windowing Systeem auto's zouden bouwen, waren er niet minder dan vijf sturen verstopt in de auto, en geen één werkte op dezelfde manier ... Maar je zou kunnen schakelen met je autoradio. Bruikbare feature die laatste. -- Marcus J. Ranum, Digital Equipment CorporationDit is een lijst van veel voorkomende vragen (VVV's) met antwoorden in over het X Window System (kortweg X).

Met dank aan....J.A. Bezemer <>, Alrik van den Brom <>, A. van Dijk <>, Jaco de Groot <>, Bart Hanssens <>, Maurice Janssen <>, Hugo van der Kooij <>, Eric Looijengoed <>, Tom Peters <>, Eric Veltman <> en Andre de Vet <.Verder alle mensen welke mij verder tips en suggesties hebben opgestuurd, en de Nederlandse Linux gebruikers welke meestal te vinden zijn in :-).
Algemene vragen

Wat is het X Window systeem; wat is de filosofie achter X?Ik zal proberen deze vragen te combineren.Het X Window Systeem ook wel ``X'' genoemd (maar niet XWindows !) is een combinatie van een aantal losse onderdelen: X Display Server X Clients (waaronder de Window Manager) Xlib routines Het X protocolDe X display server is een programma welke op een systeem draait met een ``bitmapped display'' (bijvoorbeeld een PC met een vga kaart en monitor). De server zorgt onder andere dat de input van de gebruiker (muis, toetsenboard, joystick e.d.) wordt doorgeven aan de Xclient (bv. een applicatie).Xclients zijn de programma's welke gebruik maken van de Xserver om onder andere de output op het scherm te laten zien en input van de gebruiker in te lezen.Een van de ideeën achter X is dat er standaard library's zijn voor de overeenkomstige eigenschappen (zie boven) welke een grafisch werkstation heeft. Deze library's zijn op bijna elke UNIX (met X) aanwezig.Het X Window Systeem is ontworpen door het . Zij zijn destijds uitgegaan van een aantal standaardonderdelen van een werkstation: display, keyboard, muis. Vervolgens hebben de ontwerpers proberen te achterhalen wat de primitieve onderdelen zijn van een windowing system bijvoorbeeld: een window maken, tekenen in een window, input van keyboard en muis, en nog meer van zulk soort onderdelen.Doordat er in X standaard library's zijn voor primitieve functies (keyboard, muis e.d.) is het gemakkelijker om X applicaties voor UNIX te maken omdat de functies op elk systeem hetzelfde zijn.X zelf is geen ``Graphical User Interface'' (GUI): de makers hebben X zo ontworpen dat wel elke GUI mogelijk is door gebruik te maken van de primitieve library's (Xlib). X dwingt dus geen GUI op aan de gebruiker of programmeur. De window manager + applicaties bepalen het gezicht van X (zie ).X heeft door de modulaire opbouw (de Xserver is bijvoorbeeld apart van de Xclient) mogelijkheden om van een netwerk gebruik te maken. Het is mogelijk om een applicatie op een andere computer (over het netwerk) te draaien en de grafische uitvoer op het eigen scherm te zien. De Xclient (de applicatie) merkt er niets van dat de gebruiker bijvoorbeeld in een totaal ander gebouw zit (of andere stad :). X maakt het netwerk voor de gebruiker dus transparant (hij/zij merkt er niets van). Voor meer informatie over de filosofie van X zie de website van , en ``man X''.
De Xserver

Weet iemand of mijn grafische kaart met Linux werkt ?De meeste grafische kaarten op een Intel gebaseerd systeem werken met de Linux kernel, als de fabrikant de nodige gegevens wil verstrekken. De Xservers van XFree86 worden bij de meeste linux distributies meegeleverd. Informatie over nieuwe (ook beta) releases van XFree86 kun je vinden op , of op een van de .Momenteel (21/01/99) is de laatste versie van de XFree86 distributie 3.3.3.1 Als je een nieuwe grafische kaart wilt gaan kopen, lees dan eerst de lijst van ondersteunde kaarten door , dan ben je er 99.99% zeker van dat je kaartje ook met Linux werkt.

XFree86 heeft nog geen Xserver voor mijn grafische kaart wat nu ? Je zou kunnen kijken of een Xserver voor je kaart heeft gemaakt. Verder is het dan meestal wel mogelijk om de XF86_VGA16 Xserver van XFree86 te gebruiken, het zou kunnen dat bepaalde modes dan niet werken. Lees ook de .
De X Display Manager

Wanneer (of waarom) moet ik XDM gebruiken?XDM is een display manager dus als je meerdere displays op een server hebt (bijvoorbeeld een aantal Xterminals) zul je XDM moeten gebruiken.
De Window Manager

Wat is een Window Manager? Je kunt de functie van een window manager vergelijken met die van een shell. De shell bepaalt de manier en de commando's hoe er met het systeem gewerkt kan worden. X is een grafisch windowing systeem, dus de shell (de window manager) is ook grafisch. De meeste window managers tekenen een window om de applicatie heen en hebben een mogelijkheid om het window te vergroten, verkleinen, enzovoort. Bijna alle window managers hebben een menu mogelijkheid waardoor je met een muisklik een applicatie op kan starten. De window manager bepaalt dus wat het gezicht is van X. Met linux ben je niet gebonden aan een soort window manager en kun je naar behoefte kiezen uit tal van managers (zie: ). Nu zal de vraag wel komen "Hoe ziet X er dan uit met een window manager?". Op die vraag is maar een antwoord: Geen idee, het kan van alles zijn bijvoorbeeld van Win95 tot NeXtStEp.
keyboard configuratie, Xdefaults en Xclients.

Toetsenbindingen in X of Win95 toetsen in X :-)(door )In X is de toetsenbordindeling naar eigen believen in te stellen. Hier volgt een beschrijving welke mechanismen gebruikt kunnen worden, met name gericht op het invoeren van letters met accenten en speciale tekens. Aan elke toets kunnen vier zogenaamde keysyms worden toegekend. Een keysym is dus de logische betekenis van een fysieke toets. Daarnaast kan een toets een van de vijf zogenaamde modifiers produceren. Een toets fungeert bijvoorbeeld als [alt] toets, als de toets de [alt] keysym en ook een modifier produceert.De vier keysyms die je kunt toekennen aan een toets, zijn verdeeld over twee groepen. De eerste keysym wordt geproduceerd door gewoon op de betreffende toets te drukken, de tweede door [shift] erbij in te houden. De tweede groep werkt hetzelfde, alleen moet daarbij de [Mode Switch] toets worden ingehouden. De toets [Mode Switch] is standaard niet gedefinieerd. Dit moet je dus nog doen. Als je een Win95 toetsenbord hebt kun je mooi één van de win95 toetsen als [Mode Switch] aanmerken. Deze toets moet dan [Mode Switch] keysym produceren en een modifier. Daarna kun je de gewone letter toetsen een derde en vierde keysym toekennen (tweede groep). Bv: de toets ``e'' produceert e E é É.Naast deze methode kun je ook letters met accenten invoeren door gebruik te maken van het ``Compose'' mechanisme. Hiervoor moet je aan een toets de ``MultiKey'' keysym toekennen. Een Win95 toets komt weer mooi van pas hier. Dit mechanisme werkt als volgt: Je drukt eerst op de [Compose] key, vervolgens op een accent (bv. de [ ` ] [ ' ] en [ " ]), en vervolgens op de letter waarop je het accent wilt hebben. Als er voor die letter geen ``accent-versie'' bestaat gebeurt er niets. Dit mechanisme werkt niet in alle programma's het schijnt een verouderd mechanisme te zijn.Daarnaast kun je ook nog gebruik maken van zogenaamde ``dead keys''. Bij deze methode ken je aan de accenttekens (bv. de [ ` ] [ ' ] en [ " ]) de keysym toe met dead als voorvoegsel. Bv: [ ` ] = dead_grave [ ' ] = dead_acute [ " ] = dead_diaeresis. Druk je nu op het accentteken en vervolgens op een letter dan levert dit de letter op met het betreffende accent. Om het accent zelf te verkrijgen tik je na het accent een spatie. Ook dit mechanisme werkt niet in alle X programma's .Voor het instellen van je toetsen gebruik je het programma xmodmap. Ik verwijs naar de man page van xmodmap voor het gebruik hiervan. Om je toetsenbord visueel ``op te maken'' verwijs ik naar het programma (). Alle standaard keysyms staan in /usr/X11/include/X11/keysymdef.hDe ``.xmodmap'' file welke de auteur gebruikt kun je hier downloaden.
X Window System programmeren. Dit hoofdstuk is nog behoorlijk "vers". Programmeer je Xclients en heb je handige tips voor in de X-VVV stuur ze dan op naar:

Wat zijn Motif, Xforms, GTK+, Qt... ?(door Bart Hanssens <>)Het zijn allemaal GUI-library's, die de "look" van een X-programma bepalen. Motif is de oudste en wellicht de bekendste. Veel commerci¨le X-software is dan ook geschreven met Motif. Naast de verouderde look is dit meteen het grootste nadeel: betalen is de boodschap. Er is een free alternatief, Lesstif genaamd, dat Motif zo goed mogelijk tracht te benaderen. () Xforms is een tamelijk compacte library met een beperkt aantal fans. Geen source. Wel een paar leuke vondsten (lightbutton bijvoorbeeld), maar niet echt mooi. GTK+ is de library waardoor o.a. The GIMP zo mooi oogt. Mooi, klein en goede documentatie plus het is nog gratis ook (GPL). (). Qt is de tegenhanger van GTK+. Niet helemaal free, maar (voorlopig) iets vollediger... en groter ()Motif heeft zijn beste tijd gehad, de strijd tussen GTK+ en Qt is in alle hevigheid losgebarsten. Welke van beide nu "de beste" is, is eigenlijk een kwestie van smaak.
Diversen

Plaatje in de root window? Een plaatje op de achtergrond van X geeft een wat leuker gezicht dan die saaie grijze achtergrond. De Xserver gebruikt meer memory door het plaatje, kies daarom het plaatje niet te groot (een jpeg van 2 MB is erg groot :).Het programma ``xview'' kan allerlei formaten inlezen en converteren, dit programma kan ook gebruikt worden om een plaatje in de root window te zetten. Je kunt bijvoorbeeld op de volgende manier een plaatje in de background krijgen (zet dit in de ``.Xsession file'' voor de window manager): exec /usr/bin/X11/xv +root -rmode 0 /home/ftp/pics/linux-ball.gif -quit rmode (nummer) geeft aan of het plaatje "getiled", "gespiegeld" enz... moet worden in de root.Dit kan ook met het programma ``xloadimage'', dit programma is meer geoptimaliseerd om snel het plaatje te laden bv.: xloadimage -inroot -quiet /home/U/jw/bg.jpg Een achtergrondkleur instellen kan met het programma `xsetroot`: xsetroot -solid SteelBlue