Sto usando Arch Linux con KDE / Awesome WM. Sto cercando di mettermi
notify-send
al lavoro cron
.
Ho provato a impostare DISPLAY
/ XAUTHORITY
variabili e in esecuzione notify-send
con "sudo -u", il tutto senza risultati.
Sono in grado di chiamare in modo interattivo notifica-invio dalla sessione e ricevere notifiche.
FWIW, il cron job sta funzionando bene, cosa che ho verificato facendo eco ad un file temporaneo. È solo la "notifica-invio" che non funziona.
Codice:
[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 ~]$
Come puoi vedere l'eco prima e dopo aver inviato notifica ha funzionato.
Inoltre ho provato a impostareDISPLAY=:0.0
AGGIORNAMENTO: ho cercato un po 'di più e ho scoperto che DBUS_SESSION_BUS_ADDRESS deve essere impostato. E dopo aver codificato questo utilizzando il valore che ho ottenuto dalla mia sessione interattiva, il piccolo messaggio "ciao" ha iniziato a comparire sullo schermo ogni minuto!
Ma il problema è che questa variabile non è permanente per quel post, quindi proverò la soluzione di pipe indicata qui suggerita.
[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
Dal momento cron
che non sembra supportare la notifica-invio (almeno non direttamente), esiste qualche altro sistema di notifica più cron
amichevole che posso usare?
&>>/tmp/crontest
a alla riga di invio notifica e vedi se vengono visualizzatinotify-send
messaggi di errore.