2010-02-02 47 views
-1

我试图运行this script,它将桌面背景更改为目录中的随机图片。它从命令行工作,并且cronjob运行(添加输出并且它被吐出到一个日志文件),但我不能让它改变我的背景。这是我的当前行(设置为每分钟测试一次)。以用户身份运行cronjob以更改Ubuntu中的桌面背景

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

任何想法?

回答

4

错误: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

+0

适合我,谢谢。 – 2010-02-03 19:42:49

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

意味着它运行每隔一小时,如果你想运行它的每一分钟,它必须是

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

语法上Wikipedia也描述。

或按照提议使用GNOME Schedule

flip.sh可执行文件吗?

编辑:和真,用户名已被删除(在系统范围的cron文件,请参阅沉默的评论)。也许这CronHowto也有帮助。

+1

如果您编辑系统范围的crontab(/ etc/crontab中),你应该设置的用户名。但是,如果您通过ctontab -e(用户的crontab)编辑,则不需要。 CMIIW。 – ariefbayu 2010-02-02 08:13:07

2

cron脚本无法访问用户的显示。改为使用类似wallpapoz的东西。

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