Sterowanie poszczególnymi monitorami nie jest możliwe w Xset (a właściwie X11)
Jak sugeruje tytuł, nie jest to możliwe ze względu na sposób xset
budowania i ze względu na używane funkcje X11. Jeśli spojrzymy na kod źródłowy, xset
wywołania DPMSForceLevel(dpy,DPMSModeSuspend)
( wiersz 557 ), a zmienna wyświetlana dpy
pochodzi z XOpenDisplay()
funkcji ( wiersz 203 ), a to z definicji :
Serwer wraz z ekranami i urządzeniami wejściowymi nazywany jest wyświetlaczem.
Innymi słowy, xset
stosuje ustawienia globalnie do całego wyświetlacza, a nie poszczególnych ekranów. xset
Aby to działało, konieczna będzie zmiana kodu źródłowego. Wydaje się, że same rozszerzenia DPMS wywołują tylko cały ekran, a nie pojedyncze ekrany, więc nie można nawet napisać niestandardowego kodu za pomocą biblioteki X11.
/sys
Wydaje się, że ręczne kontrolowanie tego ustawienia za pośrednictwem podsystemu również nie działa
$ sudo bash -c 'echo Off > /sys/class/drm/card0-VGA-1/dpms'
[sudo] password for admin:
bash: /sys/class/drm/card0-VGA-1/dpms: Permission denied
Ekrany są również usuwane z trybu DPMS, gdy wystąpią zdarzenia związane z klawiszem lub myszą, więc biorąc pod uwagę, że możesz chcieć poruszyć myszą lub użyć klawiatury, którekolwiek z tych działań spowoduje, że monitor opuści tryb DPMS.
Alternatywne obejścia
Najlepszą alternatywą (i faktycznie działającym fizycznie rozwiązaniem) jest xrandr
- można jej użyć do kontroli poszczególnych „wyjść”. W szczególności,
xrandr --output VGA-1 -off
wyłączy to wyjście. Tak, wspomniałeś, że nie chcesz korzystać z tego rozwiązania, ponieważ nie jest ono wystarczająco szybkie, jednak jak dotąd jest ono najlepsze z dostępnych. Ma kilka zalet:
- odporny na zdarzenia klawiszy i myszy
- niezależnie kontroluje outpus w przeciwieństwie do
xset
xrandr --output VGA-1 --brightness 0.1
Będzie pokolorować ekran w taki sposób, że wydaje się, chociaż --brightness
jest oprogramowaniem, więc wyświetlacz nie jest faktycznie wygaszone na poziomie sprzętowym, ani nie jest ona wyłączona na poziomie sprzętowym. Wykonuje jednak funkcję wygaszania ekranu i jest również odporny na zdarzenia klawiszy / myszy.
Szukałem kodu źródłowego wygaszaczy ekranu Mate i Budgie, które są rozwidleniami wygaszacza ekranu GNOME, jednak w obu przypadkach wydają się być rozwiązaniem programowym, ponieważ w kodzie źródłowym nie ma wzmianki o DPMS.