【问题标题】:Linux Lock/Unlock events handlingLinux 锁定/解锁事件处理
【发布时间】:2015-09-21 03:31:20
【问题描述】:

目前我正在尝试在 linux 上记录系统锁定/解锁事件,在 mono c# 下。 我希望在dbus 的帮助下实现这一目标,在不同的桌面环境中使用不同的组件。我可以在带有 Unity 的 Ubuntu 上使用Ndesk.DBus api 这样做,但在 Xfce 桌面上似乎没有这样的信号。我在那里检查了dbus-monitor "type=signal",它在锁定/解锁方面完全没有任何用处。那么,是否有任何跨桌面的方式来记录系统事件(我还需要登录/注销和活动窗口更改)?

【问题讨论】:

  • NDesk.DBus 很久以前就被弃用了,取而代之的是 dbus-sharp
  • 是的,谢谢,但这不是问题的根源。

标签: c# linux mono dbus


【解决方案1】:

答案有点复杂,但理论上,有一种跨桌面的方式来处理用户会话事件,它是来自logind 守护进程的org.freedesktop.login1 对象。它通过系统总线发送所有需要的信号,至少它应该根据文档。但实际上并非如此。在不同的桌面上,不会发送一些不同的信号。大多数丢失的信号可能是从其他对象捕获的,例如锁定|解锁信号由各种屏幕保护程序守护程序发送。顺便说一句,在 Xfce 上 logind 发送此类信号,而不是 sreensaver。

【讨论】: