De Help Desk punt NL
Kennisbank
De Helpdesk > De Helpdesk > Kennisbank

X windowing system

Oplossing

Introductie

Het X Windowing System werd in 1983 door MIT ontwikkeld. Vanaf versie 10 uit 1986 begon het de standaard te worden voor Unix. De laatste versie is versie 11 en wordt ook wel X11 genoemd. Je kunt het X, X11 of het X Windowing System noemen, maar X Windows is geen officiële naam.

X is de basis voor een grafische desktop onder Unices. Het is netwerktransparant en vormt een hardwareonafhankelijk platform om GUI's op te bouwen, maar dicteert niet hoe de UI eruit moet zien. De „look and feel” van grafische software wordt grotendeels bepaald door de gebruikte toolkit. X heeft geen ingebouwde mogelijkheden om windows te managen. Daar is een apart proces voor nodig, genaamd een window manager. Over beide verderop meer.

Op een gegeven moment is X11 closed source geworden, maar lange tijd was het dat niet. XFree86 was een fork voor x86-machines. Het is gebaseerd op de orignele code van X11 van voor de licentieverandering. Lange tijd werd XFree86 gebruikt door Linux-distributies, maar inmiddels is iedereen overgestapt naar X.org, wat weer een fork is van XFree86. De directe reden voor de overstap was een verandering in licentie (ja, geschiedenis herhaalt zich) waardoor het incompatibel werd met GPL, maar eigenlijk was dat meer de laatste druppel. Er heerste al langer ongenoegen over de voortgang en ontwikkeling. Veel ontwikkelaars en gebruikers waren van mening dat het ontwikkelproces niet voldoende open en transparant was. Keith Packerd, een van de belangrijkste ontwikkelaars, is samen met andere leden van het core team van XFree86 overgestapt op X.org.

Een recente ontwikkeling is die om 3D-effecten op de desktop te kunnen gebruiken. Het idee hierachter is dat elke computer tegenwoordig wel is uitgerust met een videokaart met 3D-acceleratie. Die mogelijkheden kunnen naast voor spellen ook op de desktop gebruikt worden. Dat stelt je in staat interessante effecten zoals transparantie toe te passen op je desktop, maar zorgt er ook voor dat je efficiënt gebruik kunt maken van de mogelijkheden van je videokaart.

Drivers

X heeft een driver nodig voor je videokaart. Dit is een van de weinige stukken hardware waar geen device driver voor in de kernel zit. Voor kaarten met een chipset van ATI en NVIDIA bestaan zowel binary/propriëtaire als open-sourcedrivers. Indien je de binary drivers wilt/moet gebruiken, kijk dan eerst of er een eenvoudig mechanisme is om ze te installeren onder je distributie. Is dat niet het geval, dan kun je ze van de respectieve websites downloaden. Installatie-instructies staan ook op beide sites.

Voor NVIDIA heb je de binary driver nodig voor 3D-acceleratie. Voor ATI is dat niet het geval, aangezien de open-sourcedriver daar wel ondersteuning voor heeft. Dit komt doordat de benodigde hardwarespecificaties zijn vrijgegeven sinds ATI is overgenomen door AMD. De open-sourcedrivers hebben echter geen ondersteuning voor de nieuwste videokaarten, wat een reden kan zijn om toch de binary driver nodig te hebben. Aangezien het landschap van drivers en ondersteuning van videokaarten vrij snel verandert, verwijs ik voor meer informatie naar Google.

Configuratie

Het configuratiebestand van X.org is /etc/X11/xorg.conf. Het bestaat uit een aantal blokken die beginnen met Section. In de meeste distrubuties zal X tijdens de installatie waarschijnlijk al geconfigureerd zijn. De volgende punten kunnen interessant zijn.

Voor je muis is er een sectie InputDevice:

Section "InputDevice" 
  Identifier "Mijn muis"
  Driver "mouse"
  Option "Protocol" "ImPS/2"
  Option "Device" "/dev/input/mice"
  Option "ZAxisMapping" "4 5"
EndSection

Sinds kernel 2.6 is /dev/input/mice de device voor alle aangesloten muizen samen. Het protocol ImPS/2 is een uitbreiding van het oude PS/2-protocol voor scrollwieltjes en zal werken voor de meeste muizen. De regel met ZAxisMapping zorgt ervoor dat het scrollwieltje input genereert (als knoppen 4 en 5).

