Dos monitores (dual-head) con xrandr

Esta receta trata algunas prestaciones interesantes que ofrece el driver intel (para tarjetas nuevas) por medio de la utilidad xrandr. Lo realmente interesante es que puedes activar y desactivar la salida externa y cambiar la resolución de ambos monitores sin tener que reiniciar el servidor X.

Importante

La web unidadlocal.com ha plagiado intencionadamente este artículo (entre otros). Les hemos avisado en varias ocasiones mediante comentarios en los sus post copiados. El admin del sitio ha borrado dichos comentarios sin responderlos. Puedes ver más información sobre estos hechos en http://unidadlocal.com/ nos plagia (y quizá a tí también).

Todo lo que cuento en esta receta sólo lo he probado con Debian en un VAIO VGN-SZ4XN utilizando la tarjeta Intel. Por supuesto, eso no excluye que pueda funcionar en otras máquinas con otras tarjetas de vídeo u otras distros GNU.

Ingredientes

  • Debian GNU/Linux
  • xrandr >= 1.2

Información

Lo primero es ver qué tienes:

$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 1024
VGA 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  
   1152x768       54.8  
   1024x768       85.0     75.0     70.1     60.0  
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
TV disconnected (normal left inverted right)

Y si enchufas un monitor a la salida VGA (sin reiniciar las X ni nada):

$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 2560 x 1024
VGA connected (normal left inverted right)
   1280x960       60.0  
   1280x800       60.0  
   1152x768       54.8  
   800x600        56.2  
   640x480        59.9  
LVDS connected 1280x800+0+0 (normal left inverted right) 0mm x 0mm
   1280x800       59.9*+   60.0  
   1280x768       60.0  
   1152x768       54.8  
   1024x768       85.0     75.0     70.1     60.0  
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
TV disconnected (normal left inverted right)

Pues éstas son las resoluciones y frecuencias permitidas por el monitor del portátil (LVDS) y por el monitor externo que tengo conectado durante esta prueba (VGA).

Activando/desactivando la salida VGA

Lo siguiente hace que el monitor VGA muestre lo mismo que el LVDS, es decir, modo “clone”. Tan fácil como:

$ xrandr --output VGA --mode 1280x800

Y para desactivarla:

$ xrandr --output VGA --off

No es necesario que los dos monitores tengan la misma resolución, puedes poner la que quieras. El tamaño del escritorio se ajusta automáticamente de modo que el monitor con mayor resolución muestra un área adicional no visible en el monitor con menos resolución. Por ejemplo puedes hacer:

$ xrandr --output LVDS --mode 1280x800 --output VGA --mode 800x600

Escritorio extendido

También es posible definir un escritorio conjunto para los dos monitores (en lugar de usar “clone”). Para eso tienes que definir una posición, bien con pos o bien con uno de --left-of, right-of, above o below. Por ejemplo, suponiendo que ya tienes activada la VGA y fijada la resolución:

$ xrandr --output VGA --left-of LVDS

Aunque también lo puedes hacer todo en el mismo comando:

$ xrandr --output LVDS --mode 1280x800 --output VGA --mode 1024x768 --left-of LVDS

Puede que al intentar crear un escritorio grande te devuelva este error:

xrandr: screen cannot be larger than 2560x1024 (desired size 1280x1600)

Esto lo puedes arreglar definiendo un área suficientemente grande para el “Screen” (la primera línea que aparece al ejecutar xrandr). Para eso, modifica tu fichero /etc/X11/xorg.conf y añade una línea Virtual en Screen/Display, por ejemplo:

Section "Screen"
        Identifier      "Default Screen"
        Device          "Intel"
        Monitor         "Monitor"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Modes           "1280×800" "1024×768" "800×600" "640×480"
                Virtual         2560 1600
        EndSubSection
EndSection

«La zona muerta»

En el modo de «escritorio extendido» también puedes usar resoluciones diferentes para cada monitor, pero aquí me he encontrado con un problema. En el monitor de menor resolución hay una «zona muerta» no visible, pero que puede contener ventanas. Corresponde a la diferencia entre ambas resoluciones. Algo como:

+--------------+--------------+
|              |              |
|              |    800x600   |
|   1024x768   |              |
|              +--------------+
|              |  ZONA MUERTA
+--------------+

En otros drivers que dan una funcionalidad similar, como TwinView este problema está resuelto. Si sabes cómo solucionarlo con xrandr, por favor, deja comentario.

Activando resoluciones

A veces te encuentras con monitores o proyectores que disponen de resoluciones que por varias razones no aparecen cuando se consultan sus datos EDID. xrand no permite cambiar a resoluciones no reconocidas, pero afortunadamente se pueden añadir. Por ejemplo, el proyector Sony VPL-CS5 devuelve esto:

