Control d’un segon, tercer… ordenador amb un únic ratolí/teclat mitjançant VNC

La finalitat d’este text es compartir l’experiència de montar un substitut virtual d’un switch de teclat/ratolí utilitzant el protocol VNC en una estació de treball basada en Linux i formada (per simplificar) per dos ordinadors amb funcions específiques i amb un teclat i ratolí cadascún d’ells (o que estigueren controlats per l’esmenat switch).

Per concretar, supossarem el següent escenari format per un ordinador i9 amb dos monitors en pantalles esteses i amb el seu teclat i ratolí, i un Core2Duo també amb el seu teclat i ratolí connectat a un tercer monitor. La idea és substituïr el control del segon ordinador pel mateix teclat i ratolí que controla el primer ordinador.

Al segon ordinador (el que llevarem el ratolí/teclat) simplement li automatitzarem l’arrancada perquè entre al conter d’ús i inicie en arrancar l’x11vnc -ncache 10 per tal de fer de servidor complet de VNC de la consola real. Altres opcions a afegir com “-many” són desitjables per si tanquem el client per error (que no sols tolere una única primera connexió).

Al primer ordenador (el que controlarà), la cosa és mes delicada. Caldrà esbrinar quines pantalles són les que estan en ús, i quines lliures. Per açò utilitzarem l’xrandr. En el meu cas, obtinc:

Screen 0: minimum 320 x 200, current 4480 x 1080, maximum 16384 x 16384
DP-1 connected primary 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
[...]
HDMI-2 connected 1920x1080+1280+0 (normal left inverted right x axis y axis) 476mm x 268mm
 1920x1080 60.00*+ 50.00 59.94 
 1920x1080i 60.00 50.00 59.94 
 1680x1050 59.88 
 1280x1024 75.02 60.02 
 1440x900 59.90 
 1280x960 60.00 
 1152x864 75.00 
 1280x720 60.00 50.00 59.94 
 1440x576 50.00 
 1024x768 75.03 70.07 60.00 
 1440x480 60.00 59.94 
[...]
HDMI-4 disconnected (normal left inverted right x axis y axis)

HDMI-5 disconnected (normal left inverted right x axis y axis)

La configuració en l’estació objectiu es doncs:

És a dir, que quan acaba el monitor BenQ, comença l’altre. El que farem serà, crear un tercer monitor virtual a la dreta del darrer monitor (Ancor) i sobre este darrer monitor fantasma fer caure el client de VNC apuntant al servidor de l’ordinador 1.

Per açò creem l’script següent:

xrandr --addmode HDMI-3 1280x720
xrandr --output HDMI-3 --mode 1280x720 --right-of HDMI-2
vncviewer 192.168.1.124 -geometry 1280x720+3000+0

On només cal substituïr la IP del servidor (ordinador 1) per la vostra, i ajustar les geometries dels monitors i posició relativa a les vostres necessitats. Amb açò, sols amb portar el punter del ratolí a la dreta del darrer monitor real, apareixerà i prendrà el control del segon ordinador, junt amb el teclat. Així doncs, només cal remarcar que “3000” fa referència a la darrera posició en els monitors reals. Els altres paràmetres (geometria de la estació objectiu, posició dreta-esquerra del monitor associat,…) són fàcilment alterables d’acord a les vostres necessitats.

D’esta manera eixa tercera pantalla fantasma en realitat serà un monitor físic, el del segon ordinador.

NOTES:

  • Noteu que l’aplicació “xev” ens pot ser útil per saber la posició on situar el monitor fantasma en l’ordinador 1.
  • Noteu que de la mateixa manera que podem fer este hack per a minimitzar l’ús de perifèrics en estacions duals de treball, es pot estendre a estacions amb més ordinadors, ja que queden dos monitors lliures que són susceptibles de ser assignats a ser pantalles virtuals.
  • Noteu que d’una banda el protocol VNC en realitat no s’utilitza per a transmetre vídeo, amb la qual cosa es pot millorar la configuració baixant la qualitat o tallant-la per  d’augmentar el rendiment a l’hora de no saturar l’ampli de banda de la xarxa, i d’altra banda que el protocol VNC no és l’únic amb què es pot implementar esta experiència: rdesktop, etc…
  • Noteu que tampoc costa res reacoblar els comandaments esmenats per fer l’acció associada a l’escenari invers: un únic ordinador amb dues eixides físiques de vídeo, pero que es vol tindre una tercera o quarta. En este cas, la cosa és molt més simple, ja que només es tracta de configurar els monitors virtuals en les zones de posició absoluta de pantalla consecutives i fer córrer l’x11vnc ahi, de forma que mitjançant qualsevol tablet, mòbil, … faça de pantalla física de la pantalla virtual creada.
  • Noteu que a banda que s’hi pot afegir més escenaris, estos poden centrar-se altres contexts ja que qualsevol hardware amb un servidor VNC es pot controlar amb l’explicat en este artícle. Per exemple, una raspberry pi connectada a un monitor (i així ens estalviem trastos com el seu teclat i ratolí), o des del punt de vista retroinformàtic un Commodore Amiga amb el seu monitor amb el servidor de VNC, etc.