This PR implements listening for systemd-inhibit idle block inhibits.
For simplicity I've decided that there's no need to retrieve details about inhibitors using ListInhibitors method in org.freedesktop.login1.Manager interface and it's enough to get list of block inhibit types using BlockInhibited property. This property is monitored using PropertyChanged signal. Also the property is read on hypridle start, so if there is already an inhibitor active, then idle is going to be inhibited right away.
This simplification causes that even if there are multiple idle inhibitors active, they're going to be only counted as one in hypridle (it inhibits on first active inhibitor and releases inhibit on deactivation of the last one). To check the list of active inhibitors one can use systemd-inhibit --list command.
I'm respecting ignore_dbus_inhibit setting in the same way the original Dbus ScreenSaver code does.
This PR implements listening for systemd-inhibit idle block inhibits.
For simplicity I've decided that there's no need to retrieve details about inhibitors using
ListInhibitors
method inorg.freedesktop.login1.Manager
interface and it's enough to get list of block inhibit types usingBlockInhibited
property. This property is monitored usingPropertyChanged
signal. Also the property is read on hypridle start, so if there is already an inhibitor active, then idle is going to be inhibited right away.This simplification causes that even if there are multiple idle inhibitors active, they're going to be only counted as one in hypridle (it inhibits on first active inhibitor and releases inhibit on deactivation of the last one). To check the list of active inhibitors one can use
systemd-inhibit --list
command.I'm respecting
ignore_dbus_inhibit
setting in the same way the original Dbus ScreenSaver code does.