如何在X11 / X.org上获得有关登录/注销和显示锁定/解锁的通知?

时间:2018-08-06 06:30:01

标签: x11 xorg

Windows具有SENS API,应用程序可以使用该API来获取有关登录/注销的通知,并显示锁定/解锁事件。 X11 / X.org或Linux桌面中通用的接口和API是否有类似的东西?我基本上希望有什么可以让我在用户会话中对此做出反应。

1 个答案:

答案 0 :(得分:1)

Logind(并非所有发行版都使用)在系统DBus上有一个对象。该对象的信号可用于任何程序,并记录为:

  

每次创建或删除会话,用户登录或注销或席位为每次时,都会发送SessionNew(),SessionRemoved(),UserNew(),UserRemoved(),SeatNew(),SeatRemoved()信号。添加或删除。

https://www.freedesktop.org/wiki/Software/systemd/logind/

如果不使用登录名,则如sanjeev建议的那样,PAM可能是您的下一个最佳选择。他链接到https://unix.stackexchange.com/questions/162783/how-can-i-detect-a-user-login-programmatically。但是,请注意,这需要更改系统配置,不能仅由任何程序进行订阅。

与屏幕保护程序进行交互的便携性甚至更低。例如,GNOME在用户DBus实例上公开一个屏幕保护程序对象。也可以通过“ SCREEN-SAVER”扩展名从X11服务器获取事件,但是Wayland当然不可用。

https://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html(Google随机结果)

https://www.x.org/releases/X11R7.7/doc/scrnsaverproto/saver.html#Events