Cambiar entre el monitor del portátil y el externo en Linux con un solo clic

He escrito un pequeño script en Python para cambiar con un solo clic entre el monitor de mi portatil y el monitor externo en Linux.

Usa aticonfig --query-monitor para comprobar el número de monitores conectados y encendidos (luego como imaginareis está pensado para gráficas ATI). Si hay dos monitores conectados y ambos están encendidos, pasa al primero y apaga el segundo usando aticonfig --enable-monitor y xrandr -s para cambiar la resolución. Si hay dos monitores conectados pero sólo uno encendido, cambia al que estaba apagado.

Cada vez que cambiamos de monitor muestra un aviso usando libnotify. También escribe a la consola (más información), por si alguien lo prefiere.

Para usarlo no tenéis más que cambiar las resoluciones a las de vuestros monitores en el script y bien correrlo desde la línea de comandos o crear un lanzador en uno de los paneles para poder ejecutarlo con un sólo clic: botón derecho del ratón sobre el panel, Añadir al panel, Lanzador personalizado. O bien podéis asociarlo a una combinación de teclas.

Como extra, si hacéis que se ejecute al inicio (Ubuntu Sistema -> Preferencias -> Sesiones -> Nuevo) servirá para que apague el monitor del portátil al iniciar si el externo está conectado.

No me hago responsable de cualquier problema que podáis tener por ejecutarlo. Es muy posible que falle porque está hecho en 5 minutos y sólo probado en mi pc. Haced una copia del xorg.conf por si acaso. Podéis hacer lo que queráis con el código, aunque es bastante tonto y simple, pero agradecería enlaces entrantes.

Cambiar entre monitor portátil y externo en Linux
Cambiar monitor linux

