Процесс Python / Linux / Daemon пытается показать gtk.messagedialog - PullRequest
0 голосов
/ 23 января 2010

в Ubuntu 8/9, Я пытаюсь написать демон на Python, который отслеживает определенное состояние сети и информирует пользователя с помощью gtk.messagedialog. Я установил этот скрипт с помощью rc-update. Демон запускается при загрузке, но не показывает диалоговое окно даже после того, как я войду в систему. Я предполагаю, потому что init.d запускает мой демон в tty1, а гном недоступен. Попытка запустить диалог через подпроцесс, но, похоже, он наследует ту же среду выполнения. Какая лучшая практика для такого рода вещей.

Ответы [ 3 ]

3 голосов
/ 23 января 2010

Если пять пользователей вошли в X сессий, кто получит сообщение? Каждый

Если кто-то вошел в систему локально, но использует только tty, а не X11, увидит ли он сообщение?

Если кто-то удаленно вошел в систему через ssh -X для запуска графического приложения в своей системе вне вашего ЦП, должно ли оно увидеть сообщение? Как бы вы им это передали?

Linux слишком гибок для вашего текущего подхода. Стандартный способ сделать это - для любого пользователя, который интересуется типом отправляемого вами сообщения, для запуска приложения, которое получает сообщение и отображает его способом по своему выбору. Dbus - это популярный способ настройки процесса обмена сообщениями. Таким образом, удаленные пользователи или пользователи, вошедшие в систему в режиме TTY, могут по-прежнему видеть сообщение.

0 голосов
/ 26 января 2010

Вы можете использовать notify-send (из пакета libnotify-bin) для отправки уведомлений пользователям рабочего стола от вашего демона.

0 голосов
/ 23 января 2010

Чтобы выяснить, работает ли ваш код вообще, вы должны сначала попробовать запустить демона как обычную программу в графической оболочке (на рабочем столе GNOME).

Вы также можете позвонить zenity .

...