以用户身份运行cronjob以更改Ubuntu中的桌面背景

时间:2010-02-02 07:32:55

标签: bash shell cron

我正在尝试运行this script,将桌面背景更改为目录中的随机图片。它从命令行运行,并且cronjob运行(添加输出并将其吐出到日志文件中),但我无法让它改变我的背景。这是我当前的行(设置为每分钟运行一次以进行测试)。

01 * * * * username /home/username/.wallpapers/flip.sh

任何想法?

4 个答案:

答案 0 :(得分:4)

bug:https://bugs.launchpad.net/ubuntu/+source/gconf/+bug/285937

我的版本:

#!/bin/bash

# Script to randomly set Background from files in a directory

# Directory Containing Pictures
DIR=/home/lucas/studio/art/images/tapety
LOG=/home/lucas/tapeta.log

# Command to Select a random file from directory
PIC="$(
for p in [jJ][pP][gG] [pP][nN][gG] [sS][vV][gG] ; do
 ls $DIR/*.$p
done | shuf -n1
)"
# Command to set Background Image
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
 # this is because of gconftool bug in cron
 TMP=~/.dbus/session-bus
 export $(grep -h DBUS_SESSION_BUS_ADDRESS= $TMP/$(ls -1t $TMP | head -n 1))
 echo $DBUS_SESSION_BUS_ADDRESS >> $LOG
fi

gconftool-2 -t string -s /desktop/gnome/background/picture_filename "$PIC"

它可以在Fedora 12上运行

答案 1 :(得分:2)

01 * * * * /home/username/.wallpapers/flip.sh

表示它每小时运行一次,如果你想每分钟运行一次,它必须是

*/1 * * * * /home/username/.wallpapers/flip.sh

语法也在Wikipedia上描述。

或按建议使用GNOME Schedule

flip.sh可执行吗?

编辑:确实,必须删除用户名(在系统范围的cron文件中,请参阅 silent 的评论)。也许这个CronHowto也有帮助。

答案 2 :(得分:2)

cron脚本无权访问用户的显示。请改用wallpapoz之类的内容。

答案 3 :(得分:0)


I works great on my ubuntu hardy.

#!/bin/bash

# Script to change desktop background randomly every 5 mins through cronjob

FIND=/usr/bin/find
GCONFTOOL2=/usr/bin/gconftool-2
IMG_DIR=/home/username/Pictures/wallpapers

FILES=( `$FIND $IMG_DIR -iname '*.jpg'` )
TOTAL=${#FILES[@]}

# Select random number from 0 to $TOTAL
let INDEX=$RANDOM%TOTAL

$GCONFTOOL2 --type string --set /desktop/gnome/background/picture_filename "${FILES[${INDEX}]}"
$GCONFTOOL2 --type string --set /desktop/gnome/background/picture_options "centered"



Run it through cronjobs:

05 * * * * /home/username/scripts/wallpaper_switcher.sh