Russian Qt Forum
Май 19, 2024, 11:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: dbus session bus address?  (Прочитано 7355 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Июнь 17, 2009, 22:31 »

Вообщем ситуация такая. Захожу на удалённую машину по ssh. X11 сессия экспортится, так что я могу запускать там гуи проги и они отображаются у меня на экране.

Проблема в том, что эти гуи проги пытаются подсоединится к dbus сервисам, которые запущены на удалённой машине, и у них ничего не получается, т.к. переменная DISPLAY в ssh сессии установлена-то другая, и они пытаются в итоге соединится с сервисами на моей машине. Очевидно, надо указать явным образом, через переменную окружения, куда конектится dbus клиенту:

root@ssh# DBUS_SESSION_BUS_ADDRESS=бла ./guiprog

так вот как узнать чему равен DBUS_SESSION_BUS_ADDRESS для удалённой dbus сессионной шины? Если есть другие способы решить эту проблему, то какие? Спасибо.
Записан
xAndyx
Гость
« Ответ #1 : Июнь 24, 2009, 14:39 »

Тебе для удалённого сеанса нужно на удалённой машине запустить свой session-daemon D-Bus. А через TCP/IP D-BUS не работает.
man dbus-launch
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Июнь 24, 2009, 17:40 »

А через TCP/IP D-BUS не работает.

Работает.

Только в моём случае он работает локально на удалённой машине, вызовы-то все транслируются туда. Единственная проблема в $DISPLAY, которая портит связь с тамошней dbus шиной, поэтому всё что нужно - это установить перед запуском своей программы переменную DBUS_SESSION_BUS_ADDRESS. Пока что нашёл мегакостыль, может кому понадобится. Если предположить, что на удалённой машине запущен openbox, или другой wm, то следующим скриптом можно получить DBUS_SESSION_BUS_ADDRESS:

Код
Bash
root@ssh# cat getdbus
#!/bin/sh
 
pid=`pidof -s -x openbox`
DBUS_SESSION_BUS_ADDR=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ 2>/dev/null | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
echo export DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDR"
 

Используем:

Код
Bash
root@ssh# ./getdbus
export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-jFaT5geYRw,guid=0e9f4dde54200fb37c78ba074a415936
root@ssh# eval `./getdbus`
root@ssh# ./guiprog
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.064 секунд. Запросов: 19.