Unplugged Displays deaktivieren (xrandr)

17

Ich habe einen Laptop mit zwei Videoausgängen, die ich zu Hause verwende (HDMI1, VGA1). Um sie zu aktivieren, mache ich Folgendes:

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

Wenn ich zur Arbeit gehen möchte, nehme ich meinen Laptop, führe aber zuerst Folgendes aus:

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

Und dann bleibt mein Laptop-Display so aktiv, wie es sollte.

Das Problem, auf das ich stoße, ist, dass ich manchmal nicht daran denke, die beiden Bildschirme zu deaktivieren, bevor ich meinen Computer zur Arbeit bringe. Wenn ich ankomme, versuche ich verschiedene Kombinationen von --outputund --offkann meinen Bildschirm nicht wieder aktivieren.

Dies ist die Ausgabe, die ich xrandrmit nichts ausgeführt bekommen angezeigt:

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

Fast jeder Befehl, den ich ausprobiert habe, gibt Folgendes zurück:

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 ist, als ob die beiden Monitore ihre CRTC nicht aufgeben und da meine Hardware nur 2 unterstützt, ist sie gesperrt, bis ich diese Monitore einstecke und sie deaktiviere.


quelle

Antworten:

11

Sie können Ihre gesamte Konfiguration mit nur einem Befehl ausführen:

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

und das sollte die Arbeit machen, auch da es ein schwer zu schreibender Befehl ist (zu lang), können Sie ein Skript erstellen, das die aktuell angehängten Bildschirme testet und das gewünschte Setup vornimmt. (Sie können zu einer Tastenkombination hinzugefügt werden)

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

Es ist kein schickes Skript, kann aber für Sie funktionieren.

Agomezl
quelle
1

Es scheint kein Ereignis zu geben, das generiert wird, wenn ein Bildschirm leider nicht angeschlossen ist. xrandr mit einer Skriptumfrage zu haben ist ziemlich schwer, aber Sie können in / sys / class / drm / * / status nachsehen und diese Dateien abfragen. Führen Sie dann die erforderliche xrandr-Aktion aus, wenn sich der Status von "verbunden" zu etwas anderem ändert (oder ganz verschwindet).

Cwissy
quelle
1

Ich weiß, dass dies ein super alter Thread ist, aber ich wollte mitteilen, wie ich das Problem gelöst habe, indem ich Ihre Informationen zum Ein- und Ausschalten von Monitoren und zum anschließenden Trennen von Monitoren verwendet habe. Ich habe ein Programm namens autorandr verwendet und mein Display dann im Grunde genommen nur mit zwei Monitoren eingerichtet autorandr --save docked. Dann habe ich das benutzt xrandr --output VGA --off, dann meinen Monitor ausgesteckt, gefolgt von autorandr --save mobile. Autorandr schaltet automatisch zwischen den verschiedenen Modi um, je nachdem, was Sie eingesteckt oder ausgesteckt haben. Hoffentlich hilft das jedem, der darüber stolpert! Auch dies ist wie meine erste richtige Antwort. Lassen Sie mich wissen, ob ich etwas ändern kann, um es klarer zu machen.

ViperZer0
quelle