$ xrandr
[...]
VGA connected (normal left inverted right x axis y axis)
   800x600        56.2
   640x480        60.0
[...]

Pero puedes añadir el maravilloso modo 1024×768 con:

$ xrandr --addmode VGA 1024x768

y verás que:

[...]
VGA connected (normal left inverted right x axis y axis)
   800x600        56.2  
   640x480        60.0  
   1024x768       85.0  
[...]

Ahora puedes cambiar a ese nuevo modo sin ningún problema.

Y añadiendo

Si al tratar de hacer lo que explica la sección anterior obtienes un error:

xrandr: cannot find mode "1024x768"

tendrás que añadir dicho modo antes de activarlo. Y para eso necesitas la resolución y la descripción del “ModeLine”, que puedes obtener con aplicaciones como gft y cvt (que pertenecen al paquete xserver-xorg-core).

$ gtf 1024 768 85
  # 1024x768 @ 85.00 Hz (GTF) hsync: 68.60 kHz; pclk: 94.39 MHz
  Modeline "1024x768_85.00"  94.39  1024 1088 1200 1376  768 769 772 807  -HSync +Vsync

Ahora puedes añadir y activar el modo:

$ xrandr --newmode 1024x768  94.39  1024 1088 1200 1376  768 769 772 807  -HSync +Vsync
$ xrandr --addmode VGA 1024x768

Referencias

  • man xrandr
  • Paco Moya

[EDITADO]

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Fallo al añadir virtual al xorg.conf

Excelente manual pero tengo un problema!!
Lo primero añado un nuevo mode al monitor externo tal como has indicado y lo cargo sin problema.
Luego intento hacer el escritorio extendido y no puedo... me sale el error que comentas: xrandr: screen cannot be larger than...

Sigo las instrucciones y añado en el xorg.conf la fila Virtual y no consigo nada y cuando reinicio el ordenador no me abre la X, se queda la pantalla en negro. PAra solucionarlo entro en modo consola y restituyo el xorg.conf y me vuelve a funcionar.

Lo he probado con Debian Lenny y ahora con Squeeze y en ninguno de los dos lo he conseguido.

Sabes que puede ser. Gracias de antemano.

david.villa's picture

Debes poner un tamaño lo

Debes poner un tamaño lo suficientemente grande como para que quepan los dos monitores, es decir, si son dos monitores de 1600x1050 y están colocados uno al lado del otro la resolución virtual tiene que ser, como mínimo, de 3200x1050.

De todos modos, lo primero que tienes que hacer el ver qué problema tienes. Mira tu @/var/log//Xorg.0.log@ cuando se queda en negro a ver si puedes encontrar alguna pista de lo que está pasando.

Saludos

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Gracias David, no he

Gracias David, no he entendido muy bien lo que dice mi /var/log/Xorg.0.log pero indagando por la web he visto que mi tarjeta intel no admite un ancho de más de 2024 píxeles, Sad.
Por lo menos con el xrandr he conseguido que debian seleccione la resolución del monitor externo en 1680x1050, ya que no la detecta de forma automática.

Manual para Dummies

Exelente manual!!! felicitaciones!!!

Cambiar el monitor principal

Hola Muchas gracias por este artículo, la verdad casi me saco un ojo intentando configurar los monitores extendidos en ubuntu................

Ahora necesito saber como cambio el monitor principal,, es decir los menus las barras de opciones y todo me salen por defecto en unmonitor pero necesito q salgan en el otro q puedo hacer=====?????????????????
Muchas gracias de Antemano

david.villa's picture

Pues pinchas con el ratón

Pues pinchas con el ratón en alguna parte del panel dónde no haya applets y la arrastras al otro monitor.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Grandísimo artículo, pero con dudas...

Hola David!

Antes de nada agradecerte este pedazo de artículo que creo que va a resolver mis problemas para mudarme para siempre a Linux.

Mi problema está descrito en esta dirección y muy relacionado con lo que pones:

http://foro.noticias3d.com/vbulletin/showthread.php?t=264191

El tema es que abro el xorg.conf y me aparece todo esto que no se parece mucho a lo que pones tú:

Section "Device"
Identifier "Configured Video Device"
EndSection

Section "Monitor"
Identifier "Configured Monitor"
EndSection

Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
EndSection

Decir que según synaptic tengo instalado todo lo que comentas, el xrandr y xserver-xorg-video-intel 2.0.0 (pero no estoy seguro de si está en uso!)

Si me pudieras echar una mano...

GRACIAS!!

david.villa's picture

El trozo de xorg.conf que he

