Looks like this has resolved itself since logind provides no way to receive a signal when the lid state changed, so we have to use something else.
@nclarius, have you verified that? This thread on the upower lid removal MR suggests that the logind D-Bus interface should indeed emit a PropertiesChanged
signal, and that would explain why the gnome-settings-daemon code doesn't do any crazy polling.
The LidClosed
property according to login1 interface docs is annotated with @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
, but the D-Bus specification doesn't say that no signal won't be emitted for sure. It just doesn't guarantee that it will be emitted:
If set to
false
, theorg.freedesktop.DBus.Properties.PropertiesChanged
signal, see the section called “org.freedesktop.DBus.Properties” is not guaranteed to be emitted if the property changes.
We may want to double-check on the systemd issue tracker about why they're marking it as "false"
if indeed it's supposed to get emitted reliably. But perhaps there's still a path forward for us that doesn't involve reimplementing the entire thing from scratch.