Czy istnieje sposób na wyłączenie poszczególnych ekranów?

13

Używam xset, aby wyłączyć ekrany w następujący sposób:

xset dpms force off

Czy jest jakiś sposób, aby wyłączyć pojedynczy ekran, jeśli masz więcej niż jeden powiązany z tym samym wyświetlaczem X?

Neil
źródło
@myrdd: Czy możesz wyjaśnić, co chciałbyś poprawić?
David Foerster,
Chciałbym poznać szczegóły: (a) jest pożądaną cechą jest to technicznie możliwe -To, aby „wyłączyć” poszczególnych ekranów (mam robić? Nie średnie xrandr [...] --off) - (b) Czy istnieją jakieś zależności -To jest, robi? chipset karty graficznej i / lub sterownik muszą mieć określoną funkcję? - (c) Biorąc pod uwagę, że żądana funkcja nie jest jeszcze dostępna (jako polecenie CLI), jakie byłyby następne kroki?
myrdd

Odpowiedzi:

4

Jeśli używasz standardowego Ubuntu Desktop, powinieneś być w stanie użyć System> Preferencje> Monitory. Powinno to pokazać wszystkie monitory, kliknąć ten, który chcesz wyłączyć, a następnie użyć przycisków radiowych „on / off”, aby wyłączyć ten monitor.

Jeśli chcesz to zrobić z wiersza poleceń, powinieneś być w stanie xrandr --output <name> --offwyłączyć wyjście, które powinno spowodować wyłączenie monitora.

Andy
źródło
1
Problem polega na tym, że gdy używasz Nvidia TwinView, oba ekrany są wyświetlane jako jeden dla xrandr i xset, więc nie możesz indywidualnie wyłączać monitorów. Ponadto preferencje monitora Gnome są wyłączone i zamiast tego należy użyć kontrolki sterownika Nvidia. Gdy wyłączysz jeden z monitorów za pomocą ustawień nvidia, całkowicie wyłączy on monitor, blokując wszystkie okna na drugim ekranie. Chcę tylko wyłączyć jeden monitor, aby obejrzeć film na drugim.
Neil
@ Neil Prawdopodobnie przydatne jest dodanie informacji o sprzęcie do pytania i oznaczenie go również za pomocą nvidii.
Jorge Castro,
2
@JorgeCastro nie jest to związane ze sprzętem i TwinView: wydaje się, że nie ma sposobu, aby wyłączyć ekran indywidualnie, gdy jest on na tym samym $ DISPLAY, oprócz usunięcia / wyłączenia go z konfiguracji RandR. Chcemy wyłączyć np. Ekran laptopa, ale zachowaj tam wszystkie okna.
niebieskawy
@muru jesteś małpą edycyjną! Wciąż widzę twoje zmiany.
MathCubes,
4

Problem z istniejącą odpowiedzią

Chociaż siedem lat temu istniała odpowiedź z trzema głosami większymi, nie została zaakceptowana, ponieważ powoduje migrację wszystkich otwartych okien na ekranie wyłączania do pozostałych aktywnych wyświetlaczy.

Jasność oparta na oprogramowaniu

Na laptopie możesz kontrolować jasność za pomocą karty graficznej sterującej panelem LCD. W przypadku zewnętrznych telewizorów i monitorów potrzebujesz rozwiązania programowego, aby zmniejszyć jasność do 0. Skręcenie do zera jest najbliższe Doszedłem do złudzenia, że ​​go wyłączę, zachowując aktywne okna na tym zewnętrznym wyświetlaczu.

Krótka wersja

Z wiersza poleceń (bez skryptów) użyj:

$ 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

Pokazuje listę nazw monitorów przypisanych przez xrandr. Teraz, jeśli chcesz DP-1-1wyłączyć jasność, użyj:

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

Skrypt bash Sony TV

Oto jeden z trzech skryptów, które napisałem:

#!/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"

Aby wyłączyć ekran, którego byś użył sony 0

Wywoływanie skryptu bez parametrów

Po wywołaniu skryptu bez parametrów wyświetla on xrandrnazwę ekranową wraz z bieżącą jasnością na czerwono. Możesz zmienić kolor czerwony na inny, modyfikując tę ​​linię:

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

Po setafzmianie na 1:

  • 2 na zielono
  • 3 dla pomarańczy
  • 4 dla niebieskiego itp.

Modyfikacja i instalacja skryptu

Zmień dwa wystąpienia w HDMI-0celu dopasowania nazwy użytkownika. Możesz uzyskać listę wszystkich ekranów wpisujących się xrandrw terminalu.

Umieść skrypt w katalogu na swojej ścieżce, takim jak:

/usr/local/bin/sony

Oznacz skrypt jako wykonywalny, używając:

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

Wybór katalogu: /usr/local/binvs~/bin

Podczas tworzenia skryptów /usr/local/binmusisz używać sudomocy. Lepszą alternatywą jest użycie katalogu, ~/binktóry jest skrótem dla /home/YourUserID/bin:

  • utwórz katalog ~/bin
  • zamknij terminal i otwórz go ponownie.
  • nowo utworzony katalog jest teraz na twojej ścieżce.
  • wszystkie skrypty, które utworzysz, ~/binmogą zostać utworzone na podstawie zwykłych uprawnień.
  • aby umożliwić wykonywanie skryptów, wystarczy użyć ( chmod +xzamiast tego chmod a+x( awszyscy użytkownicy)
WinEunuuchs2Unix
źródło
2
Dziękuję za Twoją odpowiedź. Nie znałem xrandr [...] --brightnessopcji. Pamiętaj, że mówiłeś w szczególności o wyświetlaczach Sony, ale --brightnesspowinien działać również na każdym innym wyświetlaczu. Testowałem --brightnessna moim laptopie i działało. Jednak --brightness 0nie wyłączyłem podświetlenia… - Testowałem również --brightnessna moim komputerze stacjonarnym: niestety ekrany były czarne tylko przez 1 lub 2 sekundy . Po tych 1–2 sekundach jasność jest resetowana automatycznie. Przypuszczam, czy to działa w dużym stopniu zależy od kombinacji GPU + sterownik + ekran.
myrdd
1
@myrdd Mam trzy skrypty Sony , Toshiba i Alien na dwa zewnętrzne wyświetlacze i wbudowany wyświetlacz laptopa. Tak, podświetlenie się nie wyłącza, więc nie dostajesz „czystej czerni”, ale jest blisko obejścia. Automatyczny reset trwający od 1 do 2 sekund nie wpływa na żaden z moich wyświetlaczy, ale działałem ze sterownikami nVidia dla wbudowanego portu HDMI nVidia i sterownika nVidia przejmującego kontrolę nad dwoma ekranami Intel HD530 iGPU - Thunderbolt3 i wbudowanym.
WinEunuuchs2Unix,
skrypt nie jest konieczny, wystarczy uruchomić xrandr, aby znaleźć identyfikator wyjścia, a następnie xrandr --output HDMI-1 --brightness 0uprościć odpowiedź
brauliobo
2
@ hydrauliobo Zamiast usuwania większości odpowiedzi, umieszczam krótką wersję na samej górze, co moim zdaniem jest kompromisem.
WinEunuuchs2Unix