Een Linux-distributie is een mengelmoes van componenten die met elkaar samenwerken. Eigenlijk is het een blokkendoos die door de ontwikkelaars van je distributie in elkaar is gezet. Van de blokken onderaan kan je het beste afblijven als je een stabiel systeem wilt, maar met heel wat andere blokken kan je gerust spelen. In dit artikel leggen we uit welke componenten allemaal in een grafische desktop voorkomen, wat hun taak is en welke je vrijblijvend kunt inwisselen.

 Zelfs de meest minimalistische Linux-distributie heeft een complexe architectuur. Deze bestaat uit een aaneenschakeling van allerlei software: de kernel, de C-library, de bootloader, het init-systeem, de display manager, het X Window systeem, de window manager en desktopomgeving, D-Bus, CUPS, enzovoort. Veel gebruikers hebben wel eens van deze componenten gehoord, maar weten niet altijd hoe ze samenhangen, welke taak elk onderdeel juist uitvoert en op welke manier ze inwisselbaar zijn. Dit laatste is belangrijk: de kracht van Linux is immers zijn flexibiliteit en daardoor zien we Linux overal. Van embedded systemen tot en met supercomputers, van smartphones en desktops tot servers. En laten we de BSD’s niet vergeten: hun architectuur lijkt erg op die van Linux en zowat alle toepassingen die je erop draait zijn zelfs identiek.

 


De meeste open source-desktopomgevingen draaien niet alleen op Linux, maar ook op de BSD’s.

 

Elke distributie maakt zijn eigen keuzes voor de gebruikte componenten. In principe kun je zelf al die componenten gaan inwisselen voor andere, maar in de praktijk doe je dat niet met de onderste lagen van je distributie. Een belangrijke taak van de distributieontwikkelaars is immers om al die componenten op elkaar af te stemmen, zodat je distributie stabiel werkt. Hoe lager je in de Linuxstack zaken gaat veranderen, hoe groter de kans is dat je met een onstabiel besturingssysteem te maken krijgt. De kernel van je Linux-distributie inwisselen door een andere kernelversie of de bootloader vervangen door een alternatief is dan ook geheel op eigen risico.

 In de hogere lagen van de stack heb je meer vrijheid. Het gaat dan voornamelijk om de componenten die je grafische desktop uitmaken. Veel distributies geven je al tijdens de installatie de keuze tussen verschillende desktopomgevingen of bieden diverse installatie-images aan met een andere desktopomgeving. Denk maar aan de alternatieve smaken van Ubuntu: Kubuntu, Lubuntu, Ubuntu GNOME, Xubuntu, Ubuntu MATE, en zo verder. Maar je hoeft geen volledig nieuwe installatie uit te voeren als je een andere desktopomgeving wilt. Een bestaande installatie is doorgaans perfect om te bouwen. In dit artikel leggen we uit welke componenten er allemaal in je grafische omgeving bestaan, wat hun taak is en welke je naar believen kunt inwisselen.

 

Display server

De display server of window server is de software die invoer van je invoerapparaten, zoals toetsenbord en muis, inleest en de uitvoer van je programma’s op een grafische manier weergeeft. De display server maakt dan ook het hart uit van elke grafische Linuxdistributie. Linux en de BSD’s bouwen traditioneel voort op het X Window System als protocol. Vroeger was de populairste open source-implementatie van dat protocol XFree86, ondertussen al een hele tijd X.Org. De kern van X (zoals het X Window System vaak wordt afgekort) bestaat uit een X Server, het programma dat uitvoer op je scherm toont. Zogenaamde X-clients vragen dan via het X Window System protocol aan de X Server om uitvoer op het scherm te tonen. Elk grafisch programma, zoals je webbrowser of tekstverwerker, is een X-client. Het mooie aan X is dat het netwerktransparant is: de X-client en X Server hoeven niet op dezelfde computer aanwezig te zijn. Als je bijvoorbeeld via je laptop op je desktop inlogt met de opdracht ssh -X en dan de naam van een grafisch programma intypt, krijg je het programma op het scherm van je laptop te zien (door de X Server op je laptop), maar draait het programma eigenlijk op je desktop.

 


De architectuur van het X Window System.

 

