Imprimir

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.

    Multi-monitor grandr

  • GNOME-randr-applet (paquete gnome-randr-applet): applet para GNOME, frontal gráfico de xrandr.

    Multi-monitor GNOME-randr-applet

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