Ubuntu 17.04 > Notify-send и crontab

notify-send – удобная прога для отображения всяких уведомлений прямо на дисплее. Только она не работает в кронтабе, потому что cron идет в обход GUI, а notify-send хочет dbus. Для этого мы сделаем простой фикс.

1. Устанавливаем notify-osd

sudo add-apt-repository ppa:leolik/leolik
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libnotify-bin
pkill notify-osd

2. Устанавливаем notifyosdconfig

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install notifyosdconfig

notifyosdconfig заводится командой

notifyosdconf

Тут можно ставить всякие опции, если надо.

3. Сделаем файл dbus_get.sh, который надо включать при стартапе после залогивания. Для этого различные десктопы и оконные менеджеры имеют свои приспособления

#!/bin/sh

touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus

exit 0

4. Поставим разрешение на писание в папке .dbus/Xdbus

chmod -R a+w ~/.dbus/Xdbus

5. Засунем строчку в кронтаб

crontab -e
* * * * * DISPLAY=0:0 /bin/sh /home/alex/notify.sh

В кронтабе можно писать сразу команду, но мы сделаем отдельный файл, где можно программно чередовать различные уведомления. У меня он несложный:

6. notify.sh

#!/bin/bash

if [ -r "$HOME/.dbus/Xdbus" ]; then
  . "$HOME/.dbus/Xdbus"
fi

notify-send -i /home/alex/volk.jpg 'Прювет лунатикам' 'Волк'

Вообще для notify-send синтакс такой:

a) простой

notify-send 'Title of the message' 'Text of the message'

b) с иконкой

notify-send -i /home/alex/volk.jpg 'Прювет лунатикам' 'Волк'