在 Gnome 中,dbus-monitor 上的啥信号表明用户正在注销?

Posted

技术标签:

【中文标题】在 Gnome 中,dbus-monitor 上的啥信号表明用户正在注销?【英文标题】:In Gnome, what signal on dbus-monitor indicates the user is logging out?在 Gnome 中,dbus-monitor 上的什么信号表明用户正在注销? 【发布时间】:2012-12-28 15:55:17 【问题描述】:

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

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

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

【问题讨论】:

您是否查看了注销期间系统总线上发送的内容?控制台套件可能会发送一些东西:sudo dbus-monitor --system 【参考方案1】:

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

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

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

【讨论】:

我正在寻找“每个人都决定退出。这真的发生了。”信号。 其实我弄错了。 “这真的发生了”信号是来自 org.gnome.SessionManager.ClientPrivate 的“停止” - 请参阅 gnome-session/gnome-session/gsm-dbus-client.c:dbus_client_stop()。【参考方案2】:

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

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

Gnome EndSession DBus client

【讨论】:

以上是关于在 Gnome 中,dbus-monitor 上的啥信号表明用户正在注销?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 dbus-monitor 输出中排除某些接口/地址?

dbus-monitoring 循环自动退出

DBus-monitor 监视蓝牙活动

dbus-monitor 中的'sender=:1.478' 是啥意思?

Qt - Linux 上的 Spinbox 外观(gnome)

gnome 上的 javafx 应用程序名称