"Después del juego es antes del juego"
Sepp Herberger

jueves, 30 de mayo de 2024

Espejar pantallas con xrandr y no morir en en intento.

A la hora de espejar la pantalla principal en una pantalla secundaria de un aula es corriente coger un script que ya espeja pantallas en otro sitio y plantarlo en el aula pensando que por arte de computer magic va a funcionar. Pues no, el script hay que adaptarlo y lo que traemos de otro sitio solo sirve de plantilla.

Para saber cómo adaptarlo hay que ejecutar xrandr sin parámetros y asi poder anotar como se llaman las salidas de vídeo en ese entorno concreto y cuales resoluciones soporta cada una. Hay una regla muy básica para ejecutar xrandr:


Recuerda: xrandr no se ejecuta NUNCA como root. Nada de conectar por ssh al equipo en cuestión, ni entrar en consola de texto desde el escritorio, ni hacer sudo, ni ninguna otra ocurrencia.

La única manera de ejecutar xrandr y que nos de un resultado correcto y fiable es ir físicamente al ordenador, iniciar sesión con un usuario normal, abrir un terminal en el escritorio y teclear "xrandr" seguido de enter. Fácil, ¿no? Si al teclear xrandr te sale "Cant open display" o algo similar es porque has desobedecido y no has hecho caso de la sugerencia de Doña Decibelia, la serenísima señora de la foto.

Una buena salida de xrandr seria por ejemplo:
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
VGA-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00*
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1280x800      59.81 +  84.88    74.93  
   1920x1080     60.00*   50.00    59.94    30.00    24.00    29.97    23.98  
Aqui se ven dos salidas activas; VGA-1 y HDMI-2, junto con la gama de resoluciones que soportan. Nosotros tenemos que determinar cual salida es la principal y cual es la secundaria entre ambas salidas y cuales resoluciones de las que soportan queremos elegir para trabajar. Con esos 4 datos ya tenemos para sustituir XXXX, YYYY, AAAA y BBBB en el script que nos sirve de plantilla general, el cual sería:
# cat /usr/local/bin/resolucion_espejar
#!/bin/bash
test -e  $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml  &&  rm  $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml
PRINCIPAL=XXXX
SECUNDARIO=YYYY
RESOLUCION_PRINCIPAL=AAAA
RESOLUCION_SECUNDARIO=BBBB
xrandr --output $PRINCIPAL --mode $RESOLUCION_PRINCIPAL --pos 0x0 --rotate normal --output $SECUNDARIO --mode $RESOLUCION_SECUNDARIO --pos 0x0 --rotate normal --same-as $PRINCIPAL --scale-from $RESOLUCION_PRINCIPAL
exit 0
Para el ejemplo anterior, unos buenos valores tomados del resultado del xrandr-sin-parámetros™ seíian:
# cat /usr/local/bin/resolucion_espejar
........
PRINCIPAL="VGA-1"
SECUNDARIO="HDMI-2"
RESOLUCION_PRINCIPAL="1024x768"
RESOLUCION_SECUNDARIO="1920x1080"
........
Y ya está, nada más. Probamos ese script desde terminal a ver si espeja bien ambas pantallas y si lo hace lo metemos para que se ejecute en el inicio de sesión desde /etc/xdg/autostart con un fichero .desktop. Sobre este tema ya hay muchos ejemplos en otras entradas del blog, busca por xrandr y encontrarás.

再见,同志们!

No hay comentarios:

Publicar un comentario