无法获取 pidgin 自动状态更改的 DBUS 数据

无法获取 pidgin 自动状态更改的 DBUS 数据

我正在使用基于此处发布的工作的脚本:使用 cron 更新 pidgin 状态

我正在尝试制作一个 wicd 脚本,该脚本会在 Wifi 断开之前自动断开连接,并在 Wifi 重新连接时重新连接。

但不知何故 dbus/pidgin 似乎无法找到 dbus 会话,即使设置了环境变量。

我的设置:

  • 拱门Linux
  • 洋泾浜2.9.0
  • 利紫2.9.0-2

自动加载脚本(在 Xfce 启动时运行):

#!/bin/bash
touch /tmp/dbus_session_data
env | grep DBUS_SESSION_BUS_ADDRESS > /tmp/dbus_session_data
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /tmp/dbus_session_data

运行脚本后的 tmp 文件:

[skaverat@eeepthought ~]$ cat /tmp/dbus_session_data 
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-gZMqzhdS2S,guid=9b8b3169f14346902127832000000043
export DBUS_SESSION_BUS_ADDRESS

好吧,我们进入另一个环境:

[root@eeepthought ~]# env | grep DBUSD
[root@eeepthought ~]# source /tmp/dbus_session_data 
[root@eeepthought ~]# env | grep DBUS
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-gZMqzhdS2S,guid=9b8b3169f14346902127832000000043
[root@eeepthought ~]# purple-remote getstatus
No existing libpurple instance detected.

紫色-正常环境下远程调用:

[skaverat@eeepthought ~]$ purple-remote getstatus
available

知道可能出什么问题吗?

答案1

DBus 会话不能为不同的用户共享,这就是它的设计方式。

我可能无法获得您当前的解决方案,为什么您要尝试使用 root 来执行此操作?

如果是这样,请使用su - USERNAME -c /path/to/this/script.sh启动这样的脚本,

#!/bin/bash
. ~/.dbus/session-bus/*
purple-remote getstatus

这适用于 root 用户。

PS:为什么不将 cron 设置为通过 pidgin 登录的用户?

答案2

据我所知,您无法连接到另一个用户的 D-Bus 会话。因此 root@eeepthought 作为另一个用户被拒绝连接到 skaverat@eeepthought 的 D-Bus 会话。这就是你所做的事情的全部错误。

相关内容