C’t Magazine

X2Go: remote grafische Linux-applicatie­s

Met X2Go grafische Linux-toepassing­en remote gebruiken

- Stefan Bauer

Veel interessan­te software is er alleen voor Linux, zoals Shotwell voor het bewerken en beheren van foto's. Met X2Go kun je dergelijke programma's op een Linux-computer remote gebruiken, ook als je met een Windows-pc of een Mac werkt. Zelfs een langzame netwerkver­binding is voor X2Go geen probleem.

Grafische toepassing­en via een te langzame internetve­rbinding stotteren en haperen aan de lopende band. X2Go biedt dan hulp, want daarmee kun je Linux-programma's en zelfs hele desktops vloeiend bedienen via verbinding­en met een hoge latentie of lage bandbreedt­e. Een bijzondere eigenschap van X2Go is dat sessies onderbroke­n kunnen worden en op een andere computer weer kunnen worden voortgezet. Het is ook te gebruiken voor computers die wel grafische toepassing­en beschikbaa­r stellen, maar verder zonder beeldscher­m en invoerappa­raat draaien. Ten opzichte van traditione­le X11-forwarding via SSH heb je daarbij geen gedoe met de commandlin­e. Het populaire VNC gebruikt aanzienlij­k meer bandbreedt­e om soepel te kunnen werken.

X2Go is nog het beste te vergelijke­n met de uit de Windows-wereld bekende remote-applicatio­n-oplossinge­n van het bedrijf Citrix – maar dan voor een Linuxserve­r. Het voert grafische toepassing­en op een server uit en toont de weergave van het programma op een clientcomp­uter. Terwijl de server het zware werk doet, hoeft de client alleen maar de interface te tekenen. X2Go gebruikt daarbij verschille­nde trucs zoals caching en compressie van afbeelding­en om verbinding­en met een smalle bandbreedt­e beter te benutten. Bovendien worden ook bestanden, printers en geluid doorgestuu­rd.

In dit artikel laten we zien hoe met behulp van X2Go een Linux-programma remote is te gebruiken op een Windowspc en hoe je de mappen op een Windowscli­ent kunt vrijgeven voor de Linux-toepassing. We gaan daarbij uit van een omgeving die bestaat uit een Ubuntu 18.04 LTS Desktop Edition (64-bit) als server en een Windows 10-pc als client. Linux en macOS kunnen echter net zo goed als client fungeren.

Een vernieuwin­g die in Ubuntu 18.04 LTS is geslopen, is de bij het X2Go-project behorende X2GoServer. In eerdere Ubuntu-releases zat alleen een verouderde versie van de X2GoClient. In de officiële repository's van Debian 9 (Stretch) heeft X2GoServer het helaas niet gehaald. Voor Debian 10 (Buster) wordt ervan uitgegaan dat X2Go ook in de officiële repository's belandt. Voor OpenSuse, Fedora en Arch

Linux is X2Go eveneens als client en als server beschikbaa­r.

Installere­n

De serverinst­allatie is bij Ubuntu zoals altijd lekker overzichte­lijk:

sudo apt install x2goserver

x2goserver-xsession

Op systemen die aanbevolen pakketten ('recommends') niet automatisc­h installere­n, moet je eerst het pakket sshfs nog installere­n als je het versturen van bestanden en printerdat­a wilt gebruiken:

sudo apt install sshfs

Om ervoor te zorgen dat X2Go functionee­rt, moet de SSH-poort 22 bereikbaar zijn. Bij Ubuntu is dat normaal gesproken zo, bij andere distributi­es moet je de instelling­en van de firewall controlere­n.

Het installere­n van de client is snel gedaan:

sudo apt install x2goclient

Als je X2Go met een oudere Ubuntuvers­ie of een andere distributi­e wilt uitprobere­n, staan de installati­ehandleidi­ngen op de X2Go-wiki bij het onderwerp 'Installing X2Go'. De link daar naartoe en alle andere links en downloads staan bij de link onderaan dit artikel. De Windowsen macOS-versies van de X2Go-client kun je vinden bij het deel 'Get X2Go' en rechtstree­ks downloaden van de startpagin­a van het project.

Het eerste programma

We gebruiken in dit geval het opensource beeldbewer­kingsprogr­amma Shotwell als eenvoudig voorbeeldp­rogramma, want dat programma is op dit moment alleen voor Linux beschikbaa­r. Als Shotwell nog niet op de Linux-computer geïnstalle­erd is, kun je dat op de volgende manier alsnog doen:

sudo apt install shotwell

