我正在将Arch Linux与KDE / Awesome WM一起使用。我正在努力
notify-send
与cron
。
我试过设置DISPLAY
/ XAUTHORITY
变量,并notify-send
使用“ sudo -u” 运行,但都没有结果。
我可以从会话中以交互方式调用通知发送并获得通知。
FWIW,cron作业运行良好,我通过将内容回显到临时文件来进行验证。只是“通知发送”无效。
码:
[matrix@morpheus ~]$ crontab -l
* * * * * /home/matrix/scripts/notify.sh
[matrix@morpheus ~]$ cat /home/matrix/scripts/notify.sh
#!/bin/bash
export DISPLAY=127.0.0.1:0.0
export XAUTHORITY=/home/matrix/.Xauthority
echo "testing cron" >/tmp/crontest
sudo -u matrix /usr/bin/notify-send "hello"
echo "now tested notify-send" >>/tmp/crontest
[matrix@morpheus ~]$ cat /tmp/crontest
testing cron
now tested notify-send
[matrix@morpheus ~]$
如您所见,通知发送之前和之后的回显。
我也尝试设置DISPLAY=:0.0
更新:我进行了更多搜索,发现需要设置DBUS_SESSION_BUS_ADDRESS。在使用从我的交互式会话中获得的值对它进行硬编码之后,每分钟都会在屏幕上弹出小小的“ hello”消息!
但是要注意的是,该变量不是该帖子的永久变量,因此我将尝试在那里建议的命名管道解决方案。
[matrix@morpheus ~]$ cat scripts/notify.sh
#!/bin/bash
export DISPLAY=127.0.0.1:0.0
export XAUTHORITY=/home/matrix/.Xauthority
export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-BouFPQKgqg,guid=64b483d7678f2196e780849752e67d3c
echo "testing cron" >/tmp/crontest
/usr/bin/notify-send "hello"
echo "now tested notify-send" >>/tmp/crontest
既然cron
似乎不支持通知发送(至少不直接支持),是否有其他一些cron
我可以使用的更友好的通知系统?
&>>/tmp/crontest
到通知发送行,看看是否notify-send
给出任何错误消息。