2009-11-30 154 views
1

我在bash腳本執行Conky的,我想開始Conky的,如果它沒有運行,並選擇一個隨機牆紙用cron作業和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 

,如果我嘗試在終端中運行腳本

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

如果我把測試DISPLAY = 0之前,它會在終端,但不與cron的作品

謝謝

回答

2

我認爲應該是

export DISPLAY=:0 

但不會對

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

工作,但你可以改變,要

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

太棒了!有用。你能解釋它是什麼嗎?因爲我在論壇上發現了這個塊,但我不明白它在做什麼 –

+0

它在文件〜/ .dbus/session-bus/$(cat/var/lib/dbus/machine-id)-0,它用於「查找D總線會話總線」。我的猜測是conky需要dbus會話來更新背景圖像。 – Puppe

1

你錯過了 「:」:

export DISPLAY=:0