Gnomeで壁紙スライドショー

Windows7Mac OS Xなどでは壁紙を一定時間毎に変更する昨日がデフォルトでついているのにLinuxでよく使われるデスクトップ環境Gnomeではその機能がない

そこでスクリプトを書いてみた。Rubyがインストールされていることが必要です。
あるディレクトリを見て、画像形式のものを壁紙に指定するということを行っています。

#!/usr/bin/ruby

# 壁紙が置いてあるディレクトリ
path = "/home/aont/Dropbox/Photos/Wallpaper"
# 更新時間(分)
interval = 5

path = path.sub(/\/?\Z/,"/")
Dir::chdir(path)

while true
	# 読み込むファイル形式
	files = Dir::glob("*.bmp\0*.jpg\0*.jpeg\0*.png")
	filename = files[rand(files.length)]
	print filename , "\n"
	system("gconftool -t string -s /desktop/gnome/background/picture_filename " + ( path + filename ).sub(" ","\\ "))
	sleep interval*60
end

これを例えば~/wallpaper_changer.rbなどに保存したら、

ruby ~/wallpaper_changer.rb

を実行すればよい。
ただこれだとコンソール画面をずっと開いていないといけません。

nohup ruby ~/wallpaper_changer.rb &

とすればコンソールを閉じていても実行されてます。




終了させたいときは

# aontを自分のユーザー名に変えて
ps -u aont

として、今実行されているプロセス一覧からRubyのものをさがしてきて、例えば

 1234        00:00:00 ruby

と表示されて入れば

kill 1234

を実行すれば終了されます。



cronでやれという声がでてきそう…cronよく分からなくて…