我正在使用從某個進程訪問徹底的DBUS。麻煩的是,它從另一個用戶運行,並且DBUS的會話與他們不同。因此,如果會話不同,我無法訪問通過另一個進程使用DBUS的應用程序。我找到了解決這個問題的方法:一些腳本寫入主用戶的文件dbus會話數據(我在系統加載時設置它)。下面是該腳本:Libpurple不能從bash中工作
#!/bin/bash
touch /.Xdbus
chmod 666 /.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > /.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /.Xdbus
下面是該文件的一個例子:
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
export DBUS_SESSION_BUS_ADDRESS
現在我只是從該文件執行的數據和雙方DBUS會議將是相同的。這裏有一些麻煩:
#!/bin/bash
if [ -f /.Xdbus ]
then
source /.Xdbus; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"
else
echo "File doesnt exist"
fi
正如你所看到的,我使用pidgin作爲DBUS應用程序。但它會拋出錯誤,沒有紫色應用程序,所以DBUS會話不同!所以要求:
source /.Xdbus
沒有工作。爲什麼?
UPD
source /.Xdbus; echo $DBUS_SESSION_BUS_ADDRESS; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"; echo $DBUS_SESSION_BUS_ADDRESS;
→
unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023 No existing libpurple instance detected. unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
不是嗎?如果您在採購/.Xdbus之後立即「echo $ DBUS_SESSION_BUS_ADDRESS」,您會看到什麼?或在購買之前購買「cat /.Xdbus」? – 2010-07-03 16:51:07
@ owen-s我的帖子升級了 – Ockonal 2010-07-03 17:04:27