Linux:Gnomeの壁紙を起動毎に自動変更
シェルスクリプト
#!/bin/bash
# last updated : 2013/6/26 15:48:33 JST
# Set Random Wallpapers for GNOME.
#
#スクリプト内で実行したコマンドが0以外を返すと、そこでスクリプトを終了する。
set -e
# 2重起動の防止; 別のプロセスで動いてたら終了
[ $$ = $(pgrep -fo $0) ]
# 壁紙変更の下準備
PID=`pgrep -n nautilus`
eval `tr '\0' '\n' < /proc/$PID/environ | grep ^DBUS_SESSION_BUS_ADDRESS=`
export DBUS_SESSION_BUS_ADDRESS
# 壁紙のファイル名を取得
ALIST=( `ls -w1 /usr/share/backgrounds/*.jpg` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))
# 壁紙の変更
gconftool-2 --type string --set "/desktop/gnome/background/picture_filename" ${ALIST[$SHOW]}
gconftool-2 --type string --set "/desktop/gnome/background/picture_options" "stretched"
# 2重起動の防止
sleep 60
exit 0
自動起動
「システム > 設定 > 自動起動するプロセス」で登録
参考
$$ 自分のプロセスID pgrep プロセスをgrepしてプロセスIDのリスト返す -f プロセス名だけではなくて引数などコマンド全体を検索対象にする(ps -fの値ということ) -o マッチした中で一番古いプロセスIDだけを返す $0 起動時の自分の名前