目前我正在尝试在单声道c#下记录linux上的系统锁定/解锁事件。
我希望在dbus
的帮助下实现这一点,在不同的桌面环境中使用不同的组件。我可以使用Ndesk.DBus
api在Ubuntu和Unity上这样做,但似乎在Xfce桌面上没有这样的信号。我在那里检查了dbus-monitor "type=signal"
,它在锁定/解锁时完全没有任何用处。那么,是否有任何跨桌面方式来记录系统事件(我还需要登录/注销和活动窗口更改)?
答案 0 :(得分:0)
答案有点复杂,但从理论上讲,有一种跨桌面方式来处理用户会话事件,它是来自org.freedesktop.login1
守护进程的logind
对象。它通过系统总线发送所有需要的信号,至少它应该根据文档。但实际上并非如此。在不同的桌面上,不会发送一些不同的信号。大多数丢失的信号可能会从其他对象中捕获,例如锁定|解锁信号由各种ScreenSaver守护进程发送。顺便说一下,在Xfce上,logind发送这样的信号,而不是sreensaver。