We have machines running SDDM, the KDE/Plasma display manager. One user prefers Gnome as her desktop environment. There is no problem selecting that session when logging in. The screen however never turns off and goes to power save mode when the session is inactive. Apparently, the Gnome desktop environment requires GDM for full functionality.
Previously she started gnome-screensaver manually after logging in, but that program has been deprecated for a while, and is no longer part of the distribution. We have tried some other screensavers, but they seem to have problems, perhaps because they are made for the X11 environment and not working properly with Wayland. Xscreensaver for example starts drawing its saver screens, but does so even when the user is active! It never seems to enter the power save mode.
Does anyone know a solution for this? Is it possible to have the screen deactivated during inactivity when running a Gnome session but using SDDM as display manager? In our use case the actual locking isn’t important, but the power save mode of the monitor is.
It looks like xset might be a better tool to use from within a graphical environment. There is a hint that it can be used in ACPI event handlers here: acpid - ArchWiki
Also, just running xset in my terminal shows what appear to be some promising options:
$ xset
usage: xset [-display host:dpy] option ...
To turn bell off:
-b b off b 0
To set bell volume, pitch and duration:
b [vol [pitch [dur]]] b on
To disable bug compatibility mode:
-bc
To enable bug compatibility mode:
bc
To turn keyclick off:
-c c off c 0
To set keyclick volume:
c [0-100] c on
To control Energy Star (DPMS) features:
-dpms Energy Star features off
+dpms Energy Star features on
dpms [standby [suspend [off]]]
force standby
force suspend
force off
force on
(also implicitly enables DPMS features)
a timeout value of zero disables the mode
To set the font path:
fp= path[,path...]
To restore the default font path:
fp default
To have the server reread font databases:
fp rehash
To remove elements from font path:
-fp path[,path...] fp- path[,path...]
To prepend or append elements to font path:
+fp path[,path...] fp+ path[,path...]
To set LED states off or on:
-led [1-32] led off
led [1-32] led on
-led named 'name' led off
led named 'name' led on
To set mouse acceleration and threshold:
m [acc_mult[/acc_div] [thr]] m default
To set pixel colors:
p pixel_value color_name
To turn auto-repeat off or on:
-r [keycode] r off
r [keycode] r on
r rate [delay [rate]]
For screen-saver control:
s [timeout [cycle]] s default s on
s blank s noblank s off
s expose s noexpose
s activate s reset
For status information: q
To print version: -version
If setterm could work, I need help on how to run it. If I just run setterm --blank=2 in a terminal window it complains that the terminal type doesn’t support --blank. That makes sense, since it is talking to the pty. If I add the option --term linux and redirects to the vt < /dev/tty2 > /dev/tty2 there is no complaint, and some escape codes are written according to strace. But it doesn’t seem to have any effect. The --powerdown option is similarly ineffective in graphical mode as far as I can tell.
xset dpms … used to work for this purpose once upon a time, but seems to have gone away with wayland.
mimmi$ xset -q
…
DPMS (Energy Star):
Server does not have the DPMS Extension
My assumption is that the Xwayland server doesn’t forward these types of instructions, and some kind of Wayland way to activate screen saving is needed.
I guess that some such Wayland screen saving is what Gnome under GDM, and Plasma under SDDM, is doing. But unfortunately not in compatible ways, apparently. Gnome under SDDM doesn’t work. (I haven’t tried Plasma under GDM recently.)
busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 1
Other than that, all I can suggest is to verify that all your screensaver settings look right:
gsettings list-recursively | grep -i screensaver
Sorry that I cannot test any of these. My home system is not connected to a traditional monitor. It is connected to a 10+ year old TV by way of a surround sound audio decoder.
To begin with, I realise I have been bad in saying “thank you” for your attempts to help. I do appreciate your efforts!
gsettings didn’t reveal anything strange, but the pointer to busctl command was a good one! It did succeed in turning off the monitor.
Of course it didn’t activate by just moving the mouse, but after SSH:ing in from another machine and setting the necessary environment vatiables I was also able to turn it on again!
After digging a bit more near your pointers I found the org.gnome.Mutter.IdleMonitor DBus destination where I can see the inactivity time too. With those tools, I should be able to put together some little bash or python script to act as a simple screen saver meeting my needs.