Gibt es eine Möglichkeit, einzelne Bildschirme auszuschalten?

13

Ich benutze xset, um meine Bildschirme wie folgt auszuschalten:

xset dpms force off

Gibt es eine Möglichkeit, einen einzelnen Bildschirm auszuschalten, wenn Sie mehr als einen Bildschirm mit demselben X-Display verknüpft haben?

Neil
quelle
@myrdd: Könnten Sie bitte erklären, was Sie speziell verbessert sehen möchten?
David Foerster
Ich möchte Details wissen: (a) Ist die gewünschte Funktion technisch möglich? - Das heißt, einzelne Bildschirme "auszuschalten" (ich meine nichtxrandr [...] --off ) - (b) Gibt es irgendwelche Abhängigkeiten? - Das heißt, tut das Grafikkarten-Chipsatz und / oder Treiber müssen eine bestimmte Funktion haben? - (c) Was wären die nächsten Schritte, wenn die gewünschte Funktion noch nicht verfügbar ist (als CLI-Befehl)?
Myrdd

Antworten:

4

Wenn Sie Standard-Ubuntu-Desktop verwenden, sollten Sie System> Einstellungen> Monitore verwenden können. Dies sollte alle Ihre Monitore anzeigen, auf den Monitor klicken, den Sie deaktivieren möchten, und dann die Optionsfelder "Ein / Aus" verwenden, um diesen bestimmten Monitor zu deaktivieren.

Wenn Sie dies über die Befehlszeile tun möchten, sollten Sie in der Lage sein xrandr --output <name> --off, die Ausgabe zu deaktivieren, die das Ausschalten des Monitors auslösen soll.

Andy
quelle
1
Das Problem ist, dass bei Verwendung von Nvidia TwinView beide Bildschirme sowohl für xrandr als auch für xset als einer angezeigt werden, sodass Sie die Monitore nicht einzeln ausschalten können. Außerdem sind die Einstellungen für den Gnome-Monitor deaktiviert, und Sie müssen stattdessen die Nvidia-Treibersteuerung verwenden. Wenn Sie einen der Monitore mit nvidia-Einstellungen deaktivieren, wird der Monitor vollständig deaktiviert und alle Fenster auf dem anderen Bildschirm blockiert. Ich möchte nur einen Monitor ausschalten, um einen Film auf dem anderen anzusehen.
Neil
@Neil Es ist wahrscheinlich nützlich, Ihre Hardware-Informationen zur Frage hinzuzufügen und sie auch mit nvidia zu kennzeichnen.
Jorge Castro
2
@JorgeCastro hat nichts mit der Hardware und TwinView zu tun: Es scheint keine Möglichkeit zu geben, einen Bildschirm einzeln auszuschalten, wenn er sich auf demselben $ DISPLAY befindet, außer durch Entfernen / Deaktivieren aus der RandR-Konfiguration. Wir wollen zB den Laptop-Bildschirm ausschalten, aber alle Fenster dort lassen.
Blueyed
@muru du bist ein redigierender Affe! Ich sehe immer wieder deine Änderungen.
MathCubes
4

Problem mit der vorhandenen Antwort

Obwohl es vor sieben Jahren eine Antwort mit drei Up-Votes gab, wurde diese nicht akzeptiert, da dadurch alle geöffneten Fenster auf der Abschaltanzeige auf die verbleibenden aktiven Anzeigen migriert werden.

Softwarebasierte Helligkeit

Auf einem Laptop können Sie die Helligkeit über die Grafikkarte steuern, die das LCD-Panel steuert. Bei externen Fernsehgeräten und Monitoren benötigen Sie eine Softwarelösung, um die Helligkeit auf 0 zu reduzieren. Wenn Sie sie auf Null stellen, kommt mir die Illusion am nächsten, sie auszuschalten, während die aktiven Fenster auf diesem externen Display erhalten bleiben.

Kurzfassung

Verwenden Sie in der Befehlszeile (ohne Skripte):

$ xrandr | grep " connected"
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 1107mm x 623mm
eDP-1-1 connected primary 1920x1080+3840+2160 (normal left inverted right x axis y axis) 382mm x 215mm
DP-1-1 connected 3840x2160+1920+0 (normal left inverted right x axis y axis) 1600mm x 900mm

Dies zeigt Ihnen die Liste der Monitornamen, die von zugewiesen wurden xrandr. Wenn Sie nun die DP-1-1Helligkeit deaktivieren möchten, verwenden Sie:

xrandr --output DP-1-1 --brightness 0

Sony TV Bash-Skript

