Switching between screen inputs without a switch

At my office I have two computers: a Linux desktop and a laptop running Linux and Windows. I have a dock station for the laptop, plugged to the two screens that I also use with the desktop computer, in alternate inputs (DVI/VGA). Changing the inputs in these screens is a bit of a hassle, because they are not the «one-click-switch» type. I need to go into the menus and browse through the options.

As I have enough with changing the USB connectors for the mouse and the keyboard, I found out a «hack» to disable the video output of the desktop. This way, when I turn on the laptop the two screens automatically search for the next available input.

The trick consists in using FrameBuffer suspend mode, manipulating the contents of /sys/class/graphics/fb0/blank. I use these two scripts:

screen_on.sh


#!/bin/sh
echo 0 > /sys/class/graphics/fb0/blank

screen_off.sh


#!/bin/sh
echo 1 > /sys/class/graphics/fb0/blank

I left them in my home directory: /home/user/bin/

Since writing to /sys/class/graphics/fb0/blank requires root permissions, I edited /etc/sudoers and added the following two lines:


usuario ALL=(root) NOPASSWD: /home/usuario/bin/screen_off.sh
usuario ALL=(root) NOPASSWD: /home/usuario/bin/screen_on.sh

The last step is to add two key bindings in KDE:

  1. Create a new group, named «Screen».
  2. Create two new bindings: «On» y «Off».
  3. I assigned two keys I never used in my keyboard (this one has multiple media shortcuts, mail, home, etc.). You can also use combinations such as «Ctrl+Alt+whatever«.
  4. In «Action», just enter the path to the scripts using sudo::
    sudo /home/user/bin/screen_off.sh
    sudo /home/user/bin/screen_on.sh
keybinding

This is working in Debian Wheezy with a dedicated graphics card.

Share

Cambiar entrada de monitores sin necesidad de un switch

En el despacho tengo 2 ordenadores: un sobremesa con Linux y un portátil con Linux y Windows. Con el portátil trabajo en una dock station conectada a los dos monitores que uso con el sobremesa, pero en entradas diferentes (DVI/VGA). El cambio de entrada en estos monitores es un poco engorroso, ya que no se trata de pulsar solo un botón, sino que hay que entrar en el menú de cada uno y moverse por las opciones.

Como bastante trabajo tiene cambiar los USB del ratón y el teclado, me he hecho un «hack» para deshabilitar la salida de vídeo del sobremesa, de manera que al encender el portátil los monitores ya buscan ellos solitos la siguiente entrada que tenga algo para mostrar.

El truco está en usar el modo de suspensión de FrameBuffer, para lo cual manipulo el contenido de /sys/class/graphics/fb0/blank. Tengo los siguientes scripts:

screen_on.sh


#!/bin/sh
echo 0 > /sys/class/graphics/fb0/blank

screen_off.sh


#!/bin/sh
echo 1 > /sys/class/graphics/fb0/blank

Los dejo en mi directorio de binarios: /home/usuario/bin/

Y, dado que acceder a /sys/class/graphics/fb0/blank requiere permisos de root, edito /etc/sudoers y añado:


usuario ALL=(root) NOPASSWD: /home/usuario/bin/screen_off.sh
usuario ALL=(root) NOPASSWD: /home/usuario/bin/screen_on.sh

Por último, en KDE añado nuevos atajos de teclado:

  1. Creo un grupo, llamado «Screen».
  2. Creo dos atajos: «On» y «Off».
  3. Asigno dos teclas que no uso nunca del teclado (este es de muchas teclas con atajos multimedia, para abrir el correo, etc.). O bien combinaciones tipo «Ctrl+Alt+loquesea«.
  4. Como acción, asigno el script, con «sudo» (como en la imagen):
    sudo /home/usuario/bin/screen_off.sh
    sudo /home/usuario/bin/screen_on.sh
keybinding

Esto me funciona sin problemas en Debian Wheezy, usando una tarjeta gráfica dedicada y con dos monitores, uno conectado por DVI y otro por VGA a la gráfica. En la dock station del portátil están intercambiados.

Share