Disabilita display non collegati (xrandr)


17

Ho un laptop con due uscite video che uso quando sono a casa (HDMI1, VGA1). Per abilitarli, faccio questo:

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

Quando voglio andare al lavoro, prendo il mio laptop ma prima eseguo quanto segue:

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

E quindi questo lascia il display del mio laptop attivo proprio come dovrebbe.

Il problema che sto riscontrando è che a volte non ricordo di disabilitare le due schermate prima di far funzionare il mio computer. Quando arrivo, provo varie combinazioni di --outpute --offma non riesco a riabilitare lo schermo.

Questo è l'output che ottengo in esecuzione xrandrcon nulla visualizzato:

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

Quasi tutti i comandi che ho provato restituiscono:

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

È come se i due monitor non rinunciassero al CRTC e poiché il mio hardware supporta solo 2, è bloccato fino a quando non collego quei monitor e li disabilito.

Risposte:


11

Puoi mettere tutta la tua configurazione in un solo comando, come:

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

e questo dovrebbe funzionare, anche dal momento che è un comando difficile da scrivere (troppo a lungo) è possibile creare uno script che verifichi le schermate attualmente collegate ed effettuare l'installazione desiderata. (puoi aggiungere una scorciatoia da tastiera)

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

non è una sceneggiatura elaborata ma potrebbe funzionare per te.


1

Sfortunatamente non sembra esserci un evento generato quando uno schermo viene scollegato. avere uno script di script xrandr è piuttosto pesante ma si può guardare in / sys / class / drm / * / status e eseguire il polling di quei file quindi eseguire l'azione xrandr richiesta quando lo stato cambia da "connesso" a qualcos'altro (o scompare del tutto).


1

So che questo è un thread super vecchio, ma volevo condividere il modo in cui ho risolto il problema, usando le tue informazioni su come accendere e spegnere i monitor e quindi disconnetterli. Ho usato un programma chiamato autorandr e fondamentalmente ho appena impostato il mio display con due monitor autorandr --save docked. Poi ho usato che xrandr --output VGA --off, quindi scollegato il mio monitor, seguito da autorandr --save mobile. Autorandr passa automaticamente da una modalità all'altra a seconda di ciò che è stato collegato o scollegato. Spero che questo aiuti chiunque altro inciampa su questo! Anche questa è come la mia prima vera risposta, quindi fammi sapere se posso cambiare qualcosa per essere più chiaro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.