Enkele jaren geleden begon men aan de ontwikkeling van een alternatieve display server met een eenvoudigere architectuur: Wayland. Een display server die het Waylandprotocol implementeert, heet een Wayland compositor. X werkt ook met een compositor, maar daar is dat een afzonderlijk programma dat ervoor zorgt dat de uitvoer van de verschillende programma’s met overlappende vensters op het scherm worden gecombineerd. Bovendien is de compositor in X optioneel. In Wayland combineert de compositor die taak met de taak van display server en communiceert daarvoor rechtstreeks met de GPU, wat efficiënter is dan de aanpak van X. Voorlopig ondersteunt Wayland geen netwerktransparantie zoals X.

 

Wayland heeft een eenvoudigere architectuur dan X.

 

De referentie-implementatie voor een Wayland compositor is Weston, maar ook window managers (zie verder) zoals Mutter (van het GNOME-project), KWin (van KDE) en Enlightenment zijn in staat om als Wayland compositor te functioneren. Ook mobiele, op Linux gebaseerde, besturingssystemen zoals Tizen en Sailfish OS maken gebruik van Wayland.

 Grafische toolkits, zoals Qt en GTK+ die traditioneel X ondersteunen, hebben ondertussen ook ondersteuning voor Wayland gekregen. Aangezien de meeste software niet rechtstreeks het X Window System protocol aanspreekt, maar met de X Server communiceert via een grafische toolkit, draait zo al veel open source software op Wayland. Draai je een distributie met Wayland en wil je een toepassing draaien die nog geen Wayland ondersteunt, dan is dat mogelijk via XWayland. Dat is een X Server die als Wayland-client draait.

 Wayland is nog altijd experimenteel, dus verwacht maar problemen als je overstapt van X. In principe is het nu al in veel distributies mogelijk om Wayland in plaats van X te draaien, maar voorlopig heeft nog geen enkele distributie het aangedurfd om Wayland standaard in te schakelen. Fedora 25 (verwacht in november 2016) heeft het plan om dit te doen op systemen waar de GPU niet voor problemen zorgt.

Canonical heeft een eigen alternatief voor X ontwikkeld: Mir. De architectuur van de nieuwe display server voor Ubuntu lijkt erg op die van Wayland. De enige desktopomgeving die voorlopig op Mir voortbouwt, is Unity 8, dat in Ubuntu 16.04 LTS wordt gebruikt. Net zoals XWayland X als Wayland-client draait, is er ook een XMir, waarmee je een X Server als Mir-client draait om nog niet naar Mir geporte X-software te draaien. Overigens zijn zowel Wayland als Mir voorlopig Linux-specifiek, hoewel er inspanningen aan de gang zijn om Wayland naar FreeBSD te porten.

 

Display manager

De display manager (ook wel eens login manager of greeter genoemd) is het stukje software dat na het opstarten van je computer het venster toont waarin je kan inloggen. Wanneer je bent ingelogd, start de display manager je display server op en krijg je de desktopomgeving te zien. In de meeste display managers kun je ook een sessietype kiezen. Zo toont de display manager GDM in Fedora 24 (dat uitkomt in mei 2016) opties om GNOME op Wayland te starten of GNOME op X.

 

De display manager in Fedora 25 geeft je de keuze tussen GNOME op Wayland of GNOME op X.

 

Desktopomgevingen komen doorgaans met hun eigen display manager, maar meestal zijn die eenvoudig te vervangen door een andere. Zo gebruikt KDE 4 de display manager KDM, Plasma 5 en LXQt komen met SDDM (Simple Desktop Display Manager). GNOME heeft GDM, Ubuntu is uitgerust met LightDM, LXDE heeft LXDM en Linux Mint maakt gebruik van MDM (Mint Display Manager). Draai je geen volwaardige desktopomgeving, maar kies je voor een lichtgewicht window manager (zie verder), dan is de beste keuze ook een onafhankelijke display manager om te voorkomen dat je nog allerlei dependency’s van de desktopomgeving moet installeren. Let wel op als je distributie als init-systeem systemd heeft: sommige display managers ondersteunen geen systemd en zorgen dan voor moeilijk te verklaren problemen. Een goede cross-desktop display manager is LightDM, dat zowel X, Wayland als Mir als display server ondersteunt en dat weinig geheugen verbruikt.

 

