Gnomeで壁紙スライドショー
Windows7やMac 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よく分からなくて…