あるプロセスから完全な DBUS にアクセスしています。問題は、別のユーザーから実行され、DBUS のセッションが異なることです。したがって、セッションが異なる場合、別のプロセスを介して DBUS を使用するアプリケーションにアクセスできません。この問題を解決する方法を見つけました: 一部のスクリプトは、メイン ユーザーからファイル dbus セッション データに書き込みます (システムの読み込み時に設定しました)。これがそのスクリプトです:
#!/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
ご覧のとおり、DBUS アプリケーションとして pidgin を使用しています。しかし、紫色のアプリケーションがないというエラーがスローされるため、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;
→</p>
unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023 No existing libpurple instance detected. unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023