Plasma 5 en LXQt gebruiken SDDM als display manager.

 

Een Linux-systeem kan perfect zonder display manager. De display manager wordt alleen automatisch opgestart als een grafische runlevel is ingeschakeld in je Linux-distributie, doorgaans runlevel 5. De populairste distributies starten dit runlevel automatisch, maar je kunt net zo goed een niet-grafische runlevel, zoals runlevel 3, kiezen. Na het opstarten krijg je dan op je scherm een tekstuele loginprompt te zien. Wanneer je daar bent ingelogd, start je de display server eenvoudig handmatig op, bijvoorbeeld met de opdracht startx voor de X Server. Dit programma kijkt dan in het bestand ~/.xinitrc welke desktopomgeving en andere X-clients het moet opstarten. Er bestaan ook niet-grafische display managers, zoals CDM (Console Display Manager)

 

Desktopomgeving

De display server beperkt zich tot ‘vensters op het scherm tonen’. Voor een gebruiksvriendelijke grafische interface heb je heel wat meer nodig: een desktop environment of desktopomgeving. Een desktopomgeving biedt een volledige grafische gebruikersinterface voor je Linux-distributie, zodat je je dagelijks werk zo vlot mogelijk kunt uitvoeren. Wat een Linux-distributie doet voor open source software, doet een desktopomgeving eigenlijk voor je grafische interface: de ontwikkelaars bundelen allerlei componenten en stemmen die perfect op elkaar af. Het verschil is dat de componenten van een desktopomgeving vaak samen worden ontwikkeld, omdat ze zo nauw op elkaar aansluiten.

 Een desktopomgeving laat je op een grafische manier met je Linux-distributie omgaan. Interface-elementen, zoals icoontjes, taakbalken, applicatiemenu’s, notificaties, een bureaublad en desktop widgets behoren allemaal tot de taken van een desktopomgeving. Ook de window manager (zie verder), die verantwoordelijk is voor de plaatsing van je vensters en de interactie ermee, maakt deel uit van de desktopomgeving.

 Een desktopomgeving bevat ook altijd allerlei hulpprogramma’s. Een file manager is een belangrijk vereiste, zodat je op een grafische manier door je bestanden kunt bladeren. Een image viewer is een andere basiscomponent. Sommige desktopomgevingen gaan heel ver en bieden een uitgebreide verzameling van standaardtoepassingen aan, zoals een webbrowser, kantoorpakket, tekenprogramma etc. Soms komen die toepassingen uit afzonderlijke projecten, soms worden ze door de ontwikkelaars van de desktopomgeving zelf ontwikkeld.

 De bekendste desktopomgevingen zijn KDE en GNOME, met Ubuntu’s Unity als derde. Overigens is Unity eigenlijk geen desktopomgeving, maar een alternatieve, grafische shell voor GNOME. De desktopomgeving van het KDE-project heet tegenwoordig Plasma. Deze drie omgevingen bieden de meest complete ervaring. Het nadeel is dat ze daardoor meer opslagruimte nodig hebben en ook meer van je CPU en RAM vragen. En misschien heb je al die functionaliteit ook niet nodig.

 

Een desktopomgeving zoals Plasma 5 biedt alles wat je nodig hebt om op een grafische manier met Linux te werken.

 

Een andere bekende desktopomgeving is Enlightenment, een lichtgewicht omgeving met visuele eye-candy. Andere desktopomgevingen in dezelfde categorie zijn LXDE, LXQt en Xfce. Het zijn allemaal omgevingen die niet zo compleet zijn als de drie grote, en daardoor ook goed op oudere of minder krachtige hardware werken. Wie niet zo blij is met de nieuwste ontwikkelingen in desktopomgevingen, kan ook kiezen voor MATE (een fork van het oude GNOME 2), Trinity (een fork van het oude KDE 3.5) of Cinnamon (een fork van GNOME 3 met een traditionele look).

 De meeste distributies stellen standaard een desktopomgeving voor of bieden je de keuze uit enkele ondersteunde desktopomgevingen. Maar dat betekent niet dat je daarna geen andere keuze hebt. Het is zelfs mogelijk om meerdere desktopomgevingen te installeren. Bij het inloggen in je display manager kies je dan welke desktopomgeving je op dat moment wilt starten.

 Kiezen voor een desktopomgeving betekent bovendien niet dat je alle bijbehorende software hoeft te gebruiken. Als je bijvoorbeeld van Plasma houdt, maar als beeldbewerkingsprogramma GIMP prefereert, dan kun je dat perfect combineren. Dit heeft wel nadelen: zo is GIMP geschreven in de GTK+-toolkit van GNOME, waardoor je bij de installatie van GIMP ook heel wat dependency’s van die laatste moet installeren. Gemengde omgevingen vragen dus om meer opslagruimte. Maar ook visueel is het niet helemaal ideaal: programma’s die een andere toolkit gebruiken, zien er iets anders uit dan de programma’s die zijn geschreven in de toolkit van je desktopomgeving. Een omgeving waarin je programma’s uit diverse desktopomgevingen mengt, zal dan ook een rommelige gebruikerservaring geven.

 

