Applicaties op afstand draaien met X11

ArticleCategory: [Choose a category, do not translate this]

UNIX Basics

AuthorImage:[Here we need a little image from you]

[Guido Socher]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to nl Hendrik-Jan Heins

AboutTheAuthor:[A small biography about the author]

Guido houdt van Linux en niet alleen omdat het interessant is te leren hoe een besturingssysteem werkt, maar ook vanwege de mensen die betrokken zijn bij het ontwerp ervan.

Abstract:[Here you write a little summary]

Veel mensen die Linux voor het eerst gebruiken denken dat het grafische bureaublad onder Linux weer zo'n "Windows" systeem is waarin je applicaties kan starten die in gescheiden vensters verschijnen. Sommigen merken op dat je ook verschillende bureaubladen kan hebben, maar verder dan dat gaat het niet. Het Linux X Window Systeem (X11) kan nog veel meer! Het is een window systeem voor op het netwerk. We zullen zien welke nieuwe en krachtige oplossingen dit biedt.

ArticleIllustration:[This is the title picture for your article]

[Illustratie: XFree86]

ArticleBody:[The article body]

Het display concept

Iedere grafische X Window applicatie leest bij het opstarten de omgevingsvariabele DISPLAY om uit te vinden naar welke computer monitor het z'n beelden moet sturen. Dit tezamen met de netwerkmogelijkheden van het X Window System maakt het mogelijk om grafische applicaties op afstand te draaien. Dit houdt in dat je de CPU van de ene machine gebruikt terwijl je de applicatie aanstuurt vanaf een ander. De volledige GUI (graphical user interface ofwel grafische gebruiksinterface) verschijnt op de machine waar vanaf je hem aanstuurt. Je merk niet dat je eigenlijk op 2 computers tegelijk werkt.
De snelheid van het netwerk is hierbij natuurlijk van belang, maar een gewoon 10Mbit/s LAN netwerk is meer dan snel genoeg.


[toepassingen op afstand draaien]

Waarom zou je dit willen doen?
Er zijn veel mogelijke toepassingen voor deze "network graphics". Bedrijven gebruiken ze om op afstand apparatuur aan te sturen die misschien wel duizenden kilometers verderop staat en jij kan de toepassingen van al je computers gebruiken alsof je er zelf achter zit.
Je zou 2 computers kunnen hebben, een snelle 1Ghz machine en een oude Pentium 133MHz. Je kan gebruik maken van de snelheid van je nieuwe machine zonder dat je erachter zit. Misschien zit je zus nu achter de snelle computer en is ze ingelogd en aan het werk. Het maakt niet uit, je kan er nog steeds gebruik van maken.
[display] Hoe werkt het?
Alle X Window applicaties, of ze nu gimp, xterm, konqueror of netscape heten ... zijn in feite netwerk clients die verbonden worden met een server, de X-server. Het is de taak van de X-server om te communiceren met de grafische hardware, de plaatjes op je scherm te tekenen en de muis- en toetsenbord-invoer te lezen. De clients (de cliëneten, programma's zoals gimp, netscape...) sturen de server instructies over hoe de frames en de knoppen getekend moeten worden. In ruil krijgen zij van de server de gegevens van de muis en het toetsenbord. Je hebt natuurlijk één of andere authenticatie nodig anders zou iedereen op ieders scherm kunnen komen. Er bestaan 2 programma's die de toegang beheren:
 
- xhost: Dit programma laat je toe gebruikers toestemming te geven om op een bepaalde machine grafische gegevens op het scherm te zetten. Bijvoorbeeld: Je zit achter een machine die philosophus heet. Om toegang te verlenen voor ieder programma vanaf de machine movietux op jou scherm (op philosophus) zou je het volgende commando moeten typen:

xhost +movietux
Dit moet op een commandoregel op philosophus worden getypt


- xauth: Dit is een op cookies gebaseerde authenticatie en hij is veel geavanceerder. Hiermee kan je echt individuele mensen toegang geven. Het is ook veel beter beveiligd dan xhost. De authenticatie verloopt via een cookie dat bewaard wordt in het bestand .Xauthority in de "home" directory van een gebruiker. Als de op een andere locatie staande machine een geldig cookie bevat in dit bestand, dan wordt er toegang verleend. Om een cookie te kopiëren vanaf de machine waar je achter zit (philosophus) naar de andere die het programma draait (movietux) kan je één van de volgende methodes gebruiken:

xauth extract - philosophus:0.0 | ssh movietux /usr/X11R6/bin/xauth merge
of
scp ~/.Xauthority movietux:


De procedure die start bij het opstarten van een programma (client) ziet er als volgt uit:
  1. De client controleert de DISPLAY omgevingsvariabele om de server te vinden en probeert daarmee een verbinding te maken. Lukt dit niet (of is er geen server op afstand opgegeven), dan maakt de client verbinding met de lokale server.
  2. De server controleert of de client toestemming heeft om "beelden" naar hem toe te zenden. Als de client toestemming heeft zal de server het beeld weergeven op het scherm.
De DISPLAY omgevingsvariabele heeft de volgende syntax:

bash:export DISPLAY=hostnaam:displaynummer.schermnummer
tcsh:setenv DISPLAY hostnaam:displaynummer.schermnummer

Ik zal niet ingaan op het displaynummer en schermnummer in dit artikel. Dit is normaal gesproken gewoon 0:0. Een voorbeeld voor bash zou er als volgt uit zien:

export DISPLAY=philosophus:0.0

Een applicatie op afstand starten

Na alle theorie nu een praktisch voorbeeld. Probeer het gewoon eens. We zitten weer achter de computer philosophus en we willen iets op afstand opstarten vanaf movietux.
  1. Vertel aan je X-server dat clients vanop movietux beelden op je scherm mogen zetten:
    xhost +movietux
  2. login op de op afstand staande gastheer movietux:
    slogin -l username movietux
  3. Nu ben je ingelogd op movietux en ieder commando dat je ingeeft wordt uitgevoerd op movietux
  4. export DISPLAY=philosophus:0.0
  5. Start een programma. Bijvoorbeeld:
    netscape &
Als movietux een snelle machine is dan zal je zien dat html pagina's sneller worden gerenderd (opgebouwd) dan op de machine waar je achter zit. Tegelijkertijd zie je niet direct dat netscape niet lokaal gestart is, aangezien je het nog op precies dezelfde manier met je muis en toetsenbord aanstuurt.
Cool, niet?

Het scherm met je meenemen

Ook al is het eenvoudig om een applicatie op afstand te draaien, er is nog steeds een beetje extra typwerk nodig om het DISPLAY in te stellen. Het is ook mogelijk om dit automatisch te laten verlopen: