2010-02-02 5 views
-1

J'essaie d'exécuter this script qui change mon arrière-plan de bureau à une image aléatoire dans un répertoire. Cela fonctionne à partir de la ligne de commande, et le cronjob est exécuté (sortie ajoutée et il est recraché dans un fichier journal), mais je ne peux pas l'obtenir pour modifier mon arrière-plan. Voici ma ligne actuelle (définie pour s'exécuter toutes les minutes pour les tests).Exécuter cronjob en tant qu'utilisateur pour modifier l'arrière-plan du bureau dans Ubuntu

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

Une idée?

Répondre

4

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

ma version:

#!/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" 

et il est fonctionne sur Fedora 12

+0

Fonctionne pour moi, merci. –

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

signifie qu'il circule toutes les heures, si vous voulez exécuter chaque minute, il doit être

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

La syntaxe est également décrite sur Wikipedia.

Ou d'utiliser GNOME Schedule comme proposé.

Est-ce que flip.sh est exécutable?

Edit: Et il est vrai, le nom d'utilisateur doit être retiré (dans le fichier système de Cron, voir commentaire l » silencieux) .Maybe ce CronHowto aide aussi.

+1

si vous système d'édition large crontab (/ etc/crontab), vous devez définir le nom d'utilisateur . Cependant, si vous modifiez via ctontab -e (crontab de l'utilisateur), vous n'avez pas besoin de le faire. CMIIW. – ariefbayu

2

Les scripts cron n'ont pas accès à l'affichage de l'utilisateur. Utilisez quelque chose comme wallpapoz à la place.

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 

Questions connexes