Window manager

We vermeldden al de window manager, omdat het zo’n belangrijk component is van een desktopomgeving. Ze is verantwoordelijk voor de plaatsing van de vensters van je programma’s op het scherm en de interactie ermee. In X is de window manager ook verantwoordelijk voor het tonen van de titelbalk en vensterknopjes en het kader rond het venster. In Wayland worden die window decorations door het programma zelf getekend als je de standaard compositor Weston gebruikt. Sommige andere Wayland-compositors kiezen ervoor om toch de window decorations voor hun rekening te nemen.

 De meeste desktopomgevingen komen met hun eigen window manager, maar je kunt ze doorgaans vervangen door je eigen keuze. Cinnamon staat daarentegen geen alternatieve window managers toe en GNOME Shell ook niet. Wil je echt een andere window manager in GNOME draaien, gebruik dan de alternatieve shell GNOME Flashback, die een fallbackmodus zonder 3D-versnelling implementeert. Let ook op als je Wayland in plaats van X draait: in Wayland is de display server, compositor én window manager één programma. Je kunt dus geen willekeurige window manager voor X in Wayland draaien: je hebt een window manager nodig die Wayland ondersteunt en dus ook de taken van display server en compositor op zich neemt. Dat zijn er voorlopig nog niet zo veel.

 Een alternatieve window manager zal je meestal zonder desktopomgeving inzetten. Heb je immers helemaal geen behoefte aan een startmenu, taakbalk, bureaublad en al het ander fraais van KDE of GNOME, dan volstaat het om alleen een window manager te draaien. Je kunt een window manager van een desktopomgeving nemen, maar er bestaan ook heel wat standalone window managers. Met een standalone window manager creëer je dus een lichtgewicht grafische omgeving voor je Linuxdistributie. Na installatie start je de window manager in de meeste distributies door het sessietype in het aanmeldvenster van je display manager te kiezen.

 Let op: heel wat taken die een desktopomgeving voor je uitvoert, gebeuren allemaal niet meer als je een standalone window manager draait. Denk daarbij aan het aankoppelen van usb-sticks, een screen locker, notificaties, het geluidsvolume aanpassen, een menu om toepassingen op te starten, een bureaublad met icoontjes, enzovoort. Maar voor al die taken bestaan er ook standalone programma’s. Zo kun je daarvoor lichtgewicht alternatieven kiezen zonder de ballast van een complete desktopomgeving. En wat je niet nodig hebt, installeer je eenvoudigweg niet. Zelfs zonder al die extra componenten is je grafische omgeving verrassend bruikbaar!

 

Awesome is een dynamische window manager die volledig naar je hand te zetten is.

 

 

Window managers zijn in drie types onder te verdelen. Stacking of floating window managers zijn de klassieke window managers die vensters boven elkaar positioneren, zoals ook in Windows en OS X het geval is. De grote desktopomgevingen zijn bijna allemaal met dit type window manager uitgerust. Een populaire alternatieve window manager van dit type is Fluxbox. Tiling window managers zoals Ion3 tonen alle vensters op een niet-overlappende manier op het scherm, zoals bij de tegels van Windows 10. Vaak zijn ze efficiënt met toetsencombinaties te besturen. En tot slot zijn er ook dynamische window managers waarmee je de vensters eenvoudig laat overschakelen tussen een tiling en een floating lay-out. Bekende telgen uit deze familie zijn awesome, spectrwm en xmonad.