hyprwm / hypridle

Hyprland's idle daemon
BSD 3-Clause "New" or "Revised" License
403 stars 25 forks source link

Add support for systemd-inhibit idle block inhibits #57

Closed yawor closed 6 months ago

yawor commented 6 months ago

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.