в Ubuntu 8/9 я пытаюсь написать демона на python, который отслеживает определенное состояние сети и информирует пользователя с помощью gtk.messagedialog. Я установил этот скрипт с помощью rc-update. Демон запускается при загрузке, но не показывает диалоговое окно даже после входа в систему. Я предполагаю, что init.d запускает мой демон на tty1, а гном недоступен. Попытался запустить диалог через подпроцесс, но, похоже, он наследует ту же среду запуска. Какая лучшая практика для такого рода вещей.
Процесс Python/Linux/Daemon пытается показать gtk.messagedialog
Ответы (3)
Если пять пользователей вошли в сеансы X, кто получит сообщение? Каждый?
Если кто-то вошел в систему локально, но использует только tty, а не X11, должен ли он увидеть это сообщение?
Если кто-то вошел в систему удаленно через ssh -X, чтобы запустить графическое приложение в своей собственной системе с вашего процессора, должен ли он увидеть это сообщение? Как бы вы донесли это до них?
Linux слишком гибок для вашего текущего подхода. Стандартный способ сделать это для любого пользователя, заинтересованного в типе сообщения, которое вы отправляете, запускает приложение, которое получает сообщение и отображает его способом по своему выбору. Dbus — это популярный способ настройки процесса обмена сообщениями. Таким образом, удаленные пользователи или пользователи, вошедшие в систему только в режиме TTY, по-прежнему имеют возможность просмотра сообщения.
Чтобы узнать, работает ли вообще ваш код, вы должны сначала попробовать запустить демон как обычную программу в графической оболочке (на рабочем столе GNOME).
Вы также можете вызвать zenity.
Вы можете использовать notify-send
(из пакета libnotify-bin
) для отправки уведомлений пользователям рабочего стола из вашего демона.