在 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 上找不到文档。我能做的最好的事情是看到EndSessionQuery
、EndSession
和EndSessionResponse
的混乱,但这些都带有布尔值,因此它们不能完全被信任(也许程序说它不希望用户注销?)最重要的是,如果没有程序打开怎么办?这太不靠谱了。
我想要的是监听用户注销时总会发生的信号。有人可以提供那个信号吗?目前我正在运行这个命令:
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-monitor 中的'sender=:1.478' 是啥意思?