Cron не показывает notify-send уведомления [Решено]
Проблема кроется в том, что Cron выполняет скрипты в ограниченном сессионном окружении. Поэтому нам нужно будет перед отображением уведомления импортировать переменные окружения которые относятся к настройке XWin.
Создаем shell-скрипт ~/bin/save_dbus_env_vars.sh
, который будет сохранять нужные переменные при старте нашей сессии:
#!/bin/bash
echo 'export' $(env | grep DBUS_SESSION_BUS_ADDRESS) > $HOME/.Xdbus
echo 'export' $(env | grep XAUTHORITY) >> $HOME/.Xdbus
echo 'export' $(env | grep DISPLAY) >> $HOME/.Xdbus
Здесь мы сохраняем переменные окружения DBUS_SESSION_BUS_ADDRESS, XAUTHORITY, DISPLAY для последующей инициализации ограниченного окружения сессии CRON. Скрипт сохраняет в файле ~/.Xdbus что-то типа следующего:
export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-tk5yDrson9
export XAUTHORITY=/home/USER/.Xauthority
export DISPLAY=:0
Добавьте этот скрипт в автозапуск через утилиту "Startup Applications" (Автоматически запускаемые приложения). Программа сохраняет .desktop файл в каталоге ~/.config/autostart
. Для запуска приложения "Startup Applications" из консоли выполните:
gnome-session-properties
Запустите разово скрипт save_dbus_env_vars.sh
вручную, чтобы сохранить нужные переменные в файл ~/.Xdbus
.
Теперь, чтобы отображались сообщения утилиты notify-send
при запуске из Cron, нужно будет импортировать переменные окружения:
#!/bin/bash
source $HOME/.Xdbus
notify-send "My message"
Внимание!
Импорт переменных непосредственно в crontab файле почему-то не работает!
* * * * * source $HOME/.Xdbus; $HOME/Dropbox/DEVLIB/BASH/motivator.sh
Буду признателен за подсказку..
#lib-notify, #notify-send, #crontab