私は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
ベストアンサー1
この変数を設定する必要がありますDBUS_SESSION_BUS_ADDRESS
。デフォルトでは、cronはこの変数にアクセスできません。この問題を解決するには、次のスクリプトをどこかに置き、ユーザーがログインしたときに呼び出します。素晴らしいそしてrun_once
Wikiに言及されている機能です。関数が必要以上に呼び出されても害にならないので、どんなアプローチでも可能です。
#!/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
これにより、必須のDbus環境変数を含むファイルが生成されます。次に、cronによって呼び出されたスクリプトからスクリプトを取得し、変数を取得します。
if [ -r "$HOME/.dbus/Xdbus" ]; then
. "$HOME/.dbus/Xdbus"
fi