Ook voor je toetsenbord is er zo'n sectie:

Section "InputDevice"
  Identifier  "Mijn toetsenbord"
  Driver      "kbd"
  Option      "CoreKeyboard"
  Option      "XkbRules" "xorg"
  Option      "XkbModel" "pc104"
  Option      "XkbLayout" "us"
EndSection

Het meest gangbare model toetsenbord is er een met 104 toetsen, waarvoor pc104 goed is. Er zijn vaak verschillende varianten van hetzelfde soort model. Zo zijn er bijvoorbeeld een Duitse variant (neem daarvoor de) en Dvorak (neem daarvoor dvorak). In Nederland komt de Amerikaanse indeling het meeste voor. Daarvoor is us goed. Een interessante indeling is us_intl. Als je die gebruikt, kun je letters met accenten intikken door eerst een bepaalde toets in te tikken voor dat accent en vervolgens de letter zelf. De tilde geeft bijvoorbeeld een golfje boven de letter en de apostrof een streepje naar rechts (accent aigue). Alle beschikbare indelingen definieerd in bestanden onder /etc/X11/xkb/symbols. Je kunt de toetsenbordinstellingen ook tijdens het werken met X veranderen met setxkbmap, bijv. setxkbmap us. Bij GNOME als KDE zitten ook tooltjes om de layout in te stellen.

Voor je monitor is er een sectie Monitor:

Section "Monitor"
  Identifier   "Mijn monitor"
  HorizSync    30.0 - 81.0
  VertRefresh  56.0 - 75.0
EndSection

Van moderne LCD-schermen kan hardwarematig informatie worden opgevraagd. Bij oude CRT-schermen was dat niet het geval, zodat er databases werden gebruikt met o.a. de horizontal sync rate en vertical refresh rate die je hierboven ziet. Mocht het nodig zijn deze waardes met de hand te zetten, dan kun je het terugvinden in de technische specificaties van je monitor. Iets gerelateerds wat je in deze sectie terug kunt vinden zijn modelines, regels met timinginformatie per mogelijke resolutie. Voornamelijk voor CRT-schermen kon het nodig zijn deze aan te passen om het beeld gecentreerd te krijgen of een betere refresh rate te halen. Over het algemeen zul je ze echter niet meer nodig hebben.

Voor je videokaart is er een sectie Device:

Section "Device"
    Identifier     "Mijn videokaart"
    Driver         "nvidia"
EndSection

Hier is de driver te vinden die zal worden gebruikt. Voor NVIDIA staat hier ofwel nv voor de open-sourcedriver of nvidia voor de binary driver.

In een sectie Screen worden je videokaart en monitor aan elkaar geknoopt:

Section "Screen"
    Identifier     "Mijn scherm"
    Device         "Mijn videokaart"
    Monitor        "Mijn monitor"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
        Modes      "1280x1024" "800x600"
    EndSubSection
EndSection

Er wordt hier een standaard kleurendiepte van 24 bits ingesteld. Dat is de hoogst mogelijke en gelijk aan wat enigszins misleidend 32 bits wordt genoemd onder Windows. Per kleurendiepte kunnen er subsecties Display worden opgegeven, met daarin een rij mogelijk resoluties. De waarde die daarbij vooraan staat, wordt standaard genomen.

Vroeger was het niet echt mogelijk de resolutie van je desktop te veranderen zonder X te herstarten. Als er meerdere resoluties zijn opgegeven in de configuratie van X, dan kun je daartussen wisselen met ctrl, alt en +/- (tegelijk indrukken). Daarbij blijft de originele resolutie wel behouden als „virtuele” resolutie. Ga je over naar een lagere resolutie, dan zal de desktop de originele grootte behouden en daarmee groter zijn dan wat er op het scherm past. Je kunt over deze grotere desktop schuiven door met de muis bij de randen van het scherm te komen.

Nieuwere versies van X kunnen de resolutie wel echt veranderen terwijl X bezig is. Dit kan via de RandR-extensie. Via tooltjes van GNOME en KDE kun je de resolutie instellen, maar het kan ook met xrandr. Gebruik xrandr --query voor een overzicht met beschikbare modes. Met xrandr --size 1280×1024 kun je de resolutie bijv. veranderen in 1280×1024.

