[GTK, libnotify] отправить нотификейшн из демона
Прописыванием DISPLAY ты лишь добиваешься того, что на сессионном (кстати откуда он?) бусе запускается твой демон, а не пользовательский.
Попробуй для эксперимента прописать демону правильный DBUS_SESSION_BUS_ADDRESS из своего env'а.
Можно еще посмотреть, как сделаны оповещения у авахи, когда он мрет при подключении/отключении интерфейса.
Вроде тебе надо просто найти "правильный" адрес клиентского демона.да, я примерно так и думал. так работает. надо придумать как это из демона подглядеть.
Прописыванием DISPLAY ты лишь добиваешься того, что на сессионном (кстати откуда он?) бусе запускается твой демон, а не пользовательский.
Попробуй для эксперимента прописать демону правильный DBUS_SESSION_BUS_ADDRESS из своего env'а.
Можно еще посмотреть, как сделаны оповещения у авахи, когда он мрет при подключении/отключении интерфейса.
хм, там как-то больно дофига, но если не получится первым способом, попробую.
спасибо.
dbus-send –system –dest=org.freedesktop.Hal –type=method_call –print-reply /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Получить массив, содержащий список контактов запущенного kopete:
dbus-send –dest=org.kde.kopete –type=method_call –print-reply /Kopete org.kde.Kopete.contacts
а мне понравилось.
1. узнаем PID gnome-session
2. смотрим в /proc/PID/environ и берем оттуда DBUS_SESSION_BUS_ADDRESS и заодно DISPLAY и устанавливаем себе.
3. посылаем нотифай
4. ?
5. PROFIT!
заодно DISPLAY и устанавливаем себеЭто обязательно? Просто интересно
это я на всякий случай, без него работает. просто пока не пробовал, будет ли работать для дисплея не на :0.0 (на втором логине или вообще при логине через MCP)
dbus-send –system –dest=org.freedesktop.Hal –type=method_call –print-reply /org/freedesktop/Hal/devices/computer
void 20:00:39 ~ % dbus-send –system –dest=org.freedesktop.Hal –type=method_call –print-reply /org/freedesktop/Hal/devices/computer 0
process 21907: arguments to dbus_message_new_signal were incorrect, assertion "_dbus_check_is_valid_path (path)" failed in file dbus-message.c line 1165.
This is normally a bug in some application using the D-Bus library.
Couldn't allocate D-Bus message
Оставить комментарий
Vadim69
демон стартует с ситемой с правами рута. возникла необходимость отправить из него нотифай текущему залогиненному в X-ы пользователю. как бы это сделать правильно?сначала в логи писалась ошибка: libnotify-Message: Unable to get session bus: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed. если в скрипте запуска демона дописать DISPLAY=:0.0, то все хорошо, ошибки не возникает(если вызывать notify_init заведомо после старта нотификейшн-демона, конечно но при этом стиль оформления нотифая - дефолтовый ГТК-шный.
есть вариант, но он мне не нравится: запускать при логине в гном еще один демон с правами юзера и читать им сообщения от основного демона и по получении нужного - рисовать нотифай. тогда все рисуется хорошо, как и должно, но мне это, повторюсь, не нравится.