Deshabilitar pantallas desconectadas (xrandr)

17

Tengo una computadora portátil con dos salidas de video que uso cuando estoy en casa (HDMI1, VGA1). Para habilitarlos, hago esto:

xrandr --output HDMI1 --right-of LVDS1 --auto
xrandr --output LVDS1 --off
xrandr --output VGA1 --right-of HDMI1 --auto

Cuando quiero ir a trabajar, tomo mi computadora portátil pero primero ejecuto lo siguiente:

xrandr --output VGA1 --off
xrandr --output LVDS1 --left-of HDMI1 --auto
xrandr --output HDMI1 --off

Y luego esto deja la pantalla de mi computadora portátil activa como debería.

El problema que encuentro es que a veces no recuerdo deshabilitar las dos pantallas antes de llevar mi computadora al trabajo. Cuando llego, intento varias combinaciones de --outputy --offpero no puedo volver a habilitar mi pantalla.

Este es el resultado que obtengo xrandrsin mostrar nada:

Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0··
   800x600        60.3     56.2··
   640x480        59.9··
VGA1 disconnected 1920x1080+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
HDMI1 disconnected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
DP1 disconnected (normal left inverted right x axis y axis)
  1920x1080 (0x4c)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock   67.5KHz
        v: height 1080 start 1084 end 1089 total 1125           clock   60.0Hz

Casi todos los comandos que he probado devuelven:

xrandr: Configure crtc 2 failed
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  21 (RRSetCrtcConfig)
  Serial number of failed request:  40
  Current serial number in output stream:  40

Es como si los dos monitores no renunciaran a su CRTC y dado que mi hardware solo admite 2, está bloqueado hasta que conecte esos monitores y los desactive.


fuente

Respuestas:

11

Puede poner toda su configuración en un solo comando, como:

xrandr --output VGA1 --off --output HDMI1 --off --output LVDS1 --left-of HDMI1 --auto

y eso debería hacer el trabajo, también dado que es un comando difícil de escribir (demasiado largo), puede crear un script que pruebe las pantallas conectadas actualmente y realice la configuración deseada. (puede agregar a un atajo de teclado)

if [ -z `xrandr --query | grep "HDMI1 connected"` ]
then
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --off \
        --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal \
        --output VGA1 --off
else
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal --primary \
        --output LVDS1 --off --output VGA1 --off
fi

No es un script sofisticado, pero puede funcionar para usted.

Agomezl
fuente
1

No parece haber un evento generado cuando una pantalla se desenchufa desafortunadamente. tener una encuesta de script xrandr es bastante pesado, pero puede examinar / sys / class / drm / * / status y sondear esos archivos y luego tomar la acción xrandr requerida cuando el estado cambia de 'conectado' a otra cosa (o desaparece por completo).

Cwissy
fuente
1

Sé que este es un hilo súper antiguo, pero quería compartir cómo resolví el problema, usando su información sobre cómo encender y apagar los monitores y luego desconectarlos. Usé un programa llamado autorandr y básicamente configuré mi pantalla con dos monitores autorandr --save docked. Luego lo usé xrandr --output VGA --off, luego desconecté mi monitor, seguido de autorandr --save mobile. Autorandr cambiará automáticamente entre diferentes modos según lo que haya enchufado o desenchufado. ¡Ojalá eso ayude a cualquiera que se encuentre con esto! Además, esta es mi primera respuesta real, así que avíseme si puedo cambiar algo para que quede más claro.

ViperZer0
fuente