Dos monitores: Twinview con NVidia en ArchLinux
Publicado el 21 de febrero de 2012Hace un tiempo adquirí un segundo monitor. Tengo una placa de video Nvidia GeForce GT 430. Esta placa tiene una salida Dual Link DVI-I (así como también Dual Link HDMI), lo que permite conectar simultáneamente dos monitoresa la placa. También podemos conectar un monitor a la salida DVI, y otro a la salida VGA.
Al momento de conectar los dos monitores, llegó el momento de configurarlos. Siempre que se quiere configurar algo nuevo en ArchLinux, el mejor lugar para empezar es su wiki. En lo que respecta a múltiples monitores nos dice que tenemos que configurar el archivo:
/etc/X11/xorg.conf.d/10-monitor.conf
No se preocupen si no tienen este archivo creado, pueden hacerlo manualmente y funciona. Ahí hay que agregar por cada monitor una entrada Monitor, Device y Screen Section y la sección ServerLayout que los gestiona.
También hay que saber que Nvidia soporta dos modos para múltiples monitores: Xinerama y Twinview. En primer lugar usé Xinerama, pero esto tiene una desventaja. El driver de Nvidia no soporta la la extensión Composite con Xinerama activado. Composite es lo que usan Compiz, Kwin y otros manejadores de ventana para hacer los efectos que tanto nos gustan. Además hay que decir que el rendimiento del manejador de ventanas es mayor con Composite activado.
Visto esto, intenté usar Twinview. Al principio tenía un problema: cada pantalla trabataba el entorno de escritorio de manera independiente. Esto quiere decir que no podía mover ventanas de un monitor a otro, y se sentía como dos ambientes diferentes. Si ejecutaba una aplicación a la derecha, no podía moverla a la izquierda, etc.
Toqueteando un poco las configuraciones encontré que sí estaba soportado esto de compartir ventanas entre dos monitores. Básicamente tenemos dos “escritorios” pero podemos pasar ventanas de uno a otro. En verdad cada escritorio tiene una representación en cada pantalla. Así también, cada uno tiene sus paneles y fondo de escritorio independiente.
En mi caso agregué un panel a cada uno. También agregué un gestor de tareas y lo configuré para que solo muestre aplicaciones de ese escritorio y de esa pantalla. Les dejo una captura de pantalla de cómo se ven los dos monitores. El de la izquierda tiene una resolución de 1440×900 y el de la derecha 1366×768:
Juegos a pantalla completa con dos monitores
Hasta acá todo venía bien de bien, pero surgió un problema a la hora de jugar. Muchos juegos agarran toda la pantalla para el modo de pantalla completa. Esto lo hace bastante incómodo, porque tenemos un desfasaje de unos centímetros en el medio de la pantalla, en la separación física de los dos monitores.
La solución que encontré tras investigar un poco son los Metamodes:
Los MetaModos son “contenedores” que guardan información sobre qué modo debería ser usado en cada dispositivo en cualquier momento dado. Incluso si solo una pantalla está en uso, el driver de X NVIDIA siempre usa un Metamodo para encapsular la información del modo por dispositivo de pantalla, para que pueda soportar dinámicamente la habilitación de TwinView.
En la sintaxis de MetaModos, los modos están separados por comas, y varios MetaModos se separan por punto y coma. Por ejemplo:
nombre modo 0, nombre modo 1; nombre modo 2, nombre modo 3;
Poner NULL en uno de los MetaModos hace que al entrar en esa resolución en una de las pantallas, la otra se apague, quedando solamente esa activa. Como quería jugar los juegos a pantalla completa en mi monitor de 1440×900, escribí lo siguiente:
Option "MetaModes" "1440x900,1366x768; 1440x900,NULL" |
Con las teclas Ctrl Alt +
, cambiamos de un meta modo a otro. De todas formas, algunos juegos intentan usar la resolución del metamodo y la placa automáticamente apaga el monitor que sobra:
Dejo la configuración de mi archivo 10-monitor.conf en /etc/X11/xorg.conf.d como referencia:
Section "ServerLayout" Identifier "DualScreen" Screen 0 "Screen0" Screen 1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0 # Option "Xinerama" "1" #To move windows between screens Option "TwinView" "1" EndSection Section "Monitor" Identifier "Monitor0" Option "Enable" "true" EndSection Section "Monitor" Identifier "Monitor1" Option "Enable" "true" EndSection Section "Device" Identifier "Device0" Driver "nvidia" Screen 0 Option "MetaModes" "1440x900,1366x768; 1440x900,NULL" EndSection Section "Device" Identifier "Device1" Driver "nvidia" Screen 1 EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "TwinView" "1" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" DefaultDepth 24 Option "TwinView" "1" SubSection "Display" Depth 24 EndSubSection EndSection |
rodolfo alejandro 21 febrero. 2012 - 12:05
muy buen tuto para tomar nota en un futuro 😛 por cierto de paso reviso ese juego jeje shank xD
Fernando 21 febrero. 2012 - 15:08
Shank fue parte del Humble Indie Bundle 4, el mejor bundle hasta el momento 🙂
¡Muy recomendado!
Maximiliano Guzman 21 febrero. 2012 - 12:25
Muy bueno el post. Tocará probar Arch.
Fernando 21 febrero. 2012 - 15:18
¡Gracias! Comentame después cómo te fue con Arch. La wiki está muy completa y encontrás TODO como para dejar el sistema a punto ahí.
¡Suerte!
Juanma 22 febrero. 2012 - 11:30
Está bien tenerlo como referencia, muchas gracias.
Es una de las cosas que me acaba fastidiando de linux: para temas de “desarrollo” está muy bien y es fácil instalar lenguajes/ides/bases de datos/servidores, etc., pero luego para tareas que deberían ser sencillas hay que pegarse un montón.
Fernando 22 febrero. 2012 - 11:38
A veces resulta fastidioso, pero la culpa es de los fabricantes que no toman en cuenta o dejan relegada la compatibilidad de sus componentes para GNU/Linux.
Esta tarea en particular, seguramente sea sencilla en Ubuntu y otras distros con alguna GUI. Pero así se aprende en el proceso, que en distros como Arch, creo que es parte del objetivo 🙂
¡Saludos!
pituxmat 19 marzo. 2012 - 22:18
Excelente tutorial
Solamente que para cambiar los metamodes tuve que hacer uso de xrandr
Para cambiar entre los dos modos “0” y “1”, basta con ejecutar en una consola:
xrandr -s 0 //para iniciar el primer modo
xrandr -s 1 //para iniciar el segundo modo
Saludos
Israel 11 diciembre. 2013 - 23:58
Hola, tengo una Nvidia GeForce GTX 550 Ti y acabo de instalar Manjaro, pero al conectar los dos monitores no puedo configurar el monitor extra para que esté a la izquierda y mi espacio físico para los monitores no me permite tenerlo a la derecha del principal.
Es decir, aunque físicamente el monitor extra esté a mi izquierda, para levar el ratón a el tengo que pasar el ratón por la parte derecha de mi monitor principal.
A que se debe y como lo puedo configurar para que me lo reconozca del lado izquierdo del principal?
Fernando 12 diciembre. 2013 - 00:14
Si usas esta configuración, vas a ver que en la sección “Server Layout” hay un código que indica cuál va a la derecha de cual:
De ahí se le puede setear el orden en que ves la imagen.
ALBERTO 26 marzo. 2023 - 05:26
Hola. Tengo i3+arch linux. Estoy intentando fusionar pantallas para crear varios escritorios o espacios. La cuestion es que el segundo monitor se comporta como el primero y no puedo crear varios espacios. xrandr solo me reconoce uno. Uso envidia geforce rtx 2070 super. Gracias, un saludo.