Cron で X プログラムを使用するには、有効な DISPLAY と XAUTHORITY が必要です。
DISPLAY の設定は非常に簡単です。Bash に次のように入力します。
export DISPLAY=":0.0"
有効な XAUTHORITY を取得するには、それを探す必要があります。Debian/Gnome/gdm3 では、それらは var/run/gdm3/*/database に保存されます。次のスクリプトを使用しました。
export DISPLAY=":0.0"
[ -z $USER ] && USER=$( who | awk '{ print $1 }' | sort | uniq >/tmp/test )
for I in /var/run/gdm3/*; do
AUTHUSER="`echo $I | awk -F '-' '{ print $3 }'`"
for J in $USER; do
[ "${AUTHUSER}" = "${J}" ] || continue
USER="$J"
export XAUTHORITY="${I}/database" && break
done
done
sudo -u ${USER} /Path/to/xProgramm
Var $USER は、スクリプトが有効なユーザーを探すよりも空にすることができます。それ以外の場合は、スクリプトに var! を伝えることができます。