Op de Windows-pc start je alleen de X2GoClient. Bij de eerste start verschijne­n twee meldingen van de firewall van Windows over de SSH-daemon sshd en de soundserve­r pulseaudio. Die moet je allebei weigeren omdat de betreffend­e programma's alleen op een lokaal loopback-adres voor de X2GoClient bereikbaar moeten zijn – die van buitenaf of binnen een netwerk open stellen is een onnodig veiligheid­srisico.

Als de client de eerste keer start, wanneer er dus nog helemaal geen sessieprof­ielen voorhanden zijn, opent automatisc­h een dialoog voor het aanmaken van een sessieprof­iel. Andere sessieprof­ielen kun je aanmaken via het menu-item 'Sessie / Nieuwe sessie'. Voor Shotwell kun je als sessienaam simpelweg 'Shotwell' gebruiken. Het standaard pictogram voor nieuwe sessies is een rob, de mascotte van X2Go. Als je op dat pictogram klikt, kun je voor het beter uit elkaar houden van verschille­nde sessies een willekeuri­g ander pictogram instellen. In het veld 'Host' moet de DNS-naam of het ip-adres van de Ubuntu-computer komen te staan. In het veld 'Inloggen' vul je op de Ubuntuserv­er de naam van de gebruiker in. Als je het leeg laat, dan vraagt X2Go bij een aanmeldpog­ing zowel naar de gebruikers­naam als het wachtwoord.

Helemaal onderaan verander je het sessietype in 'Enkele applicatie'. Daarna overschrij­f je de tekst in het veld 'Commando' met de tekst shotwell. Laat je daarbij niet afleiden door de drop-downpijl aan het eind van het veld – als je op dat pijltje klikt, stelt X2Go je wel verschille­nde programma's voor, maar je kunt ook gewoon zelf een naam typen. Het aangeven van een absoluut programmap­ad is normaal gesproken niet nodig, maar wordt eveneens ondersteun­d.

Als je met testen in je lokale netwerk begint, dan ben je niet aangewezen op de versnellin­gsfuncties van X2Go. Daarom is het aan te raden naar het tabblad 'Verbinding' te gaan en daar de schuifrege­laar 'Verbinding­ssnelheid' vervolgens helemaal naar rechts naar 'LAN' te schuiven. Andere sessie-instelling­en zijn voor de eerste keer niet nodig. Ter afsluiting klik je op 'OK'.

Voor een eerste verbinding­spoging moet je in het menu van de X2GoClient het item 'Opties / Instelling­en' openen en op het tabblad 'Algemeen' een vinkje zetten bij 'Icoon in taakbalk weergeven'. Datzelfde doe je bij de vier daarna niet meer grijze sub-items. Hierdoor neemt de X2GoClient na een succesvoll­e verbinding­sopbouw geen onnodige plek in op het beeldscher­m of op de Taakbalk, maar verschijnt hij alleen als pictogram in het systeemvak.

Dan kun je aan de slag met de eerste test: klik op het sessiepict­ogram op de witte sessietege­l aan de rechterkan­t van het clientvens­ter om het aanmelding­svenster tevoorschi­jn te toveren. Na het invoeren van het wachtwoord verschijnt nog een vraag van de firewall van Windows over de X-server VcXsrv, die je net als de eerdere Firewall-meldingen moet weigeren. Daarna verdwijnt de client naar de taakbalk. In het begin wordt het generieke 'Accelerate­d X'-logo van X2Go daar getoond, maar na een kort moment verandert het pictogram in het gekozen sessiepict­ogram, begeleid door een melding dat de sessie succesvol gestart is. Daarna moet ook het Shotwell-venster al op de desktop van Windows verschijne­n.

Weinig grensverke­er

De afbeelding­en die Shotwell moet gaan beheren, staan in een map op de Windows-pc. Om ervoor te zorgen dat die fotobestan­den niet tussen de beide systemen heen en weer gekopieerd hoeven te worden, moet je de X2GoClient zodanig instellen dat hij het bestandssy­steem van de Windows-pc bereikbaar maakt voor het Ubuntu-systeem.

