シナモンで通知転送が機能しません。

シナモンで通知転送が機能しません。

を使用していますLinux Mint 17
50分ごとに、しばらく休む時間ごとに1時間ごとに通知を受けたいです。

これは予約されたこと:

nazar@desktop ~ $ crontab -l

DISPLAY=:0.0
XAUTHORITY=/home/matrix/.Xauthority

00 13 * * * /home/nazar/Documents/scripts/lunch_break_job.sh # JOB_ID_2
50 * * * * /home/nazar/Documents/scripts/pc_break.sh # JOB_ID_1
* * * * * /home/nazar/Documents/scripts/cron_job_test.sh # JOB_ID

次のスクリプトは次のとおりです/home/nazar/Documents/scripts/cron_job_test.sh

#!/bin/bash

export DISPLAY=0.0
export XAUTHORITY=/home/matrix/.Xauthority

if [ -r "$HOME/.dbus/Xdbus" ]; then
  . "$HOME/.dbus/Xdbus"
fi

/usr/bin/notify-send -i "hello"

この関数の断片は次のとおりです。

if [ -r "$HOME/.dbus/Xdbus" ]; then
  . "$HOME/.dbus/Xdbus"
fi

ぜひ確認してDBUS_SESSION_BUS_ADDRESSご利用ください。

この回答によるとスクリプトを実行しましたが、Dbusスクリプトは次の場所に保存されました$HOME/.dbus/Xdbus

nazar@desktop ~ $ cat $HOME/.dbus/Xdbus
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-flm7sXd0I4,guid=df48c9c8d751d2785c5b31875661ebae
export DBUS_SESSION_BUS_ADDRESS

すべてが機能するはずです。私が失ったものが見つかりません。今は通知が機能しないからです。

端末ではうまく動作します。

ここに画像の説明を入力してください。

この問題をどのように解決しますか?

解決策:

今私の姿は次のとおりですcrontab

DISPLAY=":0.0"
XAUTHORITY="/home/nazar/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
00 13 * * * /home/nazar/Documents/scripts/lunch_break_job.sh # JOB_ID_2
50 * * * * /home/nazar/Documents/scripts/pc_break.sh # JOB_ID_1
# * * * * * /home/nazar/Documents/scripts/cron_job_test.sh # JOB_ID

これで次のようになりますcron_job_test.sh

#!/bin/bash

/usr/bin/notify-send -i /home/nazar/Pictures/icons/Mail.png "hello" "It is just cron test message"

pc_break.sh:

#!/bin/bash

/usr/bin/notify-send -i /home/nazar/Pictures/icons/download_manager.png "Break:" "Make a break for 10 min"

lunch_break_job.sh:

#!/bin/bash

/usr/bin/notify-send -i /home/nazar/Pictures/icons/Apple.png "Lunch: " "Please, take a lunch!"

ベストアンサー1

XDG_RUNTIME_DIRまた、設定する必要があります。 crontabを次のように変更します。

DISPLAY=":0.0"
XAUTHORITY="/home/nazar/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1001"
00 13 * * * /home/nazar/Documents/scripts/lunch_break_job.sh # JOB_ID_2
50 * * * * /home/nazar/Documents/scripts/pc_break.sh # JOB_ID_1
* * * * * /home/nazar/Documents/scripts/cron_job_test.sh # JOB_ID

nazarユーザー名と実際のUIDを変更したことを確認してください1001。を実行してUIDを取得できますid -u

スクリプトに必要なものは次のとおりです。

#!/bin/bash

/usr/bin/notify-send "hello" 

私はCinnamonを実行しているArchでこれをテストしましたが、うまくいきます。

変数はcrontabで設定されるため、スクリプトから何もエクスポートする必要はありません。これを実行しても役に立ちません。スクリプトはcronによって呼び出され、とにかく必要な値をエクスポートしません。

おすすめ記事