Multi-monitor con RandR en Linux
RandR (Resize and Rotate) es una extensión del X Window System que va a reemplazar a Xinerama (cuyo desarrollo ya se ha detenido), para manejar opciones multi-monitor, ya que dispone de detección automática de dispositivos y permite configurar dinámicamente las características de los monitores, como posición relativa, resolución, rotación, tamaño, modo clone (todos los monitores muestran lo mismo) o escritorio extendido (los monitores se combinan en un escritorio más grande), etc.
Eso sí, sólo podremos utilizar RandR si los drivers de nuestra tarjeta gráfica lo soportan. En caso contrario, recurriremos a Xinerama.
La herramienta para la línea de comandos es xrandr, que sin argumentos nos mostrará qué tenemos (o mejor, qué detecta). Veremos las salidas de nuestra tarjeta gráfica y los monitores conectados, con las resoluciones y frecuencias permitidas:
# xrandr Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 1024 VGA disconnected (normal left inverted right) DVI disconnected (normal left inverted right) LVDS connected 1280x800+0+0 (normal left inverted right) 0mm x 0mm 1280x800 59.9*+ 60.0 1280x768 60.0 1024x768 85.0 75.0 70.1 60.0 800x600 85.1 72.2 75.0 60.3 56.2 640x400 85.1 TV disconnected (normal left inverted right)
Si conectamos un monitor a la salida VGA lo detectará automáticamente, sin reiniciar las X:
# xrandr Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 1024 VGA connected (normal left inverted right) 1280x960 60.0 800x600 56.2 640x480 59 DVI disconnected (normal left inverted right) LVDS connected 1280x800+0+0 (normal left inverted right) 0mm x 0mm 1280x800 59.9*+ 60.0 1280x768 60.0 1024x768 85.0 75.0 70.1 60.0 800x600 85.1 72.2 75.0 60.3 56.2 640x400 85.1 TV disconnected (normal left inverted right)
Para que el monitor VGA muestre lo mismo que el LVDS, es decir, modo clone:
# xrandr --output VGA --mode 1280×800
Para definir un escritorio extendido del tamaño de los dos monitores (en lugar de usar clone) basta con definir la posición relativa de un monitor, con uno de --left-of, --right-of, --above o --below. Por ejemplo, el VGA a la izquierda del LVDS:
# xrandr --output VGA --left-of LVDS
El tamaño máximo del escritorio extendido figura en la primera línea que aparece al ejecutar xrandr:
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 1024
Vemos que es 2560 x 1024. Si pretendemos superar ese límite nos dará el error:
xrandr: screen cannot be larger than 2560×1024 (desired size 1280×1600)
Para definir un escritorio extendido mayor sí tenemos que editar /etc/X11/xorg.conf, sección Screen, opción Virtual:
Section "Screen" Identifier "Default Screen" Device "nVidia Corporation NV44A [GeForce 6200]" DefaultDepth 24 SubSection "Display" Modes "1280x800" "1024x768" "800x600" Virtual 2560 1600 EndSubSection EndSection
Podemos cambiar la resolución de un monitor, por ejemplo, el LVDS:
# xrandr --output LVDS --mode 1024x768
Para desactivar un monitor, por ejemplo, el LVDS:
# xrandr --output LVDS --off
Existen diversos frontales gráficos para el comando xrandr que nos facilitan el uso de RandR:
- grandr (paquete grandr): frontal gráfico para xrandr que utiliza las librerías GTK.
- GNOME-randr-applet (paquete gnome-randr-applet): applet para GNOME, frontal gráfico de xrandr.
RandR es adecuado para configurar dinámicamente un sistema multi-monitor, pero si no queremos tener que ejecutarlo cada vez que arranquemos las X tendremos que editar el archivo de configuración de las X /etc/X11/xorg.conf y configurar RandR estáticamente.
Para ello hay que añadir una sección Monitor para cada salida y especificar estos monitores en la sección Device. Además, añadiremos la opción Virtual en la sección Screen especificando el tamaño máximo del escritorio extendido. Una vez hechas las modificaciones nuestro /etc/X11/xorg.conf será similar a esto:
Section "Device" Identifier "nVidia Corporation NV44A [GeForce 6200]" Driver "nv" BusID "PCI:1:0:0" Option "Monitor-LVDS" "AsusMM19SE" Option "Monitor-VGA" "Philips 107E5" EndSection Section "Monitor" Identifier "AsusMM19SE" Option "DPMS" HorizSync 28-64 VertRefresh 43-60 EndSection Section "Monitor" Identifier "Philips 107E5" Option "DPMS" HorizSync 30-60 VertRefresh 43-60 Option "RightOf" "AsusMM19SE" EndSection Section "Screen" Identifier "Default Screen" Device "nVidia Corporation NV44A [GeForce 6200]" DefaultDepth 24 SubSection "Display" Modes "1280x960" Virtual "2560 1600" EndSubSection EndSection Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection
Reiniciamos las X...
# /etc/init.d/gdm restart
... Y listo, gracias a RandR obtendremos un precioso escritorio horizontal que ocupa los dos monitores.
Deja un comentario