Viernes, 03 Septiembre 2010

Dual Screen automático con tu laptop

Imprimir E-mail
Desarrollando - Servicios (Daemons)
Escrito por Mario Alberto Medina Nussbaum   
Miércoles, 01 de Octubre de 2008 14:39

¿Alguna vez haz conectado un monitor a tu laptop y luchado para que se despliegue la imagen en el monitor? O quizá a haz querido ver tu escritorio de manera extendida, pero ha sido todo un dolor de cabeza, y finalmente haz hecho hacks y hacks a el xorg.conf, y no ha quedado bien del todo. Pues tengo grandes noticias para ti.

Existen ya métodos para hacer cambios de resolución, extender el escritorio de manera horizontal o vertical y todo con unos cuantos comandos. Para eso hemos desarrollado este pequeño script en PHP que se encarga de todo lo necesario para auto-ajustar tu resolución para poner un monitor a la derecha de tu laptop y que automáticamente, al conectarlo se extienda el escritorio.

 

Primero lo primero, la lista de requerimientos:

 

  • Linux mas o menos nuevo, digamos con Xorg 1.4 o superior
  • El programa xrandr (apt-get install xrandr en ubuntu o yum install xrandr en centos/fedora)
  • PHP en modo CLI o CGI instalado
  • Privilegios de ROOT en tu instalación
  • Un editor de texto, como joe, nano, pico, kate o similares

Una vez que cumplas con la lista de requerimientos vamos a ver los pasos.

Lo primero que hay que hacer es detectar la resolución de tu pantalla, esto es con:

xrandr 

que mostrará algo como esto:

Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 2720 x 1024

VGA-0 connected 1280x1024+1280+0 (normal left inverted right x axis y axis) 338mm x 270mm

   1280x1024      60.0*+   75.0     59.9

   1152x864       74.8

   1024x768       75.1     60.0

   800x600        75.0     60.3

   640x480        75.0     60.0

   720x400        70.1

LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 0mm x 0mm

   1280x800       59.5*+   60.0

   1280x768       60.0

   1024x768       60.0

   800x600        60.3

   640x480        59.9

S-video disconnected (normal left inverted right x axis y axis)

 

Como te podras dar cuenta, existe en la primera linea un "maximum 2720x1024", esto se edita en el archivo de /etc/X11/xorg.conf, busca la sección "Screen", y ahí busca la subsección  "Display", una vez que lo halles, edita o agrega esta línea:

                 Virtual 2720 1024   # <--- hay que agregar esta linea

El primer parámetro es el máximo de resolucion horizontal, digamos, yo tengo dos monitores, el de mi laptop, de 1280x800 y el externo, un LCD de 1280x1024. Así, sumo 1280+1280=2720, ahora, de vertical, tomo el más alto, puesto que voy a desplegar todo esto de manera horizontal. Si fueras a utilizar el cambio a manera vertical, sumarías los altos y usarías el ancho más grande para fijar estos parámetros.

Hecho esto, salva y reinicia tu entorno gráfico, puedes hacerlo con reiniciar la máquina, o simplemente detener y reiniciar el servicio, en algunas distribuciones cuando te sales al xdm/kdm/gdm (es decir, donde te pide login y password) puedes presional control-e o alt-e y se reinicia el ambiente gráfico.

Cuando hayas hecho esto, intenta de nuevo, y revisa si el maximum es de lo que tu pusiste, esto es indispensable para el segundo paso.

Ahora es muy sencillo, solo tienes que decirle cual pantalla es la primaria y cual es la secundaria. Yo uso siempre la interna de la laptop como primaria, por que si se va la luz te quedas sin la primaria (si no tienes UPS).

xrandr --output LVDS --mode 1280x800

Esta instrucción fija a mi pantalla primaria como la LVDS a una resolución de 1280x800, luego va la secundaria:

xrandr --output VGA-0 --right-of LVDS --mode 1280x1024

List! manualmente ya tienes hecho el cambio, y tu escritorio esta extendido. Pero ahora, hay que hacer esto de manera automática. ¿Cómo? pues con un script que ejecute estos pasos, detecte cuando hay un monitor externo conectado, y detecte entonces la resolución máxima de la pantalla principal y ejecute los comandos poniendo el display adecuado y el modo adecuado.

Luego, ejecutando ese script al inicio de tu sesión gráfica y manteniendolo activo todo el tiempo, checando una vez por minuto si hay cambios de monitores conectados o desconectados se puede hacer automático el cambio de tamaño.

Para obtener el script, te invito a la sección de descargas. También te invito a hacer comentarios acerca de este artículo para poder mejorar nuestra calidad de contenidos.



Compartir este artículo
Reddit! Del.icio.us! Mixx! Free and Open Source Software News Google! Live! Facebook! StumbleUpon! TwitThis Joomla Free PHP
Comentarios
Añadir nuevo Buscar RSS
+/-
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Por favor introduce el código anti-spam que puedes leer en la imagen.
julio  - que bien |2009-03-15 14:36:46
avatar Jamas se me habia ocurrido esto de colocar un monitor a mi lapto es mjuy bueno
y super comodo que bien esxplicado y facil de comprender , gracias por
compartir sus conocimientos.
medisoft  - Actualizacion |SAdministrator |2009-08-19 21:42:36
avatar He de aclarar que con las nuevas versiones de Linux, en especial ubuntu/kubuntu
es todavia mas sencillo, en el menu de sistema -> display puedes escoger como
vas a mostrar en tu dual screen, y darle aplicar, y listo. La ventaja de este
script es que en cuanto conectas el monitor te cambia la resolución.

Otra nota es que para obtener resoluciones horizontales de mas de 2048 pixeles
es necesario tener una tarjeta de video muy nueva o tener DRI2 instalado, el
problema es que DRI2 a este momento es mas lento y bastante inestable, se traba
a cada rato sin razon, pero de que jala, lo hace.
Cristian  - Ummm |2009-08-31 23:20:08
avatar A mi me parece genial la idea... pero preferiría un script en bash, python o
perl... porque eso de tener que instalar PHP para un tipo de cosas como estas
como que no :P

Igual, muchas gracias por el tip. Un saludo!
medisoft |SAdministrator |2009-09-01 18:21:29
avatar bueno, la razon de hacerlo en PHP es por que me agrada el php y por que lo
conozco.

a fin de cuentas, perl tambien se tendría que instalar si no fuera por que hay
muchos scripts que lo utilizan, y python tambien se requiere instalar
 
Necesitas acceder o registrarte para poner comentarios hacia el foro.
Hay 0 discusiones en el foro.