kobapan@wiLiki
Login
Linux

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     起動時の自分の名前

[シェルスクリプトの多重起動を防ぎたい! - ”improve it!”

Debian
Emacs
Firefox
Gauche
JavaScript
Linux
Scheme
org-mode/latex

More ...