31 comentarios en «Cambiar entre el monitor del portátil y el externo en Linux con un solo clic»

  1. Python es de lo más sencillote Rick. Tienes módulos para hacer de todo y es bastante natural.

    Pero además es potente. Con funciones de orden superior y esa clase de cosas 🙂

    Vamos que es un gustazo de lenguaje.

  2. Ya ya, si yo me he encaprichado de el hace poquito, por eso lo digo 🙂
    Ya me he zampao el dive into python, la doc del libnotify, etc, asi que en cuanto tengo algo de tiempo a ver si cacharreo un poco 🙂

  3. Zootropo eres el mejor. Justo lo que necesitaba para ver las series con mi Dell 6400. Yo conecto la televisión a la salida de monitor, luego tengo que cambiar la resolución pero siempre veo la imagen tanto en el portátil como en la televisión.

  4. Yo no soy tan «pro», pero me hice un script (dualhead.sh, que original…) que mediante «xrandr» me configura en mi MacBook el monitor externo que tengo enchufado para ampliar el escritorio a los dos monitores.

    Son 4 líneas de script, pero con una es más rápido :).

  5. Zootropo te cuento. Mi resolución en el portátil es de 1440×900 y la de la televisión es de 1024×768, me detecta perfectamente los dos monitores:

    Connected monitors: crt1, lvds

    Al hacer el cambio de portátil a TV apaga bien la primera pantalla y cambia la resolución para que se pueda ver bien la televisión. Pero vuelvo a ejecutar el script apaga la TV pero no me cambia la resolución.

    Esta es la ejecución:

    markdbd@markdbd-portatil:~/bin/scripts$ python monitores.py
    Connected monitors: crt1, lvds
    Enabled monitors: crt1
    There is one enabled monitor: crt1
    There are two connected monitors: crt1, lvds
    Switching to monitor lvds
    aticonfig: Writing to ‘/etc/X11/xorg.conf’ failed. Bad file descriptor.
    Using /etc/X11/xorg.conf
    Saved back-up to /etc/X11/xorg.conf.fglrx-1

  6. Ok listo, había asignado al revés las resoluciones. La resolución 1 es para la TV y la 2 para el portátil:

    resol1 = «1024×768»
    resol2 = «1440×900»

    Ya esta resuelto y funciona perfectamente. Mil gracias, si te digo que todas las noches enchufo la tele, cambio la resolución y podía ver la película tanto en el monitor como en la Tele, te puedes imaginar lo bien que me viene este script. Gracias de verdad.

  7. Hola una duda, llevo poco tiempo con esto del ubuntu he probado con varios posts para ver tb la TV con mi ATI 9200 pero nada.

    He probado este pero cuando me dice q no tengo ningún monitor conectado.

    pere@pere-desktop:~$ aticonfig –query-monitor
    Connected monitors: none
    Enabled monitors: none

    ESTE ES MI ARCHIVO XORG.CONF

    Section «Files»
    FontPath «/usr/share/X11/fonts/misc»
    FontPath «/usr/share/X11/fonts/cyrillic»
    FontPath «/usr/share/X11/fonts/100dpi/:unscaled»
    FontPath «/usr/share/X11/fonts/75dpi/:unscaled»
    FontPath «/usr/share/X11/fonts/Type1»
    FontPath «/usr/share/X11/fonts/100dpi»
    FontPath «/usr/share/X11/fonts/75dpi»
    FontPath «/usr/share/fonts/X11/misc»
    # path to defoma fonts
    FontPath «/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType»
    EndSection

    Section «Module»
    Load «i2c»
    Load «bitmap»
    Load «ddc»
    Load «dri»
    Load «extmod»
    Load «freetype»
    Load «glx»
    Load «int10»
    Load «type1»
    Load «vbe»
    EndSection

    Section «InputDevice»
    Identifier «Generic Keyboard»
    Driver «kbd»
    Option «CoreKeyboard»
    Option «XkbRules» «xorg»
    Option «XkbModel» «pc105»
    Option «XkbLayout» «es»
    Option «XkbOptions» «lv3:ralt_switch»
    EndSection

    Section «InputDevice»
    Identifier «Configured Mouse»
    Driver «mouse»
    Option «CorePointer»
    Option «Device» «/dev/input/mice»
    Option «Protocol» «ExplorerPS/2»
    Option «ZAxisMapping» «4 5»
    Option «Emulate3Buttons» «true»
    EndSection

    Section «InputDevice»
    Driver «wacom»
    Identifier «stylus»
    Option «Device» «/dev/wacom» # Change to
    # /dev/input/event
    # for USB
    Option «Type» «stylus»
    Option «ForceDevice» «ISDV4» # Tablet PC ONLY
    EndSection

    Section «InputDevice»
    Driver «wacom»
    Identifier «eraser»
    Option «Device» «/dev/wacom» # Change to
    # /dev/input/event
    # for USB
    Option «Type» «eraser»
    Option «ForceDevice» «ISDV4» # Tablet PC ONLY
    EndSection

    Section «InputDevice»
    Driver «wacom»
    Identifier «cursor»
    Option «Device» «/dev/wacom» # Change to
    # /dev/input/event
    # for USB
    Option «Type» «cursor»
    Option «ForceDevice» «ISDV4» # Tablet PC ONLY
    EndSection

    Section «Device»
    Identifier «ATI Technologies, Inc. RV280 [Radeon 9200]»
    Driver «ati»
    BusID «PCI:1:0:0»
    EndSection

    Section «Monitor»
    Identifier «Visual Sensa»
    Option «DPMS»
    EndSection

    Section «Screen»
    Identifier «Default Screen»
    Device «ATI Technologies, Inc. RV280 [Radeon 9200]»
    Monitor «Visual Sensa»
    DefaultDepth 24
    SubSection «Display»
    Depth 1
    Modes «1024×768» «800×600» «640×480»
    EndSubSection
    SubSection «Display»
    Depth 4
    Modes «1024×768» «800×600» «640×480»
    EndSubSection
    SubSection «Display»
    Depth 8
    Modes «1024×768» «800×600» «640×480»
    EndSubSection
    SubSection «Display»
    Depth 15
    Modes «1024×768» «800×600» «640×480»
    EndSubSection
    SubSection «Display»
    Depth 16
    Modes «1024×768» «800×600» «640×480»
    EndSubSection
    SubSection «Display»
    Depth 24
    Modes «1024×768» «800×600» «640×480»
    EndSubSection
    EndSection

    Section «ServerLayout»
    Identifier «Default Layout»
    Screen «Default Screen»
    InputDevice «Generic Keyboard»
    InputDevice «Configured Mouse»
    InputDevice «stylus» «SendCoreEvents»
    InputDevice «cursor» «SendCoreEvents»
    InputDevice «eraser» «SendCoreEvents»
    EndSection

    Section «DRI»
    Mode 0666
    EndSection

    Alguién puede ayudarme?

  8. Creo que esto supero mis conocimientos he bajado el archivo localize donde dice la resolucion le doy 2 click y me manda el anuncio de mostrar o ejecutar en terminal lo ejecuto en terminal y nada no pasa nada Yo tengo una HPdv1000 con una tarjeta de video Intel

    Mi laptop la conecto a mi TV una Sony Bravia pero siempre tengo que andar con las teclas de la laptop para cambiar de monitor y quisiera poder entender este script espero y me ayuden

  9. Podrian ayudarme, soy principiante, tengo instalado mandriva 2006, como puedo instalar el archivo para ver mi monitor en lugar del display de mi lap?

  10. Estoy peleando por poder usar la tv-out (s-video) de mi laptop Dell Inspirion 6400 (Ati Radeon x1300)

    El problema que presento es que al cambiar monitor a TV la pantalla de television se ve negra y se apaga el pc tambien… (el cable esta bien ya que funciona en windows)

    La ejecucion es:

    Connected monitors: lvds, tv
    Enabled monitors: lvds
    There is one enabled monitor: lvds
    There are two connected monitors: lvds, tv
    Switching to monitor tv
    aticonfig: Writing to ‘/etc/X11/xorg.conf’ failed. Bad file descriptor.
    Using /etc/X11/xorg.conf
    Saved back-up to /etc/X11/xorg.conf.fglrx-2

    Y se van a negro las dos pantallas

  11. sabes si en java se puede detectar el numero de monitores conectados… agradeceria tu respuesta…

    si sabes … entonces dime cual podria ser el comando…
    saludos 😀

  12. Tengo un problema, al conectar un monitor externo (LG) desde ubuntu, la imagen no me aparece completa, como le puedo hacer para que la imagen se muestre completa

Responder a Pere Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.