Notify-send doesn't work from crontab
Things seem to be different on 13.04, at least in Gnome Shell.
First, this is what env
prints when run from user zzyxy
's (not root's) cron job:
HOME=/home/zzyxy
LOGNAME=zzyxy
PATH=/usr/bin:/bin
XDG_RUNTIME_DIR=/run/user/zzyxy
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/zzyxy
To get notify-send
to work, it seems to be necessary to set the DBUS_SESSION_BUS_ADDRESS
environment variable, as per DahitiF's comment on ubuntuforums.org. Just prepend the following to your actual job description:
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
It doesn't seem to be necessary to set DISPLAY
.
Command notify-send
would not show the message on your screen when started by cron.
Just add target display at the top of your script, for example:
export DISPLAY=:0
Commands need to reference their location. So notify-send
needs to be /usr/bin/notify-send
All commands need to have their full path.
Use the whereis notify-send
command to see where your commands "live"
I use i3 on Ubuntu 18.04 and 20.04. My way to solve this is:
* * * * * XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "this is dog!"