Я использую доступ к тщательному 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
Не так ли? Что вы видите, если «echo $ DBUS_SESSION_BUS_ADDRESS» сразу после поиска /.Xdbus? Или «cat /.Xdbus» прямо перед его поиском? –
@ owen-s мой пост обновлен – Ockonal