Misschien heb je ergens nog wel een oude laptop of tablet liggen die je niet meer gebruikt. De hardware mag dan wel te traag geworden zijn om recente software te draaien, met het beeldscherm is meestal niets mis. In deze workshop leggen we stap voor stap uit hoe je het scherm van zo’n oud apparaat als tweede scherm aansluit op je nieuwe PC. Zo krijg je gratis een extra scherm!
Filip Vervloesem
Uiteraard kun je een laptop- of tabletscherm niet zomaar met een HDMI-kabel aansluiten op jouw pc. Dergelijke apparaten hebben in het beste geval een HDMI-uitgang (om een extern scherm aan te sluiten), maar nooit een HDMI-ingang. Via een omweg kun je het ingebouwde scherm van een laptop of tablet echter wél aansturen vanaf jouw pc. Jammer genoeg is dat iets lastiger om op te zetten. Omdat het eigenlijk een soort ‘hack’ is, moet je namelijk via de commandline werken. Maar geen nood: we leggen alles stap voor stap uit, zodat het je ook zou moet lukken zonder enige ervaring met de commandline. We vinden het namelijk een mooie manier om je oude hardware een tweede leven te geven en we willen die graag delen met onze lezers!
Onze test
Voor deze workshop gebruiken we volgende testopstelling. Onze primaire computer is een desktop met Linux Mint 20 Cinnamon en een 24″ scherm met een resolutie van 1920×1200 pixels. Dat is de computer die we willen uitbreiden met een extra scherm. Daarvoor hebben we achtereenvolgens drie verschillende apparaten getest:
Informatie opzoeken
Eerst en vooral moet je de resolutie van het extra beeldscherm opzoeken. Het is niet voldoende om het aantal horizontale en verticale pixels te weten (zoals 1920×1080): je hebt nog een aantal extra technische gegevens nodig. Open daarvoor een terminalvenster op de laptop via System > Terminal en voer volgende opdracht in, gevolgd door Enter:
$ xrandr
Let op dat je het $-teken aan het begin niet hoeft in te voeren: dat is de zogenaamde opdrachtprompt. Daarmee duidt de terminal aan dat ‘ie klaar is om een opdracht van jou te ontvangen. xrandr toont heel wat regels uitvoer, maar de interessante informatie voor ons bevindt zich ergens bovenaan. Eerst staat er een lijn “xxx connected primary”, gevolgd door een regel met de resolutie in de eerste kolom en de verversingssnelheid in de tweede kolom. In de tweede kolom zie je “*+” staan, als aanduiding van de huidige beeldscherminstelling (zie afbeelding 1). In ons geval vinden we volgende informatie (hier ingekort ter verduidelijking):
Screen 0: minimum 320 x 200, current 1920 x 1080
eDP-1 connected primary 1920x1080+0+0 1920x1080 60.02*+
Het scherm in kwestie heeft dus een resolutie van 1920×1080 pixels en een verversingssnelheid van 60.02 (of afgerond 60) Hz. Die gegevens gebruik je als invoer voor het gtf-commando:
$ gtf 1920 1080 60
Gtf geeft dan bijvoorbeeld volgende uitvoer:
# 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
Kopieer die tekst naar jouw desktop, bijvoorbeeld via een e-mail of een gedeeld bestand.
Virtueel scherm
De uitvoer van gtf heb je nodig om op je desktop een virtueel scherm aan te maken. Open een terminal op de desktop en bekijk eerst de uitvoer van xrandr (hier wederom ingekort):
$ xrandr Screen 0: minimum 320 x 200, current 1920 x 1200 DVI-0 disconnected HDMI-0 connected 1920x1200+0+0 1920x1200 59.95*+ VGA-0 disconnected
Je ziet dat ons testsysteem beschikt over een HDMI-uitgang (met daarop de fysieke monitor) en daarnaast nog ongebruikte dvi- en vga-uitgangen. We zullen die uitgangen gebruiken om een virtueel scherm aan te maken. Op jouw systeem hebben de ongebruikte uitgangen mogelijk een andere naam. Als voorbeeld gebruiken we de DVI-0-uitgang voor het laptopscherm. Plak de uitvoer van gtf (zonder het woord “Modeline”) achter het commando “xrandr –newmode”. Bijvoorbeeld:
$ xrandr --newmode "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
En koppel die vervolgens aan het DVI-0-scherm:
$ xrandr --addmode DVI-0 1920x1080_60.00
Tot slot geef je aan waar het laptopscherm zich bevindt ten opzichte van het fysieke scherm (in dit voorbeeld aan de rechterkant) en welke resolutie je wilt gebruiken:
$ xrandr --output DVI-0 --mode 1920x1080_60.00 --right-of HDMI-0
Het beeldscherm flikkert heel even om de nieuwe beeldschermconfiguratie in te laden. Verder verandert er nog niets, want op de dvi-uitgang is geen scherm aangesloten. Krijg je weergavefouten op je primaire beeldscherm, zoals zwarte kaders? Ververs dan het scherm door de grafische omgeving even te verlaten en weer terug te keren via de sneltoets alt-ctrl-F1, gevolgd door alt-ctrl-F7.
Vnc-server
Maar let op: nu komt het slimme gedeelte van de ‘hack’! We gaan namelijk de inhoud van het DVI-0-scherm via vnc over het netwerk delen met een andere computer. Op de desktop installeer je eerst een vnc-server:
$ sudo apt install x11vnc
Controleer ook even het IP-adres van je desktop met volgend commando:
$ hostname -I
Vervolgens configureer je een wachtwoord om verbinding te maken met de vnc-server (anders kan iedereen in jouw netwerk meegluren naar je virtuele scherm!):
$ mkdir .vnc $ x11vnc -storepasswd <wachtwoord> .vnc/passwd
Vervang “<wachtwoord>” door een wachtwoord naar keuze. Tot slot start je de vnc-server en geef je aan dat je enkel het tweede (virtuele) scherm wilt delen. Daarvoor gebruik je de -clip-optie met het argument xinerama1 (het fysieke beeldscherm is xinerama0):
$ x11vnc -usepw -forever -clip xinerama1
De terminal is nu geblokkeerd door x11vnc. Je krijgt pas een opdrachtprompt te zien wanneer je x11vnc afsluit met de sneltoets ctrl-c.
Vnc-client
Op de laptop heb je enkel nog een vnc-client nodig om het virtuele scherm van je desktop te openen. Remmina is een gebruiksvriendelijke optie, al moet je mogelijk nog de vnc plug-in installeren. Die vind je in het pakket remmina-plugin-vnc. Na installatie start je Remmina via de Internet-categorie in het startmenu. Klik op het +’je linksboven om een nieuw verbindingsprofiel in te stellen. Kies een duidelijke naam en selecteer “VNC” als protocol. Vul het IP-adres van je desktop in bij “Server” en het gekozen wachtwoord bij “User password”. Bij “Color Depth” en “Quality” kies je de hoogste instellingen. Onder het Advanced-tabblad vink je volgende opties aan:
- Show remote cursor - Disable clipboard sync
Klik tot slot op “Save and Connect” om de verbinding te openen. Zie je de taakbalk van de laptop nog, gebruik dan de sneltoets rechter-ctrl-f om de vnc-client het volledige scherm te laten benutten. Let op: met de linker ctrl-toets werkt dat niet! Als alles goed gaat, toont de vnc-client nu de bureaubladachtergrond van jouw desktop. Je kunt gewoon vensters verslepen van het fysieke scherm naar het virtuele scherm en ze daar bijvoorbeeld maximaliseren. Zie je dezelfde inhoud als op je primaire scherm? Stop x11vnc dan met ctrl-c en start de server opnieuw op met het argument “xinerama0” bij de clip-optie.
Laatste aanpassingen
De laptop dient nu uitsluitend als vnc-viewer: het ingebouwde toetsenbord en de touchpad heb je niet nodig. Voor het laptop-besturingssysteem lijkt het dus alsof je inactief bent, waardoor het scherm na een tijdje uitvalt. Pas dus zeker de instellingen voor energiebeheer én voor de screensaver op de laptop aan:
– in Cinnamon open je Menu > Preferences > Power Management en kies je de optie “Never” voor “Turn off the screen when inactive for” in de kolom “On A/C power”. In Menu > Preferences > Screensaver kies je “Never” bij “Delay before starting the screensaver”.
– in Xfce open je Menu > Settings > Power Manager. In het System-tabblad schuif je de schuifbalk onder “Plugged in” helemaal naar links, zodat daar “Never” staat. In het Display-tabblad doe je hetzelfde voor de vier schuifbalken onder “Plugged in”. Is je laptop steeds verbonden met netvoeding, dan kan je als alternatief gewoon de optie “Display power management” uitschakelen. In Menu > Settings > Screensaver kies je bij “Mode” de optie “Disable Screen saver”.
Wil je makkelijker het tweede scherm configureren op je desktop? Plaats dan de drie xrandr-commando’s (die met –newmode, –addmode en –output) én het x11vnc-commando in een tekstbestand dat je bewaart met de extensie.sh (bijvoorbeeld laptop.sh). Vervolgens configureer je het scherm met volgend commando in een terminalvenster:
$ ./laptop.sh
Geeft de shell de foutmelding “Permission denied”, voor dan éénmaal volgend commando uit:
$ chmod +x laptop.sh
Beperkingen
Bij snelle wijzigingen zit er een licht merkbare vertraging op het beeldscherm van de laptop. Het virtuele scherm is dus niet meteen geschikt om video’s af te spelen. Maar waarschijnlijk wil je het extra scherm vooral gebruiken om bijvoorbeeld een oogje te houden op je e-mail, een chat-applicatie of om documenten te lezen naast je primaire scherm. Voor die toepassingen werkt de vnc-oplossing prima. We kwamen wel één klein weergavefoutje tegen tijdens onze test. Menu’s die je met de rechtermuisknop opent of uitklapmenu’s (zoals in instellingenvensters) gaf Cinnamon steeds weer op onze primaire monitor. Openden we zo’n menu in een venster op het laptopscherm, dan verscheen dat aan de rechterrand van het desktopscherm. Datzelfde probleem doet zich blijkbaar ook geregeld voor met een echte multimonitor-setup, dus het ligt niet per se aan onze setup.
Tablet
Met de kennis die je tot hiertoe hebt opgedaan, is het niet moeilijk meer om een tablet als extra scherm te configureren. Als voorbeeld vervangen we het laptopscherm door een Android-tablet ónder de primaire monitor. Het gtf-commando starten we ditmaal op onze desktop, omdat de tablet zelf geen Linux-terminal aanbiedt:
$ gtf 1280 800 60 $ xrandr --newmode "1280x800_60.00" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync $ xrandr --addmode DVI-0 1280x800_60.00 $ xrandr --output DVI-0 --mode 1280x800_60.00 --below HDMI-0 $ x11vnc -usepw -forever -clip xinerama1
Vervolgens installeer je de “VNC Viewer for Android” van “androidVNC team” uit de Play Store. Open nadien de app androidVNC, stel het IP-adres en het vnc-wachtwoord van jouw desktop in en kies “24-bit color” bij “Color Format”. Klik tot slot op de Connect-knop linksboven om de verbinding te openen. androidVNC gebruikt overigens meteen het volledige scherm voor de vnc-sessie.
Met VNC Viewer for Android gebruik je een tablet als extra monitor!
Chromebook
Ook een Chromebook met ChromeOS kan als extra scherm dienen voor jouw Linux-pc. Zoek eerst de schermresolutie op via Instellingen > Apparaat > Schermen. Controleer of de schermgrootte op 100% staat ingesteld bij “Ingebouwd scherm” en noteer de vermelde resolutie. In ons voorbeeld is dat 1366×768. De volgende stappen lijken erg op die in de vorige paragraaf. Alleen de resolutie en de positie van het scherm verschillen:
$ gtf 1366 768 60 $ xrandr --newmode "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync $ xrandr --addmode DVI-0 1368x768_60.00 $ xrandr --output DVI-0 --mode 1368x768_60.00 --left-of HDMI-0 $ x11vnc -usepw -forever -clip xinerama1
In principe kun je in ChromeOS geen extra applicaties (zoals een vnc-viewer) installeren. Gelukkig bevat ChromeOS sinds een tijdje ondersteuning voor de Play Store. De eenvoudigste oplossing is dus om de hierboven vermelde Android-app VNC Viewer for Android ook op je Chromebook te installeren. Je krijgt dan mogelijk een waarschuwing te zien dat de app ontwikkeld is voor oudere Android-versies. Maximaliseer het venster vóórdat je de verbinding opzet, want de Android-app moet worden herstart zodra je de venstergrootte wijzigt. Gebruik tot slot de fullscreen-sneltoets op je Chromebook (op de plaats van F4) om het volledige scherm te benutten. Vergeet niet om ook hier de instellingen voor energiebeheer aan te passen.
Conclusie
In deze workshop hebben we uitgelegd hoe je een oude laptop, Chromebook of tablet kan gebruiken als tweede monitor voor je Linux-computer. Die setup is niet feilloos: contextmenu’s durven wel eens op het verkeerde scherm te verschijnen en video’s afspelen lukt niet vloeiend op het extra scherm. Toch is het een leuke manier om de mogelijkheden van je computer gratis uit te breiden. Een extra scherm is handig om bijvoorbeeld te chatten, te mailen of websites te raadplegen tijdens je werk. Voor die toepassingen volstaat de ‘hack’ met een vnc-server en client prima!