Libpurple не работает с Bash - PullRequest
2 голосов
/ 03 июля 2010

Я использую доступ к основному 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

Как вы могли заметить, я использую 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

Ответы [ 2 ]

1 голос
/ 03 июля 2010

Я думаю, это потому, что вы используете / который является корнем файловой системы.То, что вы хотите, это ./ или абсолютный путь, как сказал Деннис.

Вы также можете использовать $ PWD / file или $ {pwd} / file

1 голос
/ 03 июля 2010

На основании вашего обновления работает команда source. Поэтому проблема связана с purple-remote или libpurple или некоторой зависимостью, а не с вашим скриптом Bash.

Не рекомендуется создавать такие файлы в корневом каталоге. Попробуйте выбрать более подходящее место для вашего файла. Возможно одно из следующего:

  • /home/username/.Xdbus
  • /var/local/.Xdbus - возможно, вам придется добавить своего пользователя в группу, которой принадлежит этот каталог
  • /tmp/.Xdbus
...