5

我想编写一个在后台运行并检测用户何时注销的脚本。我在 dbus-monitor 上找不到文档。我能做的最好的事情是我看到一连串的EndSessionQuery, EndSessionEndSessionResponse但是这些都带有布尔值,所以它们不能完全被信任(也许一个程序说它不希望用户注销?)除此之外, 如果没有程序打开怎么办?这太不靠谱了。

我想要的是监听用户注销时总会发生的信号。有人可以提供那个信号吗?目前我正在运行这个命令:

dbus-monitor --session \
    "type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
        myprog

它捕获屏幕保护程序事件。但我也想赶上注销。我希望是这样的:

dbus-monitor --session \
    "type='signal',interface='org.gnome.Session',member='LogoutSuccess'" \
    "type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
        myprog
4

2 回答 2

4

在此处查找名为 org.gnome.SessionManager.* 的文件:http ://git.gnome.org/browse/gnome-session/tree/gnome-session

org.gnome.SessionManager 接口中有一个 SessionOver 信号,这可能是您需要的。

您是在寻找来自会话管理器的正常“会话即将结束、退出或提出提示或其他内容”请求,还是“会话现在真正结束,再见”信号?

于 2013-02-21T18:40:21.167 回答
2

这是一个旧线程,但我正在添加一些信息以防其他人需要它。

我有同样的需求,但最终实现了一个 Session Manager DBus 客户端作为一个易于使用的脚本。它在注销时执行用户定义的脚本。准备使用的应用程序在 GitHub 上共享。

Gnome EndSession DBus 客户端

于 2015-02-20T19:33:48.887 回答