Não é possível obter dados DBUS para o statuschange automático do pidgin

3

Estou usando um script baseado no trabalho publicado aqui: Atualize o status do pidgin usando o cron

Estou tentando fazer um script wicd que desconecte automaticamente antes da desconexão de Wi-Fi e reconecte na reconexão Wifi.

Mas, de alguma forma, o dbus / pidgin parece não conseguir encontrar a sessão do dbus, mesmo que a variável de ambiente esteja configurada.

Minha configuração:

  • Arch linux
  • Pidgin 2.9.0
  • Libpurple 2.9.0-2

Script de carregamento automático (executado no Xfce start):

#!/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

O arquivo tmp após o script runnign:

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

Ok, vamos entrar em outro ambiente:

[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.

chamada remoto-roxa em ambiente normal:

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

Alguma ideia do que poderia estar errado?

    
por SkaveRat 26.09.2011 / 19:19

2 respostas

1

A sessão DBus não pode ser compartilhada por usuários diferentes, foi assim que foi projetada.

Eu posso não ter sua solução atual, por que você está tentando fazer isso com o root?

Se sim, use su - USERNAME -c /path/to/this/script.sh para iniciar um script como este,

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

Isso funcionará para o usuário root.

P.S: por que você não configuraria o cron como o usuário que loggined através do pidgin ??

    
por 02.10.2012 / 11:55
0

Você não pode, tanto quanto eu saiba, conectar-se a outra sessão D-Bus de usuários. Então root @ eeepthought, sendo um usuário diferente, foi recusada a permissão para se conectar à sessão do D-Bus de skaverat @ eeepthought. Isso é tudo o que há de errado com o que você fez.

    
por 05.05.2012 / 02:40

Tags