Window managers en desktopomgevingen

Een window manager decoreert de windows, d.w.z. tekent de randen en maakt het mogelijk windows te verplaatsen of van grootte te vanderen. De exacte mogelijkheden hangen af van de window manager die je gebruikt. Van oudsher zit bij X TWM (Tab Window Manager) meegeleverd, maar ik weet vrij zeker dat je die niet wilt gebruiken. Er zijn sindsdien talloze andere gemaakt. Op http://xwinman.org is een overzicht te vinden van een aantal bekende.

Een concept dat Windows-gebruikers wellicht vreemd is, maar onder de meeste window managers voorkomt is dat van virtuele desktops: meerdere desktops waartussen je kunt wisselen.

Een heel nieuwe window manager is Compiz Fusion. Deze zal je 3D-effecten geven op je desktop. Je kunt er o.a. alle windows op een gewenste transparantie mee zetten en tussen je virtuele desktops wisselen met de „desktop cube”. De naam komt van het feit dat er een tijd twee takken bestaan hebben: het oorspronkelijke Compiz en het daarvan geforkte Beryl. Beide zijn nu weer samengebracht in Compiz Fusion.

Er zijn twee grote projecten met als doel een desktopomgeving aanbieden: GNOME (GNU Network Object Model Environment) en KDE (K Desktop Environment). Beide omvatten veel meer dan alleen een window manager. De software van beide projecten verzorgt min of meer hetzelfde: een file manager, menu's en alle gangbare desktopsoftware.

GNOME is in 1997 gestart door Miguel de Icaza. Samen met Nat Friedman begon hij in 1999 Helix Code, wat later werd hernoemd tot Ximian. In 2003 werd Ximian opgekocht door Novell. GNOME wordt gesponsord door o.a. Sun, IBM, HP en Novell. De file manager van GNOME heet Nautilus. Alle GNOME-software is gebaseerd op GTK+, de Gimp ToolKit, wat oorspronkelijk ontwikkeld was voor GIMP (een tekenprogramma). Een overzicht van extra software voor GNOME is te vinden op http://gnomefiles.org.

KDE is in 1996 gestart door Matthias Ettrich, evenals Miguel uit onvrede met de situatie van de desktop onder Unices op dat moment. KDE wordt gesponsord door o.a. Trolltech, Mandriva en SUSE (ook van Novell). De file manager van KDE is Konqueror. Naast file manager is Konqueror ook meteen een webbrowser. De KDE-software is gebaseerd op Qt, een toolkit ontwikkeld door Trolltech. Een overzicht van extra software voor KDE is te vinden op http://www.kde-apps.org.

X.org, KDE, GNOME participeren in http://www.freedesktop.org, een discussieplatform waar standaarden en ideeën worden besproken om de interoperabiliteit en techniek van de Unix-desktop te verbeteren. Wat hier o.a. mee is vastgesteld is een standaard voor drag-and-drop, zodat dat tussen de verschillende desktopomgevingen werkt.

GNOME en KDE zijn geen lichtgewicht desktopomgevingen. Beide werken goed op een moderne pc, maar minder op oudere hardware. Erg lichtgewicht is alleen een window manager gebruiken. Er zijn enkele interessante projecten die ergens tussen beide in staan: Xfce, wat ook is gebaseerd op GTK+, en ROX desktop, wat is geïnspireerd door RISC OS.

Er wordt soms gedacht dat software die bij GNOME of KDE hoort alleen gebruikt kan worden als je de desbetreffende desktopomgeving gebruikt. Dat is niet het geval. De software heeft alleen de onderliggende library's nodig. Je kunt ze prima starten zonder de gehele desktopomgeving.

Veel window managers en toolkits hebben ondersteuning voor themes. Die zijn o.a. te vinden op:

Toolkits

