Proposal: passing user idle time to systemd-logind

Harald Sitter sitter at kde.org
Thu May 23 09:59:17 BST 2019


Relevant bit from wiki

"Whenever the session gets idle the DE should invoke the
SetIdleHint(True) call on the respective session object on the session
bus. This is necessary for the system to implement auto-suspend when
all sessions are idle. If the session gets used again it should call
SetIdleHint(False). A session should be considered idle if it didn't
receive user input (mouse movements, keyboard) in a while. See the Bus
API of logind for further details."

gnome example https://github.com/GNOME/gnome-session/blob/master/gnome-session/gsm-systemd.c#L461

A simple way to do this would possibly be to also set idleness when
ksmserver invokes the screenlocker.


On Wed, May 22, 2019 at 6:13 PM Germano Massullo
<germano.massullo at gmail.com> wrote:
>
> Hello, I am writing to you to propose the following reasoning, hoping
> that it can help making easier (just a bit) third parties development
> work on Linux.
> I am currently developing BOINC client user idle time detection on
> Linux systems (both graphical or tty sessions)
> After some studies I started writing a little piece of code that that
> is able to print on standard output the user idle time by retrieving
> it from systemd-logind IdleSinceHint property (that is exposed on
> DBus). By the way I found out that this value was always 0 [1], so I
> asked why [2]. I have been told that logind relies on the desktop
> environment to pass this information.
> Many d.e. expose user idle time to their own DBus path, (i.e.
> org.gnome.Mutter.IdleMonitor), so I will be forced to write code that
> depends on the specific desktop environment. Since:
> 1) systemd-logind is just ready for exposing user idle time;
> 2) for a developer writing code for Linux it would be much easier to
> retrieve user idle time from a unique place rather than having to deal
> with all various desktop environments;
> I would like to ask you what do you think about passing the user idle
> time to logind [3] [4] ?
>
> Best regards
>
> [1]: you can try with system console command
> $ sleep 2 && gdbus introspect --system --dest org.freedesktop.login1
> --object-path /org/freedesktop/login1 | grep IdleSinceHint
> [2]: https://lists.freedesktop.org/archives/systemd-devel/2019-May/042726.html
> [3]: https://www.freedesktop.org/wiki/Software/systemd/writing-desktop-environments/
> [4]: https://www.freedesktop.org/wiki/Software/systemd/writing-display-managers/


More information about the Plasma-devel mailing list