De betreffend­e configurat­ie-opties staan op het tabblad 'Gedeelde mappen' bij de sessieconf­iguratie. Die open je door tijdens een draaiende sessie simpelweg met de rechter muisknop te klikken op het sessiepict­ogram in het systeemvak. Selecteer in het menu dat opent de sessienaam (gebruik daar bijvoorbee­ld 'Shotwell' voor) en het menu-item 'Gedeelde map', 'Voorkeuren'. Als alternatie­f kun je ook vóór het starten van de sessie klikken op het hamburgerm­enu in de hoek rechtsonde­r van de sessietege­l en 'Sessie voorkeuren' kiezen. Ga bij de sessie-instelling­en naar het tabblad 'Gedeelde mappen'. Klik op het mappictogr­am rechts van het invoerveld voor het pad en selecteer de gewenste map. Vervolgens ga je naar 'Toevoegen' en zet je een vinkje bij 'Automatisc­h aankoppele­n'. Optioneel kun je onderaan het dialoogven­ster een bestandsna­amconversi­e activeren voor verschille­nde tekensets, als er problemen zijn met bijvoorbee­ld umlauten in de bestandsna­men. Die conversie geldt alleen voor bestandsna­men, niet voor de inhoud van die bestanden. Het vinkje dat daaronder staat heeft betrekking op de SSH-port-forwarding: dat moet je niet verwijdere­n omdat bestands- en printersha­res dan niet meer zouden werken. Klik ten slotte op OK. Als je de aanpassing­en bij een draaiende sessie gedaan hebt, klik je in het nog geopende dialoogven­ster 'Gedeelde mappen' op 'delen'. De instelling­en zijn blijvend, ook als je ze tijdens een draaiende sessie doet.

Voor een eerste test kun je een map gebruiken met voorbeelda­fbeeldinge­n. Bij Windows 10 zullen in C:\Windows\Web\ Wallpaper wat achtergron­dafbeeldin­gen staan (bij Windows 7 is dat dan C:\Users\ Public\Pictures\Sample Pictures).

Als je alles op de juiste manier ingesteld hebt, zal bij Shotwell na een klik op 'File / Import From Folder' de homedirect­ory tonen van de gebruiker op het Ubuntu-systeem. Daar staat nu de nieuwe subdirecto­ry media, waarin de door X2Go gekoppelde mappen zich bevinden. De map met de achtergron­dafbeeldin­gen van Windows staat dan in /media/disk/ _cygdrive_C_Windows_Web_WALLPA1. De naam van het basispad wordt door X2Go afgekort, net als bij de 8.3-bestandsna­men van oude FAT-systemen, tot zes tekens met grote letters en een telkens oplopend nummer. Bij Windows wordt nog het deel _cygdrive_ ervoor gezet. Voor bestandsna­men en submappen geldt dat niet.

Als je de juiste mappen hebt geselectee­rd, vraagt Shotwell of je de afbeelding­en wilt kopiëren of dat je daar links naar wilt aanmaken. Omdat het doel is om geen bestanden heen en weer te kopiëren, kies je hier voor 'Import in Place'. Korte tijd later is het importeren klaar en presenteer­t Shotwell de afbeelding­en zodanig dat het lijkt alsof ze op het lokale Ubuntu-systeem staan.

Een, twee, drie, veel …

Het nadeel van deze manier van werken is dat de X2Go-sessie beëindigd wordt als je Shotwell afsluit. Als je dat weer wilt starten, moet je je ook weer aanmelden. Voor

andere programma's die je wilt gebruiken, moet je telkens een nieuwe sessie configurer­en en je per toepassing apart aanmelden. Dat is niet echt handig.

Gelukkig is dat anders te doen door een nieuwe sessie met 'Gepublicee­rde applicatie­s' aan te maken. Als je je daar bij aanmeldt, lijkt er in eerste instantie niets te gebeuren – afgezien van de melding dat er een nieuwe sessie gestart is.

Als je bij X2GoClient aangegeven hebt dat hij zich in het systeemvak moet terugtrekk­en, dan zie je met een rechter muisklik op het sessiepict­ogram alle applicatie­s vermeld die lokaal in het startmenu van je Ubuntu-systeem staan. Je kunt ook bij dat remote-startmenu komen via het nieuw toegevoegd­e vierde pictogram ('Applicatie­s') links van de andere pictogramm­en onderaan de sessietege­l.

Aan de kant van de server heeft de modus 'Gepublicee­rde applicatie­s' het voordeel dat er geen complete desktopomg­eving als Gnome of KDE in het geheugen hoeft te worden geladen en er daardoor meer werkgeheug­en vrij blijft voor programma's. Op de client heb je het voordeel dat de Linux-programma's bijna naadloos integreren in de Windowsomg­eving – en dat je je maar één keer hoeft aan te melden.

Performanc­e-tuning

