2009-11-30 4 views
1

pour mon script bash, je voudrais commencer conky si ce n'est pas en cours d'exécution et de choisir un fond d'écran aléatoireexécuter conky avec une tâche cron et bash

#! /bin/bash 
## dependances : randomize-lines 

# otherwise wont work with cron 
export DISPLAY=0 
while read line ; do 
echo $line | grep -vqe "^#" 
if [ $? -eq 0 ]; then export $line; fi 
done < ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-$DISPLAY 

# random background 
pathToImage="$HOME/Images/wallpaper/" 
img="`find $pathToImage -name \*.jpg | rl | tail -n 1`" 
/usr/bin/gconftool -t str -s /desktop/gnome/background/picture_filename $img 

# test if conky is running 
if ps ax | grep -v grep | grep conky > /dev/null 
then 
    echo "conky running" 
else 
    echo "conky is not running" 
    conky 
fi 

si je tente d'exécuter le script dans un terminal de

$ ~/script/wallpaper/random-background.sh 
conky is not running 
Conky: can't open display: 0 

si je mets le test avant que l'affichage = 0, il va travaux dans un terminal, mais pas avec cron

merci

Répondre

2

Je pense que cela devrait être

export DISPLAY=:0 

mais cela ne fonctionnera pas pour

~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-$DISPLAY 

mais vous pouvez changer cela à

~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0 
+0

génial! Ça marche. Pouvez-vous expliquer ce qu'il fait parce que j'ai trouvé ce bloc sur un forum mais je ne comprends pas ce qu'il fait –

+0

Il exporte chaque ligne qui n'est pas un commentaire dans le fichier ~/.dbus/session-bus/$ (cat/var/lib/dbus/machine-id) -0 et il est utilisé "pour trouver le bus de session D-Bus". Ma conjecture est que conky a besoin d'une session dbus pour mettre à jour l'image de fond. – Puppe

1

Vous avez manqué un ":":

export DISPLAY=:0 
Questions connexes