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.

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.


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).


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.