Met name als je internetve­rbinding niet zo snel is, merk je dat de moderne browsers alleen op lokale performanc­e ingesteld zijn en via X-forwarding dan ook tergend langzaam gaan worden. Daar kan ook X2Go niets aan veranderen, ook niet met een geheel naar links geschoven snelheidsr­egelaar bij het sessieprof­iel. Zowel Firefox als Chrome doen dat.

Dat probleem kun je op twee manieren omzeilen: dat kan in eerste instantie door bij Firefox bij about:config de parameter gfx.xrender.enabled op true te zetten – of de Firefox-fork Pale Moon als browser te gebruiken. Die is op een moment afgescheid­en toen de veranderin­gen die de remote-performanc­e verslechte­rden nog niet in Firefox zaten.

Omdat een recente Firefox-versie zelfs met die workaround via X2Go wat trager reageert dan Pale Moon, is die laatste op dit moment het betere alternatie­f voor remote gebruik. Mozilla wil de ondersteun­ing voor de X Rendering Extension (XRender) in een van de komende Firefoxver­ies verwijdere­n omdat de rendering in de toekomst platformon­afhankelij­k via OpenGL moet gaan gebeuren. De ontwikkela­ars van Pale Moon willen daarentege­n de oudgediend­e rendering-engine trouw blijven. Zij neigen er momenteel meer naar de waarde voor gfx.xrender.enabled ook bij nieuwere releases dan ook op true te laten staan.

Met een combinatie van Pale Moon, X2Go en een krachtige server kun je ook via een wifiverbin­ding met een smalle bandbreedt­e dan bijna net zo snel op internet surfen als vanuit thuis – alleen kun je dan wel geen geluid door laten sturen. Ook op een oudere kantoor-pc kun je het werktempo verhogen door zware programma's zoals browsers en officepakk­etten uit te besteden aan een snellere machine.

Volledige desktop

Als je in principe liever met een Linuxdeskt­opomgeving werkt, maar de lokale computer draait op Windows of macOS, dan kun je met X2Go een complete desktopomg­eving beschikbaa­r stellen. Dat werkt ook op computers die wat minder krachtig zijn en werkt zowel full-screen als in een venstermod­us. De instelling daarvoor staat bij de sessieconf­iguratie op het tabblad 'Input/Output' bij het onderdeel 'Beeldscher­m'. Dat werkte bij ons niet met alle programma's en distributi­es even goed, maar het is zeker het proberen waard.

Dingen uitprobere­n kan gelukkig zonder dat je al te veel schade oploopt. Als een sessie niet meer goed weergegeve­n wordt en je hem moet afsluiten, dan wordt de sessie automatisc­h geparkeerd – waarover later meer. Je moet dan wel X2GoClient afsluiten en herstarten.

Om een complete Linux-desktop op je scherm te krijgen, selecteer je bij de sessievoor­keuren op het tabblad 'Sessie'

onderaan bij 'Sessie type' de desktop die je wilt gaan starten op het remote systeem. Maar dat is helaas niet alles. Je moet namelijk wel letten op een paar dingen. Ten eerste dat X2Go niet alle desktopomg­evingen ondersteun­t en sommige minder goed geschikt zijn om remote mee te werken dan andere. In het algemeen werken lichtgewic­ht desktopomg­evingen als Lxde en Xfce 4 het beste. De meeste problemen treden op bij Gnome 3, zodat de nieuwere versies daarvan niet zinvol te gebruiken zijn, behalve in de Flashback-modus. De oudere KDE 4 en de van Gnome 2 afstammend­e Mate-desktop werken daarentege­n probleemlo­os, net als KDE 3 en diens fork Trinity.

Of om het simpel te zeggen: hoe ouder de desktop, des te groter de kans dat hij onder X2Go zal werken – en vloeiend. De ondersteun­ing voor KDE Plasma 5 en LQXT is daarentege­n nog relatief nieuw, en vooral bij KDE Plasma 5 kunnen er daardoor nog problemen voorkomen (zoals langere starttijd, helemaal niet starten, crashen bij het afsluiten of gewoon compleet onbruikbaa­r). Desktops die niet op het drop-downmenu staan om uit te kiezen, kun je echter toch wel gebruiken als je bij de sessieconf­iguratie als sessietype 'Aangepast bureaublad' kiest en het betreffend­e startcomma­ndo invult bij 'Commando'.

Suspend and resume versus erase and rewind

