Controlling individual monitors is not possible with xset ( and X11 actually)
As the title suggests, it is not possible for reasons of how xset
is built and due to the X11 functions it uses. If we look at the source code, xset
calls DPMSForceLevel(dpy,DPMSModeSuspend)
(line 557), and the display variable dpy
comes from XOpenDisplay()
function ( line 203 ), and that is by definition:
A server, together with its screens and input devices, is called a display.
In other words, xset
applies settings globally to the whole display, not individual Screens. It'd be necessary to change xset
source code in order for that to work. DPMS extensions themselves mostly seem to only call whole display, not individual screens, so it is not possible to even write custom code with X11 library.
Manually controlling that setting via /sys
subsystem also doesn't appear to be working
$ 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
Screens also are taken out of DPMS mode when key or mouse events occur, so considering that you may want to move your mouse or use keyboard, either of those actions would cause the monitor to leave DPMS mode.
Alternative workarounds
Best alternative (and actually physically working solution) is xrandr
- it could be used to control the individual "outputs". In particular,
xrandr --output VGA-1 -off
will set that output off. Yes, you've mentioned that you don't want to use this solution since it is not fast enough, however so far it is the best one available. It has couple of advantages:
- immune to key and mouse events
- independently controls outpus unlike
xset
The xrandr --output VGA-1 --brightness 0.1
will colorize the screen in such way that it appears off, even though --brightness
is a software solution, so the display is not actually dimmed at hardware level, nor it is off on hardware level. However, it does the job of blanking a screen and is also resistant to key/mouse events.
I've looked source code of Mate and Budgie screensavers, which are both forks of GNOME screensaver, however in either case they seem to be a software solution, since there's no mention of DPMS in the source code.