А через 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