3 de octubre de 2011

Dos monitores con ATI bajo Debian GNU/Linux

Una de las cosas que esperamos hacer cuando conectamos dos monitores a una PC con video de  salida dual es tener un solo y grande escritorio. Con las placas ATI eso se llama Xinerama. ¿Pero que pasa con los efectos de AWN y de los screenlets que se ven mal? Bueno, he encontrado que Xinerama no es compatible con composite, por lo tanto, AWN y los Screenlets no se verán bien o mejor dicho, no se verán las transparencias.
Para solucionar ésto hay dos opciones: la primera es no utilizar Xinerama, sino configurar Xorg para que en lugar de tener "dos cabezas" tenga solamente una grande. La segunda opción es no utilizar los efectos de escritorio y habilitar Xinerama.
Antes de explicar algo más, tengo que aclarar que Xinerama está disponible con el driver privativo y se habilita sin problemas con la utilidad de Catalyst. Si el driver privativo (fglrx Catalyst) está bien configurado, no tendrán mayores problemas en configurar Xinerama.
Ahora bien, si no queremos usar Xinerama para poder tener efectos lindos en el escritorio, la opción más conveniente es escribir un Xorg nuevo. Lo primero que haremos es hacer backup de nuestro actual Xorg y luego:
# aticonfig --initial
De ésa manera, se genera una configuración con 1 solo monitor. Ahora ubicamos la siguiente sección:
Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Allí, debemos agregar en la SubSection "Display" lo siguiente:
Modes "1920x1080"
Virtual 3200 1080
Dónde "1920x1080" es la resolución del monitor primario y 3200 1080 es la resolución que le queremos dar al escritorio completamente.
Quedaría así:


Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Nótese que está sin tabular.
¿De qué dependen ésos números? Bueno, en ejemplo anterior, son dos monitores:

Monitor Primario: 1920 x 1080 de resolución
Monitor Secundario: 1280 x 1024 de resolución

La opción Modes le dice que el monitor primario es de 1920x1080. El escritorio quiero "extenderlo" al ancho del otro monitor. Entonces hago la siguiente cuenta 1920 +  1280. Éso me estaría dando el ancho completo del escritorio. En cuanto al alto, simplemente elijo de los dos monitores el alto más grande, el del monitor primario.  Otro ejemplo:

Monitor 1: 1280 x 1024
Monitor 2: 1024 x 768
Entonces: 1280 + 1024 = 2304

La configuración quedaría así:

Modes "1280x1024"
Virtual 2304 x 1024