Toolkits of widget sets zijn library's om grafisch software te maken. De basiscomponenten daarvoor worden widgets genoemd. Voorbeelden van widgets zijn tekstbalken, knoppen en radio buttons. Programma's voor GNOME zijn geschreven m.b.v. GTK+, programma's voor KDE met Qt. Voor deze betrekkelijk nieuwe toolkits bestonden er al verschillende andere, waaronder Motif, Xaw/Athena en LessTif. Motif is hiervan de nieuwste en was bedoeld als standaard toolkit. Het wordt nog altijd het meest gebruikt voor grafische software onder andere Unices. Er is (veelal oudere) software voor Linux die een andere toolkit gebruikt dan GTK+ of Qt. Die software ziet er heel anders uit en werkt ook anders. De hele „look and feel” hangt af van de gebruikte toolkit. Zo gaat het omhoog scrollen in een programma als xterm (de standaard terminal van X) anders dan je waarschijnlijk gewend bent: je moet daarvoor met de rechter muisknop ergens op de grijze scrollbalk klikken.

Oudere toolkits zoals Motif hebben geen ondersteuning voor themes. Wat wel kan is de kleuren van alle onderdelen aanpassen m.b.v. X resources (zie sectie X resources). Daardoor is het wel mogelijk die software er in ieder geval qua kleurgebruik hetzelfde uit te laten zien. KDE kan dit voor je doen om alle software een meer consistente look te geven. Je kunt dit aan- en uitzetten in KDE's Control Center, onder Appearance & Themes, Colors, en dan het veld „Apply colors to non-KDE applications”.

X starten

X kun je kaal starten met xinit. Je ziet dan een groot grijs scherm met verder helemaal niks. Er zijn twee manieren om X en de benodigde andere software te starten: startx of een display manager. Heb je problemen met X, dan kun je het afsluiten door tegelijk ctrl, alt en backspace in te drukken. Doe je dat vanuit een display manager, dan zal deze vanzelf herstart worden. (Dat is bijv. nuttig om een nieuwe configuratie te laten gebruiken.)

Startx

Als je X start met startx in de console, dan wordt een bepaalde standaard window manager of desktopomgeving gestart (afh. van je distributie). Je kunt dat echter overrulen en je kunt meer andere dingen laten starten met startx. Maak hiervoor in je home directory een bestand aan genaamd .xinitrc. Een voorbeeldinhoud:

# Instellingen
xset s off
xmodmap ~/.xmodmap

# Start een terminal
xterm -bg black -fg white -geometry 100x30+300+30 &

# Gebruik Window Maker
wmaker

# Gebruik Enlightenment
# enlightenment

# Gebruik KDE
# startkde

# Gebruik GNOME
# gnome-session

Regels die met # beginnen zijn commentaar en zullen worden overgeslagen. De instellingen bovenin zetten de screensaver uit en voert xmodmap uit voor wat aanpassingen aan de toetsenbordinstellingen. Dan start het script xterm (standaard terminal). Deze regel heeft een & achteraan om hem in de achtergrond te starten. Doe je dat niet, dan pikt xterm de shell in en komt startx nooit bij de onderste regels aan. (Xset en xmodmap doen dat niet, waardoor er geen & voor nodig is.) Als laatste start je een window manager. Je kunt er maar één tegelijk gebruiken. GNOME is geen window manager, maar een hele desktopomgeving. Alle benodigde software wordt gestart door gnome-session (o.a. een window manager). Voor KDE geldt hetzelfde.

Wat leuk is om eens te doen, is geen enkele window manager starten, maar alleen een terminal. Als je dan startx intikt, wordt X opgestart en zie je de terminal zonder randen. Je kunt hem dan niet van grootte veranderen of verplaatsen. Als je dan echter een window manager start vanuit die terminal (bijv. door wmaker in te tikken), dan verschijnen er ineens randen! Je kunt de window manager dan ook weer afsluiten met ctrl-c en een andere opstarten zonder dat X of de programma's die onder X gestart zijn afgesloten worden.

Wat je ook met startx kunt doen is X een tweede keer (of vaker) starten. Dat kan met startx -- :1. Hierbij staat de 1 voor display 1. Je standaard X-sessie heeft displaynummer 0. Je kunt tussen beide sessies wisselen met ctrl-alt-F7 voor de eerste en ctrl-alt-F8 voor de tweede.

Display manager

