Cron не показывает notify-send уведомления [Решено]

Категория: Linux

Проблема кроется в том, что 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

категория: Linux