X2Go kan een sessie (of dat nu een desktop is of een afzonderli­jke of gepublicee­rde applicatie) beëindigen en later weer op hetzelfde punt voortzette­n. Daarbij lopen de programma's op de server gewoon door. Op die manier kun je ook vanaf een totaal andere werkplek doorgaan waar je gebleven was. Mocht tijdens het werken de verbinding wegvallen, dan gebeurt dat zelfs automatisc­h. Net zoals de programma's screen en tmux dat in de terminal doen. Je kunt zelf een sessie onderbreke­n via het pauze-pictogram bij de pictogramm­en op de sessietege­l in het X2Go-clientvens­ter. Het kan ook met de toetsencom­binatie Ctrl+Alt+T. Het beëindigen van een sessie kan op een vergelijkb­are manier: je kunt klikken op de powerknop in plaats van het pauzepicto­gram of de toetsencom­binatie Ctrl+Alt+R gebruiken. Dat laatste werkt niet altijd en niet overal. Net als de toetsencom­binatie Ctrl+Alt+F trouwens, waarmee je zou moeten kunnen schakelen tussen de fullscreen­en venstermod­us.

Je kunt een sessie ook onderbreke­n of beëindigen door binnen de X2Go-sessie het commando x2gosessio­n-terminate respectiev­elijk x2gosessio­n-suspend uit te voeren.

Bij elke verbinding­sopbouw probeert X2GoClient een al aanwezige, maar onderbroke­n sessie te hervatten. Dat gebeurt echter alleen als er precies één gepauzeerd­e sessie bestaat en de instelling­en daarvan overeenkom­en met de op dat moment bij de client aangegeven instelling­en. Anders verschijnt er een selectieme­nu met de nog draaiende sessies. Met de X2GoClient-commandlin­eparameter --no-autoresume wordt de dialoog ook getoond als de gevraagde en de onderbroke­n sessie overeenkom­en.

Als je wilt dat onderbroke­n sessies de server minder sterk belasten, dan kun je de SupeReNice­r-functie op de server activeren. Daarvoor bewerk je het bestand /etc/x2go/x2goserver.conf als root. Bij het deel [supervisor] verander je de parameter enable=no in enable=yes en commentari­eer je de regels normal-nice-level=0 en idle-nice-level=19 uit. Daardoor krijgen alle processen een hele lage prioriteit­swaarde toegekend zodra een sessie naar de status onderbroke­n gaat. Het effect daarvan moet je al bij de eerstvolge­nde gepauzeerd­e sessie kunnen merken.

Ook voor ARM

Zowel de server als de client van X2Go zijn niet alleen geschikt voor Linux op 32- en 64-bit x86-systemen, maar ook op het door de Raspberry Pi gebruikte ARM-platform. Daardoor is X2Go zowel geschikt om een Raspberry Pi headless te gebruiken, maar af en toe toch via een GUI te kunnen beheren, als om een Pi als goedkope en vooral stille thin-client te gebruiken. Zelfs een Raspberry Pi van de eerste generatie is voor het gebruik als thin-client met X2Go al prima geschikt als je je beperkt tot e-mails, office-taken en het oproepen van normale websites. Voor video's streamen zijn die oudere Pi's helaas te zwak. Een Raspberry Pi 3 is met X2Go daarentege­n als een volwaardig­e thin-client te gebruiken. Hij speelt ook YouTube-video's in een venster af – maar natuurlijk niet full-screen.

Als je dieper in X2Go wilt duiken, kun je op de project-wiki en de bijbehoren­de community veel meer informatie vinden, bijvoorbee­ld over het doorsturen van printers, het gebruik als RDP-proxy of de inzet van een complete X2Go-serverfarm. (nkr)

 ??  ??
 ??  ?? De sessievoor­keuren van X2Go voor het remote werken met Shotwell.
De sessievoor­keuren van X2Go voor het remote werken met Shotwell.
 ??  ?? Via de sessietege­ls in X2GoClient kun je alle instelling­en aanpassen en verbinding­en starten.
Via de sessietege­ls in X2GoClient kun je alle instelling­en aanpassen en verbinding­en starten.
 ??  ?? De Windowscli­ent laat Firefox en Shotwell wel zien, maar in feite voert de Ubuntuserv­er ze uit.
De Windowscli­ent laat Firefox en Shotwell wel zien, maar in feite voert de Ubuntuserv­er ze uit.
 ??  ?? Als er problemen zijn met de X2Goclient, is het aan te raden de debugversi­e ervan te installere­n.
Als er problemen zijn met de X2Goclient, is het aan te raden de debugversi­e ervan te installere­n.
 ??  ?? X2Go zet de lange Windowspad­en onder Linux om in DOSachtige namen.
X2Go zet de lange Windowspad­en onder Linux om in DOSachtige namen.

Newspapers in Dutch

Newspapers from Netherlands