Xdm, de X daemon, laat een grafische inlogprompt zien. De variant van GNOME is gdm en die van KDE kdm. Deze software wordt ook wel display manager genoemd. Er is over het algemeen een aparte runlevel genaamd X gedefinieerd om de display manager te starten. De standaard runlevel waartoe geboot wordt, wordt bepaald in /etc/inittab. Zie sectie Het opstartproces en runlevels. De meeste distributies hebben ook een methode om te selecteren welke display manager je wilt gebruiken. Raadpleeg hiervoor de documentatie van de distributie.

Xset

Met xset kun je een aantal zaken van X instellen. Je kunt er o.a. mee aangeven of een screensaver gestart moet worden, of DPMS moet worden gebruikt en of er geluid uit de pc-speaker moet komen (zie ook sectie Uitschakelen van de pc-speaker). Voor alle opties van xset kun je xset zonder argumenten intikken of de manual page bekijken. Voor een overzicht van alle huidige instellingen gebruik je xset q.

X resources

Met name oudere software voor X wordt grotendeels geconfigureerd met behulp van X resources. Deze instellingen staan voor een aantal bekende programma's in /etc/X11/app-defaults. In Xterm kan bijv. het volgende in staan:

*saveLines: 1024
*SimpleMenu*menuLabel.font: -adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-*

Dit zet het aantal regels dat je kunt terugscrollen in de terminal en het font voor het optiesmenu. Er kunnen ook nog algemene resources worden opgegeven in /etc/X11/Xresources. Verschil met de bestanden in app-defaults is dat hier de naam van het programma voor de * genoemd moet worden. In app-defaults moet de bestandsnaam de naam van het programma zijn.

Wil je als gebruiker eigen X resources opgeven, zet die dan in ~/.Xdefaults. Zet je daar een reeds bestaande variabele opnieuw, dan overschrijf je daarmee de oude waarde. Om .Xdefaults opnieuw te laten inlezen, kun je X opnieuw starten of xrdb -load .Xdefaults gebruiken. Om de oude instellingen niet verloren te laten gaan, kun je ook de optie -merge gebruiken i.p.v. -load. Dan worden de oude resources niet weggegooid.

Welke variabelen je kunt zetten wordt voor sommige applicaties genoemd in een .ad-bestand (van application defaults) in de directory met documentatie van het desbetreffende programma.

Fonts

X.org heeft ondersteuning voor een breed scala aan fontformaten: de aloude bitmapformaten bdf en pcf, Bitstream Speedo, CIDFont, OpenType, Adobe Type1 en Apple TrueType. Type1 en TrueType zijn schaalbare fonts. Je kunt ze zo groot maken als je wilt. Het zijn een soort vectortekeningen die de karakters beschrijven als vloeiende curves. Dit type font wordt ook wel „outline font” genoemd. Bij bitmapfonts moeten er plaatjes zijn voor elke puntgrootte die je ervan wilt kunnen maken. Voor de console of terminals onder X is een bitmapfont ideaal, maar voor grafische software gebruik je liever schaalbare.

Eind jaren 1980 hadden Apple, Microsoft en Adobe schaalbare fonts nodig. Adobe had Type1 ontwikkeld samen met hun PostScript-technologie voor printers. Apple en Microsoft waren echter bedachtzaam en gebruikten het liever niet vanwege het feit dat Type1 gesloten en propriëtair was. Apple heeft daarop TrueType ontwikkeld en beschikbaar gesteld aan Microsoft. Type1 is niet technisch gezien slechter dan TrueType, maar wordt veel minder gebruikt. Er zijn veel goede fonts beschikbaar in het TrueType-formaat, waardoor ondersteuning ervan interessant is. Oorspronkelijk was het niet aanwezig, maar tegenwoordig is er van huis uit ondersteuning voor TrueType-fonts in X.

Core X11 font system

Deze subsectie beschrijft het oorspronkelijke fontsysteem van X. Dit is hoe van oudsher fonts werden bijgehouden en het is nog altijd nodig voor oudere software (niet voor GNOME en KDE bijv.).

Fonts worden gezocht in de directory's die zijn ingesteld in het font path. Die kun je instellen in het configuratiebestand van X of tijdelijk aanpassen met xset. Om fonts beschikbaar te stellen aan alle systemen in een netwerk zijn er ook nog font servers bedacht. Daarmee hoeven de fonts maar op één systeem aanwezig te zijn en kunnen alle clienten er gebruik van maken. De font server van X, Xfs, luistert naar poort 7100. Om Xfs te laten gebruiken als bron moet ook unix/:7100 in het font path zijn opgenomen. De directory's waar Xfs fonts in zoekt, moet je instellen in het configuratiebestand van de Xfs zelf: /etc/X11/fs/config.

Om nieuwe fonts toe te voegen, moet een aantal stappen worden doorlopen. Zet de fonts in een bepaalde directory en voer daar mkfontdir uit. Dit maakt een bestand genaamd fonts.dir aan, een index die gebruikt wordt door X en Xfs, en encodings.dir, waar in staat welke fonts symbolen voor bepaalde encoderingen bevatten. Als je alleen bitmapfonts (bdf en pcf) wilt installeren, is dit voldoende. Voor schaalbare fonts moet echter voordat je mkfontdir aanroept een bestand fonts.scale aanwezig zijn. De fontnamen uit dat bestand worden dan gekopieerd naar fonts.dir. Voor TrueType-fonts kun je daar het tooltje ttmkfdir voor gebruiken: ttmkfdir -o fonts.scale. Je kunt eventueel ook nog een bestand fonts.alias aanmaken met aliases voor fonts om ze onder een eenvoudigere naam beschikbaar te stellen.

Als je nieuwe fonts in een nieuwe directory hebt gezet, moet deze directory worden toegevoegd aan het font path. Tijdelijk toevoegen kan met xset +fp /pad/naar/fonts. Met xset fp rehash worden de beschikbare fonts opnieuw bekeken. Voor Xfs moet je Xfs herstarten met /etc/init.d/xfs restart.

Een beschrijving van de fonts onder dit systeem is van de volgende vorm:

-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-*

Xft

Wat niet in alle implementaties van X11, maar wel het nieuwere X.org zit, is Xft. Xft is van begin af aan ontworpen voor goede en efficiënte ondersteuning van schaalbare fonts. Het biedt de mogelijkheid tot anti-aliasing en geeft de applicatie volledige controle over hoe een bepaald symbool gerenderd moet worden. Om Xft te gebruiken, moet de applicatie dit wel ondersteunen. Alle software die gebruikmaakt van GTK+ of Qt (dus GNOME- en KDE-software) doet dit.

Xft is de API, het systeem voor applicaties, om ondersteuning voor schaalbare fonts zoals TrueType te bieden en maakt voor het feitelijke renderen van de fonts gebruik van de X-module FreeType. Xft staat los van het core X11 font system en heeft zijn eigen configuratiemechanisme. Het maakt daarvoor gebruik van de library fontconfig. Je kunt wijzigingen aan de standaard configuratie het beste aanbrengen via een ~/.fonts.conf in je home directory. Je kunt daarmee bijv. aangeven geen anti-aliasing te gebruiken voor fonts kleiner dan een bepaalde puntgrootte.

Je hoeft veel minder moeite te doen om nieuwe fonts toe te voegen voor dit systeem. De directory .fonts in de home directory van de gebruiker wordt standaard doorzocht. Kopieer nieuwe fonts naar ~/.fonts en update de cache van fontconfig met fc-cache -v. Het oude systeem om fonts toe te voegen (zoals hiervoor uitgelegd) is alleen nodig om de fonts te kunnen gebruiken in applicaties die geen Xft ondersteunen.

 
Was dit artikel bruikbaar? ja / nee
Gerelateerde artikelen Internationalisering
Hardwareondersteuning
Op afstand werken
Systeemconfiguratie
Software
Tips & trucs
Windows-gerelateerd
Basiskennis
Bijzondere lettertypes in html: hoe doe je dat?
Distributies
Artikel details
Artikel ID: 743
Categorie: Linux handboek 2008
Zoekwoorden X Windowing System, x window, system drivers, configuratie, grafisch, window, managers, desktopomgevingen, toolkits, startx, kde, gnome, display, manager, xset, x resources, fonts, x11, system, wft,
Datum toegevoegd: 6-Dec-2008 03:35:54
Aantal bekeken: 232
Beoordeling (Stemmen): Artikel nog niet beoordeeld (0)

 
« Ga terug