LINUX.ORG.RU

Передача dbus-оповещений между пользователями

 


0

1

Дано:

  • Один пользователь, от имени которого запущены X Window
  • Другой пользователь (имеющий доступ к текущему DISPLAY), от имени которого запущено некоторое GUI-приложение, показывающее оповещения через dbus. Но dbus наплевать на текущий DISPLAY.

Хочется странного: чтобы dbus-оповещения другого пользователя показывались на экране. Т. е., чтобы имело видимый эффект, например, следующее:

sudo -u ihateslack notify-send 'Заголовок' 'Текст' --icon=dialog-information
★★★★★

Нужно сперва получить и указать переменную DBUS_SESSION_BUS_ADDRESS сессии текущего пользователя. Вбей в поиске по сайту DBUS_SESSION_BUS_ADDRESS, там есть примеры.

monday
()
Ответ на: комментарий от monday

Спасибо за наводку.

Одной DBUS_SESSION_BUS_ADDRESS, похоже, недостаточно, но попробую поразбираться со сложными конфигами — благо, тема на сайте уже действительно неоднократно поднималась.

Bass ★★★★★
() автор топика
Ответ на: комментарий от Bass

Одной DBUS_SESSION_BUS_ADDRESS, похоже, недостаточно

В современных системах должно быть достаточно. Разумеется, нужно обратить внимание на права доступа к шине.

Но dbus наплевать на текущий DISPLAY

А $DISPLAY вообще никакого отношения к шине сейчас не имеет. Это раньше использовался процесс X11 dbus autolaunch, во время которого адрес сессионной шины записывался в свойства корневого окна.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Разумеется, нужно обратить внимание на права доступа к шине.

А вот здесь можешь рассказать чуть подробней (или ткнуть в документацию)?

Bass ★★★★★
() автор топика
Ответ на: комментарий от Bass

Скорее всего, notify-send тоже нужно запускать от имени пользователя X-сессии, правда, у тебя в примере это указано. Возможно, стоит попробовать через su su user -c 'notify-send ...'

monday
()
Ответ на: комментарий от Bass

С ходу я тебе и сам не скажу. Сначала попробуй просто запустить от имени целевого пользователя (и не забыть выставить DBUS_SESSION_BUS_ADDRESS, а также не забыть про то, что sudo фильтрует переменные, т. е. делать не VAR=VALUE sudo ..., а sudo VAR=VALUE ...).

Если заработает, а без смены пользователя не заработает — пойду читать маны и медитировать на список файлов в пакете dbus.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.