El trozo de xorg.conf que he puesto ahí solo tiene relación con el escritorio extendido. Pero tu problema más básico y tiene poco que ver. No puedes lograr la resolución deseada en el monitor externo. Para eso tienes que comprobar algunas cosas primero:

  1. comprueba que ese monitor realmente soporta la resolución 1600×1050
  2. comprueba que la salida VGA de tu tarjeta gráfica puede dar esa resolución
  3. ejecuta xrand sin argumentos y con el monitor conectado para listar los modos que permite
  4. si no aparece, ejecuta xrand --new y xrand --add como indica la receta
  5. nos cuentas los resultados

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

gracias

Ante todo gracias por responder David,

En relación a tus puntos planteados:

1º El monitor es de 22", por tanto sí soporta 1680x1050, de hecho es su resolución adecuada.

2º La tarjeta puede dar esa resolución, de hecho es la que tengo en Windows

3º 4º y 5º Resultados del xrandr:

Screen 0: minimum 320 x 200, current 1360 x 768, maximum 2640 x 800
VGA connected 1360x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1360x768 59.8*
1024x768 60.0
800x600 60.3
640x480 59.9
LVDS connected (normal left inverted right x axis y axis)
1280x800 59.9 +
1024x768 60.0
800x600 60.3
640x480 59.9
TV disconnected (normal left inverted right x axis y axis)

Mas datos...

Hola de nuevo David. No sé si me podrás ayudar, pero te pongo un enlace donde detallo más mi problema:

http://www.ubuntu-es.org/index.php?q=node/103414

Gracias y saludos!

Una masa !

Excelente encontrarse con cosas como éstas. La verdad, se me dibuja una sonrisa en la cara cuando veo artículos como éste, de la satisfacción que me genera. SOS GROSO, SABELO! Eye-wink Saludos desde AR

detalle del panel de gnome

Hola, el artículo está muy interesante y doy mis sinceras felicitaciones al autor… Sin su ayuda no hubiera podido lograr la configuración satisfactoria de mi dual head. Ahora que ya he logrado configurar el dual head he observado lo siguiente: en el desktop de la derecha donde tengo la barra de menú de gnome (gnome-panel) todo se mueve perfectamente, pero en el desktop de la izquierda donde NO hay gnome-panel queda como una especie de marca que dejó el gnome panel y hasta ahí NO se extiende el wall paper y cuando realizo un drag de una ventana sobre esa área la ventana va dejando una marca del draging. Es como si en esa área hubiera una ventana frezed que no respondiera correctamente al administrador de ventanas. Si me indican como subir una imagen puedo enviarles un screenshoot de como se ve la pantalla. Gracias

Efectos Visuales

Tienes que desactivar los efectos visuales

david.villa's picture

No hace falta que subas el

pantallazo, describes perfectamente cuál es tu problema, pero no sé a qué puede deberse. He probado tanto el escritorio extendido como clonado en varias máquinas tanto sobremesa como portátiles, con tarjetas Intel, ATI y nVidia (de varios modelos) y nunca he visto ese problema. Dinos que distro usas, versión de Linux, de XOrg, tarjeta de vídeo, driver, etc

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Millones de gracias

Te agradezco un millón este post
hace tiempo que buscaba una forma para human-beings de como hacer esto
ahora puedo trabajar sin problemas, mientras tengo a mi hija viendo dibujos animados en el monitor de al lado.

Eso si, tengo el mismo problema con el panel de gnome que nuestro cófrade de más arriba.
Estoy usando
Ubuntu 8.04.1, con todos los upgrades (xorg 1:7.3+10ubuntu10.2, en una Intel GM965 con el driver xserver-xorg-video-intel version 1:7.3+10ubuntu10.2)
después de arrastrar las barras de gnome al monitor principal no hay problemas, pero al iniciar xrandr aparecen al azar en uno u otro monitor.

saludos cordiales desde Chile!

Gracias. Tu artículo me ha

Gracias. Tu artículo me ha salvado la vida. Con Fedora 9, gráfica Radeon HD2600 y driver radeon libre funciona perfectamente.

Gracias!

No sabes de cuanta utilidad me ha sido este artículo publicado por tí, ya que estoy usando UBUNTU 7.10 y la verdad no hay manera de hacer funcionar bien 2 o más monitores con la herramienta de configuración incluída, en cambio usando xrandr me ha funcionado todo de maravilla.

Lk2's picture

Sobre xrandr y la salida de TV

No se si seré yo, mi tarjeta gráfica o que pero no soy capaz de poner la salida TV con las opciones --left-of y similares...

diego's picture

grandr

Grandr es una interfaz GTK para usar xrandr de un modo sencillo si olvidaste las opciones. Permite hacer todo lo que dice esta receta y alguna opción más (rotación, modo auto...).

Por supuesto, es paquete debian Sticking out tongue

david.villa's picture

applet

También hay un applet para GNOME que se llama gnome-randr-applet, aunque no tiene toda la flexibilidad de xrandr.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.