Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2008年11月23日日曜日

壁紙をランダムに変更するスクリプト このエントリーを含むはてなブックマーク

本記事では、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

0 コメント:

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。