En Ubuntu 14.04, exportar la pantalla no funcionó para mí. A continuación se muestra un script cron que estoy usando para apagar una máquina virtual cuando el estado de la batería de una computadora portátil es demasiado bajo. La configuración de línea DBUS_SESSION_BUS_ADDRESS es la modificación que finalmente hizo que las advertencias funcionaran correctamente.
#!/bin/bash
# if virtual machine is running, monitor power consumption
if pgrep -x vmware-vmx; then
bat_path="/sys/class/power_supply/BAT0/"
if [ -e "$bat_path" ]; then
bat_status=$(cat $bat_path/status)
if [ "$bat_status" == "Discharging" ]; then
bat_current=$(cat $bat_path/capacity)
# halt vm if critical; notify if low
if [ "$bat_current" -lt 10 ]; then
/path/to/vm/shutdown/script
echo "$( date +%Y.%m.%d_%T )" >> "/home/user/Desktop/VM Halt Low Battery"
elif [ "$bat_current" -lt 15 ]; then
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
notify-send -i "/usr/share/icons/ubuntu-mono-light/status/24/battery-caution.svg" "Virtual machine will halt when battery falls below 10% charge."
fi
fi
fi
fi
exit 0
La línea relevante está aquí:
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
Encontré la solución aquí:https://askubuntu.com/a/346580/255814
Solo esto me funciona (Xubuntu)
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME xfce4-session)/environ)"; notify-send "hello world"
Si está en el entorno gnome, necesita cambiar xfce4-session
a gnome-session
consulte:https://askubuntu.com/questions/298608/notify-send-doesnt-work-from-crontab
Encontré la respuesta:
$ crontab -l
# m h dom mon dow command
* * * * * export DISPLAY=:0.0 && export XAUTHORITY=/home/ravi/.Xauthority && sudo -u ravi /usr/bin/notify-send Hey "How are you"
Uso i3 en Ubuntu 18.04. Mi forma de resolver esto es:
* * * * * XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "this is dog!"
Edición 2020:todavía lo uso en Ubuntu 20.04.