我想编写一个在后台运行的脚本,并检测用户何时注销。我无法在dbus-monitor上找到文档。我能做的最好的事情就是我发现了一阵EndSessionQuery
,EndSession
和EndSessionResponse
,但这些都带有布尔值,所以它们不能完全被信任(可能一个程序说它不希望用户注销?)并且最重要的是,如果没有程序打开怎么办?这太不可靠了。
我想要的是听取用户注销时总会发生的信号。有人可以提供这个信号吗?目前我正在运行此命令:
dbus-monitor --session \
"type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
myprog
捕获ScreenSaver事件。但我也想赶上注销。我希望的是:
dbus-monitor --session \
"type='signal',interface='org.gnome.Session',member='LogoutSuccess'" \
"type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" | \
myprog
答案 0 :(得分:4)
查找名为org.gnome.SessionManager的文件。*此处:http://git.gnome.org/browse/gnome-session/tree/gnome-session
接口org.gnome.SessionManager中有一个SessionOver信号,可能就是你需要的信号。
您是否正在寻找正常的“会话结束,退出自己或提出提示或某事”来自会话管理员的请求,或“会话现在真的结束,再见”信号?
答案 1 :(得分:1)
这是一个旧线程,但我正在添加一些信息以防其他人需要它。
我有相同的需求,但最终实现了一个Session Manager DBus客户端作为一个易于使用的脚本。它在注销时执行用户定义的脚本。准备使用的应用程序在GitHub上共享。