オルフェウス ゴーシュのスクリーンセーバ

X Window System で使えるスクリーンセーバといえば、一番地味なもので、
% xset s on
とするものですが(これを~/.xinitrc または ~/.xsession に書いておく)、 汎用のスクリーンセーバのソフトは Jamie Zawinski さんの xscreensaver でしょう。これには、デモンストレーション用のプログラムがいっぱい 入っていて、楽しげです。 インストールは簡単で(xscreensaver-2.24.tar.gz を例にとると)、

% tar zxvf xscreensaver-2.24.tar.gz
% cd xscreensaver-2.24
% ./configure
% make
% su
# make install
出来たら、
% xscreensaver-command -demo
で、ちゃんと動くか確認します。
ちゃんと動いたら、わしの場合は ~/.xinitrc に
xscreensaver &
という一行を加えてバックグラウンドで動かしています。
デフォルトのプログラムは app-defaults 以下の XScreenSaver 、 (わしの場合 /var/X11R6/lib/app-defaults/XScreenSaver) に記述されているものです。


これらのプログラムが嫌なら他のプログラム、 たとえば xsnow だとかを自分の ~/.Xdefaults に記述します。
XScreenSaver*programs: /usr/X11R6/bin/xsnow
他のプログラムを付け加えるのは
XScreenSaver*programs: /usr/X11R6/bin/xsnow \n\
other_program1 \n\
other_program2
てな感じ。 わりと派手なものでは xfishtank というのがあります。
これは、Eric Bina (ebina@ncsa.uiuc.edu )さんの作品。

自分で X Window のプログラムを書いて、付け足すのもいいかもしれませんが、 わしは面倒なので、この xfishtank にオリジナルな「魚」の画像を 作って、オルフェウス ゴーシュのスクリーンセーバに してみました。右のようなオルフェウス ゴーシュのロゴ、音符の天使が 画面を泳ぎ回ります。
xfishtank-2.1tp.tar.gzが元の ソースで xfishtank-2.1tp-xog.diff.tar.gz が、わしの作ったパッチ。 パッチを当てないと xfishtank という実行バイナリが、あてると xog というのが出来ます。 インストールは以下のように。

% ls
xfishtank-2.1tp.tar.gz       xfishtank-2.1tp-xog.diff.tar.gz
% tar zxvf xfishtank-2.1tp.tar.gz
% tar zxvf xfishtank-2.1tp-xog.diff.tar.gz
% cd xfishtank-2.1tp
% patch < xog.diff
% xmkmf
% make
  (strip すると 62 kbyte 程度の小さなプログラムになります
    % strip xog
   ) 
% su
# make install
でもって、~/.Xdefaults に以下の行を加えます。
XScreenSaver*programs: /usr/X11R6/bin/xog -c black -b 0 -f 5
! 上のプログラム一つの場合関係ない。
XScreenSaver*cycle:	600
! 2分でスクリーンセーバを起動
XScreenSaver*timeout:	2
! スクリーンセーバをゆっくり起動
XScreenSaver*fade:	true

Linux 用の実行バイナリも置いておきます。 xog.gz これは gunzip して /usr/X11R/bin にでも置いて下さい。
$ ldd ./xog
      libXext.so.6 => /usr/X11R6/lib/libXext.so.6
      libX11.so.6 => /usr/X11R6/lib/libX11.so.6
      libm.so.5 => /lib/libm.so.5
      libc.so.5 => /lib/libc.so.5
使い方は
usage: xog
                [-c color]  background color
                [-b limit]  number of bubbles (default 32)
                [-f limit]  number of fish (default 10)
                [-i mult]   move interval (default 0.2)
                [-r rate]   move frequency (default 0.2)
                [-m num]    median cut to this many colors
                [-C num]    use only this many color cells
                [-d]        clip fish, swim on root window
                [-p file]   fish swim on picture in file
                [host:display]
ということで、そのまんま泡も出るし、デフォルトの背景も青です。

xfishtank には、giftofish という変換ツールがついてくるので、 二枚の gif 画像(サイズと背景の色を揃えておく)を作っておいて
% giftofish hoge1.gif hoge2.gif
てな感じに変換すると、hoge.h というヘッダーに変換されるので、 これを ./fishmap/ というディレクトリに置いて ./FishList に加えると、自分の魚が増えるというしかけです。

わしは最近の派手すぎるスクリーンセーバは嫌いなので、 この地味な奴を気に入っています。