Hier ist eines von drei Skripten, die ich geschrieben habe:

#!/bin/bash

# NAME: sony
# PATH: /mnt/e/bin
# DESC: Set brightness of Sony TV
# DATE: Dec 9, 2017.

if [[ $# -ne 1 ]]; then
    xrandr --verbose | grep -A5 "^HDMI-0" > /tmp/sony
    head -n1 /tmp/sony
    echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"
    rm /tmp/sony
    echo 'One argument required for brightness level, e.g. "sony .63"'
    echo 'will set brightness level of Sony TV to level .63 using xrandr'
    exit 1
fi

xrandr --output HDMI-0  --brightness "$1"

Zum Ausschalten des Displays würden Sie verwenden sony 0

Aufruf eines Skripts ohne Parameter

Wenn Sie das Skript ohne Parameter aufrufen, wird der xrandrBildschirmname zusammen mit der aktuellen Helligkeit in Rot angezeigt. Sie können die rote Farbe in eine andere ändern, indem Sie diese Zeile ändern:

echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"

Nach dem setafÄndern 1auf:

  • 2 für grün
  • 3 für orange
  • 4 für blau usw.

Skript ändern und installieren

Ändern Sie die beiden Vorkommen von HDMI-0entsprechend Ihrem Bildschirmnamen. Sie können eine Liste aller Ihrer xrandrim Terminal eingegebenen Bildschirme abrufen .

Platzieren Sie das Skript in einem Verzeichnis in Ihrem Pfad, z.

/usr/local/bin/sony

Markieren Sie das Skript als ausführbar mit:

sudo chmod a+x /usr/local/bin/sony

Auswählen des Verzeichnisses: /usr/local/binvs.~/bin

Wenn Sie Skripte erstellen /usr/local/bin, müssen Sie sudoKräfte verwenden. Eine bessere Alternative ist die Verwendung des Verzeichnisses, ~/bindas für /home/YourUserID/bin:

  • Erstellen Sie das Verzeichnis ~/bin
  • Schließen Sie Ihr Terminal und öffnen Sie es erneut.
  • Das neu erstellte Verzeichnis befindet sich jetzt in Ihrem Pfad.
  • Alle Skripte, in denen Sie erstellen, ~/binkönnen mit Ihren regulären Berechtigungen erstellt werden.
  • Um die Ausführung Ihrer Skripte zu ermöglichen, müssen Sie nur chmod +xanstatt chmod a+x(die aBedeutung aller Benutzer) verwenden.
WinEunuuchs2Unix
quelle
2
Vielen Dank für Ihre Antwort. Ich kannte die xrandr [...] --brightnessOption nicht. Beachten Sie, dass Sie insbesondere über Sony-Displays gesprochen haben, aber auch --brightnessfür jedes andere Display funktionieren sollten. Ich habe --brightnessauf meinem Laptop getestet und es hat funktioniert. Die --brightness 0Hintergrundbeleuchtung wurde jedoch nicht ausgeschaltet. - Ich habe auch --brightnessauf meinem Desktop-Computer getestet : Leider blieben die Bildschirme nur 1 oder 2 Sekunden lang schwarz . Nach diesen 1–2 Sekunden wird die Helligkeit automatisch zurückgesetzt. Ich nehme an, ob es funktioniert, hängt stark von der Kombination aus GPU + Treiber + Bildschirm ab.
Myrdd
1
@myrdd Ich habe eigentlich drei Skripte Sony , Toshiba und fremd für zwei externe Displays und integrierten in Laptop - Display. Ja, die Hintergrundbeleuchtung schaltet sich nicht aus, sodass Sie kein "reines Schwarz" erhalten, aber es ist eine enge Umgehung. Das automatische Zurücksetzen von 1 bis 2 Sekunden wirkt sich nicht auf meine Anzeigen aus, aber ich habe nVidia-Treiber für den festverdrahteten nVidia HDMI-Anschluss und den nVidia-Treiber ausgeführt, der die Kontrolle über zwei Intel HD530 iGPU-Bildschirme übernimmt - Thunderbolt3 und integriert.
WinEunuuchs2Unix
Es ist kein Skript erforderlich. Führen Sie einfach xrandr aus, um die Ausgabe-ID zu finden, und xrandr --output HDMI-1 --brightness 0vereinfachen Sie dann bitte die Antwort
brauliobo
2
@brauliobo Anstatt den größten Teil der Antwort zu löschen, habe ich ganz oben eine Kurzversion eingefügt, die ich für einen Kompromiss halte.
WinEunuuchs2Unix