本記事では、Ubuntuで壁紙をランダムに変更するスクリプトを紹介する。
このスクリプトは、Ubuntuでなくても、gnomeをウィンドウマネージャとして使っているならば利用できる(Ubuntuでgnomeを使っていなかったら使えない)。
設定
スクリプトを実行する前に、画像ファイルを置くためのディレクトリの作成が必要です。
~/picsにジャンル別に画像ファイルを入れるディレクトリを作成しておきます。下の例では、cat, nature, airplane, carの4つのディレクトリを作成しています。それらのディレクトリの下にさらにサブディレクトリを作成してもOKです。ディレクトリの名前は任意です。
$ cd ~/pics
$ ls
cat nature airplane car
$ cd nature
$ ls
liver mountain sea foreast
ちなみに、~/picsを別のディレクトリにしたいときは、下のスクリプトの$dirを編集すればOKです。
処理内容
スクリプトを実行すると、~/pics以下のディレクトリをランダムに下って行き、jpg形式の画像ファイルをランダムに選んで壁紙に設定します。
使用方法
スクリプトファイルの名称(任意に指定して良い)をchwpaper.plにするとき、まず実行可能ファイルにする。
$ chmod u+x chwpaper.pl
そして、実行する。
$ ./chwpaper.pl
背景画像を指定したいときは、スクリプトを実行する場所からの相対PATHあるいは絶対PATHで画像ファイルを指定します。
$ ./chwpaper.pl goo/foo/boo/hoge.jpg
gcongtool-2の説明
壁紙の設定は、gconftool-2で行っている。2つ目のgconftool-2では、壁紙の貼り付け方を設定している。貼り付け方は、
- scaled(等幅サイズ変更)、
- stretched(フルスクリーン)、
- centered(中央に配置)、
- wallpaper(サイズ均等、並べて表示)
の4通りから選べる。
#!/usr/bin/perl -w
#Usage: $ chwpaper.pl
use strict;
use Cwd;
my $wd=Cwd::getcwd();
my $dir = "$ENV{HOME}/pics";
$dir=$1 if $dir =~ m!(.+)\/$!;
chdir $dir or die "cannot chdir $dir: $!";
while (1) {
my @dirlist;
foreach (<*>) {
push @dirlist, $_ if -d $_;
}
last unless $#dirlist >= 0;
# Note:
# 0 <= rand($#dirlist) <= $#dirlist
# $#dirlist = the length -1
$dir = "$dir" . "/" . "$dirlist[int(rand($#dirlist))]";
chdir $dir or die "cannot chdir $dir: $!";
}
my @imglist=<*.jpg>;
die "picture not found: $!" unless ($#imglist >= 0);
my $img=$imglist[int(rand($#imglist))];
my $path_img=$dir . "/" . $img;
# Overwrite selected_img if specified.
if ($#ARGV == 0) {
$_=$ARGV[0];
unless (-e $_) {
$_ = $wd . "/" . $ARGV[0];
die "File not found: $ARGV[0]" unless -e $_;
}
$path_img=$_;
$img=$1 if m!([^\/]*)$!;
}
print "\n$img\n";
system "gconftool-2 --type string --set '/desktop/gnome/background/picture_filename' \"$path_img\" ";
system "gconftool-2 --type string --set '/desktop/gnome/background/picture_options' stretched";
チップス
~/.bashrcにこのスクリプトを記述しておくと、端末を起動する度にこの壁紙をランダムに変更することができる。
例えば、/usr/local/binにこのスクリプトを置いておくとすると、次の1行を~/.bashrcの末尾に挿入すれば良い。
/usr/local/bin/chwpaper.pl
また、fortuneをインストールし、同じように~/.bashrcに記述すると、端末を起動する度に気の利いた言葉がランダムに表示されるようになる。
# apt-get install fortune-mod <---インストール
次のように.bashrcに記述する。
/usr/games/fortune
/usr/local/bin/chwpaper.pl