UNIXのグルー(のりづけ)の概念はあまりにも便利。なにしろ日常のあらゆる事が簡単なシェル+UNIXコマンドで事足りてしまう。マジ手放せない。
あまりにも便利すぎるためか、UNIXにはWindowsの壁紙変更ツールみたいなのがあまり発達してない。まぁそりゃそうだ。誰でも片手間でちゃっちゃとできてしまうものをわざわざ製品にする奴は普通いないだろう。
だが、だからこそ「入門には最適」な条件が揃っている。たとえばGnomeデスクトップ用壁紙変更の記事だ。これを糊づけでなく単一言語で動かしてみる。
#!/usr/bin/ruby
require 'find'
require 'gconf2'
if ARGV.length > 0
wtype = "centered"
wtype = ARGV[1].clone if ARGV.length > 1
if test(?d,ARGV[0]) == true
s = []
Find.find(ARGV[0]) {|f|
if test(?f,f) == true && f =~ /\.jpg$/i
s[s.length] = f.clone
end
}
ll = s.length
if ll > 0
r = rand(ll)
c = GConf::Client.default
c["/desktop/gnome/background/picture_options"] = wtype
c["/desktop/gnome/background/picture_filename"] = s[r].clone
end
end
end
これをたとえば、 wallpaper.rb ぬこ.jpg のように実行する。
壁紙タイプを変更したいなら、ぬこ.jpgの後に centeredとかつければいい。この部分のオプションは以下。