oneko - Neko runs over the windows.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Original program written by
Masayuki Koba
Modified by
Tatsuya Kato (kato@ntts.co.jp)
Modified 20 years later by
Irene Knapp (ireneista@gmail.com)
以前、fj.sources に xneko という X Window 上で動く「猫」が投稿されてい ましたが、残念ながらこの「猫」は一つのウインドウを作ってそのウインドウ の中でマウスを追いかけて走り回るものでした。
そこで私が「猫をおりに閉じ込めておくのは可哀想じゃないか」と思い、画面 の上を縦横無尽に走り回るように改造してあげました。
その名も "oneko"。最初は 'oclock' の 'o' を取ったつもりだったのですが、 oclock って丸いから 'o' なんじゃなくて o'clock の 'o' ですよね。で、' o' のこじつけに "Neko runs Over the windows" の 'o' をつけました。(苦 しい)
# nとmは隣合わせのキーなのでくれぐれも間違って入力しないようにして # 下さい。
このプログラムを実行するには X Window System が必要です。X のバージョ ンは R3 または R4 ですが、R4 で採り入れられた Shape extention を使って いますので R3 で実行する場合はつまらない実行結果になってしまいます。 (Shape extention がなくてもコンパイルはできるようにしてあります。)
実行するマシンは Sun4/330 と、NCD のX端末でしか試してませんが、X端末 でははっきりいって遅いです。Sun のコンソールでやった時にはパラメータの 設定でかなりの速度まであげられるのですが ......。
お試しください。
<バージョンアップによる機能拡張>
◎ オプションはすべてリソースからも指定できるようになりました。ただし、 Xrm ライブラリ関数を使用せず、XGetDefault でリソースの取得を行なっ ています(X11R1 相当の機能)ので、アプリケーションデフォルト (/usr/lib/X11/app-default にあるファイル)でのリソース指定はまだで きません。
◎ NTTSOFT local で好評だった(?)とら猫にする機能を採り入れました。 実行時に
% oneko -tora
とすると猫の模様が変わります。
◎ 色の指定ができるようになりました。起動時のオプションで -fg, -bg を 指定して下さい。
◎ この猫は、寝ている時にねずみをゆっくり移動させると気づかずに寝て います。これは一定時間内にマウスの動いた距離がある値を越えなければ 気がつかないようになっているのですが、この「ある値」をオプションで 変えられるようにしました。デフォルトは6になっているのですが、
% oneko -idle 20
とすると「より鈍い」猫の出来上がりです。
◎ コンパイラに gcc を使うと動かないそうです。(私も確認した)このため 今度の Imakefile では強制的に cc でコンパイルするように指定していま す。
◎ Shape extention のライブラリがなくてもコンパイルできます。もしあな たの使用しているXが R4 ではなくて、かつ SONY NEWS ではない場合は Imakefile の
DEFINES = -DSHAPE
という行を消して下さい。(NEWS で使えるかどうかは試してません。誰か 確認して下さい。)
<コンパイルの仕方>
まず、この記事を unshar してソース一式を取り出してください。
Makefile を作ります。oneko のディレクトリに移って、
% xmkmf
を実行してください。もし、このコマンドがなければ、
% imake -DUseInstalled -I/usr/lib/X11/config
でも同じです。
% make
これで、実行可能な「猫」が出来ます。もし、/usr/bin/X11 にいれて、みん なで使いたいのでしたら
を(スーパユーザで)実行してください。
これでコンパイルは終了です。あとは、
% oneko &
を実行して楽しんでください :-)
<使用方法>
基本的にオプションはいりません。が、こんなおぷしょんもあります。 help を除くオプションはリソースからも変更できます。
-help オプションの help を表示します。
-tora 猫がとら猫に変わります。
-time
-speed
-idle
-rv 色を反転します。(カラーのディスプレイでは fg, bg で指 定できるので、あんまり意味がありません。)
-noshape X の Shape Extension を使わずに実行します。速度はかな り速くなりますが、表示がつまらなくなります。(実際にやっ てみてください。)
-fg
-bg
また、インストールすると tora にも symbolic link を張ります。tora とい うコマンド名で起動した時にはデフォルトで -tora オプションをつけた時と 同じになります。
リソースで指定した場合はこうです。
oneko.foreground: black oneko.background: red oneko.time: 100000 oneko.reverse: true
コマンドが oneko ではなく、tora という名前で起動された場合リソース名は tora.* になりますから
tora.foreground: sienna tora.background: moccasin
としてとら猫の設定と普通の猫の設定を別にすることも可能です。とら猫の色 はそのままでは白黒になってしまうので上の2行を resoerce にいれて下さい。
また、コマンド名でなくてクラス名("Oneko")で始まるリソースも読むよう にしました。ですから speed, time など、全ての猫に共通なリソースはクラ ス名で、猫の種類(普通の猫、とら猫)によって変えたい色などのリソースは コマンド名(インスタンス名)で指定するのがいいでしょう。
この辺の implement は始めから Xrm* を使えばよかったのですが、この関数 の存在を知らなかったので XGetDefault を使って「無理矢理」書いています。
<ばぐ、これからバージョンアップしたいところ>
複数の猫を同時に動かせるようにしたい。今のままでは oneko を2つ実行す ると同じ動きをするので重なってしまいます。(-speed や -time を変えて実 行するとそれなりに動いてくれますが。試してみて下さい。)
猫が走った後の領域に Expose が起きるので、kterm 等だとちらちらします。 Save Under も試してみましたが、遅くてやめてしまいました。何かいい方法 がないでしょうか?
カーソルがルートウィンドウの上と猫の上にある時にはネズミに変わりますが、 ネズミの色は単に猫の色を反転したものになっています。時間があれば直すの はすぐなのですが、急いだのでそのままになっています。バージョンアップを 期待していて下さい。
速度を早くしたい ...... けど、これ以上は無理かな? どなたか「こうした らもっと速くなる」という方法を教えて下さい。(近藤@ふ研 さんの提案し て下さった Map/Unmap を使った方法はまだ試してません。暇がなくって。)
仕事している時、猫を動かしていると時々猫にキー入力を邪魔されることがあ ります。キー入力を無視して下のウインドウに渡すことが出来るのでしょうか? (そういっている割には今のバージョンの猫はキーイベントを Select input しています。)
# 基本的にPDSですが、バグ修正や機能拡張は(こっそりでもいいですか # ら)私(kato@ntts.co.jp)に教えて下さいね。バージョンアップもするつ # もりです。