                oneko - Neko runs over the windows.
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                           Version 2.0 beta-pop1.1-tip1.7-sender0.5

                            Mar 24th 2002 (sender-0.5)
                            Sender Window version by Hironori Sakamoto

はじめに

  これは oneko 2.0 beta に到着メールの差し出し人アドレスに応じた
  差し出し人(猫^^;)のウィンドウや「掬」を表示するようにした改造版です。
  さらに XPM (カラー) 対応もしています(pixmap ファイルはまあありません)。
  Nobuyuki Sasaki氏の POP対応パッチ oneko-2.0b-pop1.1.patch と
  Yoshishige Arai氏の リスト表示ウィンドウパッチ oneko-2.0b-tip1.7.patch
  を当てた後に当てるパッチの形になっています。

  このドキュメントには、senderパッチにて追加された機能、リソースしか説明
  がないことに御注意下さい。オリジナルの機能やリソースに関しては、お手数
  ですが README.jp、README.pop 及び README.tip に目を通して下さい。

追加機能

  o メールが到着した時に差し出し人(猫)ウィンドウを表示し猫はまずそちらへ
    走って(メールを受けとってから)からポストに走るようにしました。
  o 差し出し人(猫)ウィンドウは差し出し人アドレスに応じて変更できるようにし
    ました。差し出し人アドレス(正確には、指定したヘッダキーワードの文字列)
    は、`*' をワイルドカードとして指定することができデフォルトで 10 アドレス
    まで設定できます。
  o ポストにいる場合でも新しいメールが到着した時には差し出し人(猫)ウィンドウ
    を表示しそちらへ走るようにしました。
  o -mari オプションで「掬」が現れてランダムに跳ねるようにしました。猫は
    掬を追いかけます。こたつとの切替えが可能です。
  o フルカラー用に XPM の試験的サポート(デフォルトでは off)。
  o こたつ、郵便ポスト、掬、差し出し人(猫)の移動時にカーソルを使わずウィンドウ
    そのものを移動させることも可能にした(デフォルトでは off)。
  o 最初からこたつが出るオプションを追加(デフォルトでは off)。

他の変更点

  o help, oneko.man, oneko.man.jp, configure の更新。

パッチ部以外の修正

  o -mail と +mail オプションの意味が反対になっていたものの修正。
  o 郵便ポストの geometry が設定どおりにならないものを修正し、デフォルトの
    geometry を調整。
  o MAILBOX_DIRECTORY が '/' で終らない場合に '/' を追加するようにした。
  o 差し出し人の名前の最後の文字が落ちる場合があったものの修正。
  o strncasecmp() の定義ミスの修正。

make の方法

  1. 必要なもの

    o オリジナルソース
      oneko-2.0b.tar.gz
    o Nobuyuki Sasaki氏の POP対応パッチ
      oneko-2.0b-pop1.1-patch.tar.gz
    o Yoshishige Arai氏のリストウィンドウ表示パッチ
      oneko-2.0b-tip1.7.tar.gz
    o このパッチ
      oneko-2.0b-sender0.4.tar.gz

  2. ソースの展開と patch 

      % gzip -dc oneko-2.0b.tar.gz | tar -xvf -
      oneko/
        :
      % gzip -dc oneko-2.0b-pop1.1-patch.tar.gz | tar -xvf -
      README.pop
      oneko-2.0b-pop1.1.patch
      oneko2.au
      % gzip -dc oneko-2.0b-tip1.7.tar.gz | tar -xvf -
      oneko/
      oneko/README.tip
      oneko/oneko-2.0b-tip1.7.patch
      oneko/configure
      oneko/install.sh
      % gzip -dc oneko-2.0b-sender0.4.tar.gz | tar -xvf -
      README.sender
      oneko-2.0b-sender0.4.patch

      % cd oneko
      % patch -p1 < ../oneko-2.0b-pop1.1.patch
      % patch -p1 < oneko-2.0b-tip1.7.patch
      % patch -p1 < ../oneko-2.0b-sender0.4.patch

  3. configure と make

      README.tip に詳しく説明されていますのでそちらを御覧ください。
      XPM 対応にしたい場合は、configure のオプションに --with-xpm を
      を指定してください(デフォルトでは XPM 対応しません)。

  4. XPM ファイル

      特に XPM ファイルは用意していませんが、同封の sh スクリプト
      mkpixmap.sh を実行すればビットマップファイルを変換して一通りの XPM
      ファイルを作成することができます。ただし、perl と bmtoa(X11 に標準
      であるはずです)が必要です。また、perl スクリプト xbm2xpm.pl は任意
      のビットマップファイルの組(*.xbm, *_mask.xbm)を XPM ファイル(*.xpm)
      に変換します。

使用可能なコンパイル時のマクロとスイッチ

  以下のマクロは、config.h を直接編集して指定することができます。

   #define SENDER
      差し出し人(猫)の拡張を有効にする。デフォルトは define。
   #define NSENERS 10
      指定できるアドレスの最大数を指定する。デフォルトは 10。
   #define MARI
      「掬」の拡張を有効にする。デフォルトは define。
   #define XPM
      XPM 対応を有効にする。デフォルトは undef。
   #define NO_TOYCURSOR
      Toy(Kotatsu,Post,Sender)の移動時にカーソルを使わず Motion で処理する
      様にします。デフォルトでは undef。XPM が define された場合は define
      される。

  以下のスイッチは、Makefile を直接編集して指定することができます。

  -DNSENDERS=アドレス数
      指定できるアドレスの最大数を指定する。デフォルトは 10 で、
      sender1.address 〜 sender10.address  まで指定できます。

リソースとオプション

 追加されたリソース(クラス)                    対応するオプション

  Oneko.tip.newtext (Tip.NewText)              -newtext
        新しいメールが到着した時に Tip ウィンドウに表示する文字列。
        その中に ASCIIキャラクタで、%d を一つ入れると、それが新しいメール
        の数に置き換わる。デフォルトは "新しいメールが %d 通届いています"。

  Oneko.tip.newtext1 (Tip.NewText1)            -newtext1
        tip.newtext と同様の L10N に対応するリソース
        デフォルトは "新しいメールが"。

  Oneko.tip.newtext2 (Tip.NewText2)            -newtext2
        tip.newtext と同様の L10N に対応するリソース
        デフォルトは "通届いています"。

  Oneko.sender.bitmap (Sender.Bitmap)          -sbm, -senderbitmap
        差し出し人(猫)を表示するためのビットマップファイル名を指定します。
        デフォルトでは /usr/lib/X11/oneko/sender.xbm を読み込みます。

  Oneko.sender.bitmask (Sender.Bitmask)        -sbmsk, -senderbitmask
        差し出し人(猫)を表示するためのビットマップファイル名を指定します。
        デフォルトでは /usr/lib/X11/oneko/sender_mask.xbm を読み込みます。

  Oneko.sender.background (Sender.Background)  -sbg, -senderbackground
        差し出し人(猫)の背景色を指定します。

  Oneko.sender.foreground (Sender.Foreground)  -sfg, -senderforeground
        差し出し人(猫)の前景色を指定します。

  Oneko.sender.action (Sender.Action)          -sender <-> +sender
        差し出し人(猫)を表示します。

  Oneko.sender.multir (Sender.Multi)           -multisender <-> +multisender
        複数の差し出し人(猫)を表示します。

  Oneko.sender.geometry (Sender.Geometry)      -sgeom, -sendergeometry
        差し出し人(猫)を表示する位置を指定します。

  Oneko.sender.direction (Sender.Direction)    -direction
        複数の差し出し人(猫)を並べて表示する方向を指定します。
        left, right, up, down から選択可能です。デフォルトは right。
        sender?.geometry リソースが指定されている場合はそちらが優先されます。

 以下のリソースを指定することでメールの差し出し人のアドレスに対応した
 差し出し人(猫)を表示することができます。

  Oneko.sender1.address (Sender1.Address)
        差し出し人(猫)のアドレスを指定します。`*' をワイルドカードとして
        使用可能であり、空白(` ', TAB, 改行)や `,' で区切って複数のアドレス
        を指定可能です。 "Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>" など
        に対応するため部分一致も許されます。
        アドレスとして成り立たないようないかなる文字列でもかまいません。
        Oneko.sender2.address 〜 Oneko.sender10.address までも同様に
        指定可能です。
        例)
           ! "hsaka@mth.biglobe.ne.jp" を含むアドレス
           Oneko.sender1.address: hsaka@mth.biglobe.ne.jp
           ! "hsaka@" と ".jp" を含むアドレス
           Oneko.sender2.address: hsaka@*.jp
           ! "hsaka" または "h-saka" を含むアドレス
           Oneko.sender3.address: hsaka, h-saka

        新しいメールのアドレスが Oneko.sender1.address 〜
        Oneko.sender10.address まで順に一致するかどうか試されます。
        一致した時点でその sneder? に対応する差し出し人(猫)が表示されます。
        どれにも一致しない場合は sender が使用されます。
        .multisender リソースが false の場合は、先着のメールから一致する
        かどうか試され一致した時点でその sneder? のみ表示されます。

        注意)
        * アドレスは sender?.address に一致した時点で、例え完全に一致する
          ものが後にあるとしても、最初のものが使用されます。従ってワイルド
          カード`*'の使用は注意してください。
        * 同じ sender? に一致する複数のメールがあっても対応する差し出し人
          (猫)は一つしか表示されません。
        * 空の文字列や `*' だけからなる文字列は全てに一致しません。

  Oneko.sender1.headerkey (Sender1.Headerkey)
        差し出し人(猫)のアドレスを得るためメールヘッダのキーワード(From や
        Reply-To など)を指定します。大文字と小文字は違いは無視されます。
        デフォルトは、From ですが、メーリングリストなどに対応するためには
        Reply-To や Subject などを指定した方がよいかもしれません。
        Oneko.sender2.headerkey 〜 Oneko.sender10.headerkey までも同様に
        指定可能です。

  Oneko.sender1.bitmap (Sender1.Bitmap)
        Oneko.sender1.address でアドレス指定した差し出し人(猫)を表示する
        ためのビットマップファイル名を指定します。デフォルトでは
        Oneko.sender.bitmap で指定したものとなります。
        Oneko.sender2.bitmap 〜 Oneko.sender10.bitmap までも同様に指定可能
        です。また、Oneko.sender1.bitmask, Oneko.sender1.background,
        Oneko.sender1.foreground, Oneko.sender1.geometry,
        〜 Oneko.sender10.bitmask, Oneko.sender10.background,
        Oneko.sender10.foreground, Oneko.sender10.geometry, も同様に指定
        可能です。

 以下のリソースは「掬」のためのものです。

  Oneko.mari.action (Mari.Action)              -mari <-> +mari
        掬が表示されランダムに跳ねる様になります。

  Oneko.mari.bitmap (Mari.Bitmap)              -mabm, -maribitmap
        掬を表示するためのビットマップファイル名を指定します。デフォルトで
        は /usr/lib/X11/oneko/sender.xbm を読み込みます。

  Oneko.mari.bitmask (Mari.Bitmask)            -mabmsk, -maribitmask
        掬を表示するためのビットマップファイル名を指定します。デフォルトで
        は /usr/lib/X11/oneko/sender_mask.xbm を読み込みます。

  Oneko.mari.background (Mari.Background)      -mabg, -maribackground
        掬の背景色を指定します。

  Oneko.mari.foreground (Mari.Foreground)      -mafg, -mariforeground
        掬の前景色を指定します。

  Oneko.mari.speed (Mari.Speed)                -marispeed
        掬の速さの最大値を指定します。-time オプションで指定した時間内に
        移動可能なピクセル値です。デフォルトは 24 です。

  Oneko.mari.next (Mari.Next)                  -marinext
        掬が停止した後、-time オプションで指定した時間内に掬が跳ねる確率
        です。デフォルトは 0.2 (%)です。

  Oneko.mari.acceration (Mari.Acceration)      -mariaccel
        掬がマウスに当たった時に何 % まで増速するかを指定します。0 〜 200 %
        まで指定可能です。デフォルトは 120 (%)です。

  Oneko.mari.deceration (Mari.Deceration)      -maridecel
        掬が底面で反射した時に何 % まで減速するかを指定します。0 〜 100 %
        まで指定可能です。デフォルトは 80 (%)です。

  Oneko.mari.gravity (Mari.Gravity)            -gravity
        掬にかかる重力を指定します。-time オプションで指定した時間内に掬の
        速さが変化するピクセル値です。デフォルトは 2 です。

 以下のリソースは「こたつ」のためのものです。

  Oneko.kotatsu.init (Kotatsu.Init)            -kotatsu <-> +kotatsu
        最初から、こたつを表示します。

  Oneko.kotatsu.geometry (Kotatsu.Geometry)    -kgeom, -kotatsugeometry
        こたつを表示する位置を指定します。

 以下のリソースは XPM 対応時にのみ指定可能です。

  Oneko.pixmapdir(Pixmapdir)                   -pixmapdir
        アニメーションのための XPM ファイルがあるディレクトリを指定します。
        このリソースまたはオプションが指定されると、.bitmapdir、前景色
        (.foreground)、背景色(.background)は無視されます。デフォルトでは
        ビットマップファイルを使用します。

  Oneko.kotatsu.pixmap(Kotatsu.pixmap)         -kpm, -kotatsupixmap
        こたつを表示するための XPM ファイルを指定します。
        このリソースまたはオプションが指定されると、.kotatsu.bitmap、
        .kotatsu.bitmask、前景色、背景色は無視されます。デフォルトでは
        ビットマップファイルを使用します。

  Oneko.post.pixmap(Post.pixmap)               -ppm, -postpixmap
        郵便ポストを表示するための XPM ファイルを指定します。
        このリソースまたはオプションが指定されると、.post.bitmap、
        .post.bitmask、前景色、背景色は無視されます。デフォルトでは
        ビットマップファイルを使用します。

  Oneko.mari.pixmap(Post.pixmap)               -mapm, -maripixmap
        掬を表示するための XPM ファイルを指定します。
        このリソースまたはオプションが指定されると、.mari.bitmap、
        .mari.bitmask、前景色、背景色は無視されます。デフォルトでは
        ビットマップファイルを使用します。

  Oneko.sender.pixmap(Sender.pixmap)           -spm, -senderpixmap
        差し出し人(猫)を表示するための XPM ファイルを指定します。
        このリソースまたはオプションが指定されると、.sender.bitmap、
        .sender.bitmask、前景色、背景色は無視されます。デフォルトでは
        ビットマップファイルを使用します。
        Oneko.sender1.pixmap 〜 Oneko.sender10.pixmap も同様に指定可能
        です。

動作確認

  このパッチをあてた oneko を実行するには X Window System(X11R5以上)
  が必要です。また、XPM 対応にするには XPM ライブラリが必要です。
  現在以下の環境で動作確認が取れています。

   FreeBSD(98)2.2.8R-Rev01 + X11R6.3(XFree86-3.3.3) + (xpm-3.4k)
   EWS4800(UX/4800 R11.7) + X11R6 + (xpm-3.4g)
      (※) configure が完全には対応しないので Makefile を手動で書き替える
           必要あり。

問題点

  ・XPM 対応の部分は経験がないため試験的に見よう見まねで作ったものです。
    一応動作しているようですが問題があるかもしれません。
  ・こたつ等を移動した後の再描画時にうまく描画できない時があります。一度
    クリックすると再描画されます。
  ・XPM ファイルは特に用意していません。同封の mkpixmap.sh, xbm2xpm.pl で
    一通りの(ビットマップと同等の)ものは作成できますが、それでは XPM 対応
    の意味がありませんね(^^; ただ、私にはどうも絵心がないようなので、
    oneko 用に素晴らしい XPM ファイルを作成された時は是非教えてください。

このパッチの履歴

  (2002 Mar 24)
   Oneko version 2.0beta Patchlevel 6 + pop-1.1.1 + tip-1.7 + sender-0.5
   ・こたつを最初から出せる様にした。
   ・差し出し人機能はデフォルトでは off。
   ・LIBDIR の設定ミスの修正。
   ・リソース名の変更。
     nosender -> sender.actoin
     multisender -> sender.multi
     gravity -> mari.gravity

   Oneko version 2.0beta Patchlevel 6 + pop-1.1.1 + tip-1.7 + sender-0.4
  (1999 Apr 12)
   ・こたつと「掬」が同時に出てしまうバグの修正。

  (1999 Apr 03)
   ・「掬」の部分の手直し。

  (1999 Mar 25)
   Oneko version 2.0beta Patchlevel 6 + pop-1.1.1 + tip-1.7 + sender-0.4a
   ・「掬」を追加。
     (そろそろパッチの名前を替えないといけないような気が…)

  (1999 Mar 22)
   Oneko version 2.0beta Patchlevel 6 + pop-1.1.1 + tip-1.7 + sender-0.3
   ・XPM の試験的サポート(デフォルトでは off)。
     マニュアル、help の更新は安定化し XPM ファイルが揃ってから行う予定。
     ビットマップファイルを XPM ファイルに変換するための perl スクリプト
     xbm2xpm.pl と sh スクリプト mkpixmap.sh を用意。
   ・Toy(Kotatsu,Post,Sender)の移動時にカーソルを使わず Motion で処理する
     ことも可能にした(デフォルトでは off)。XPM 対応のためと、大きなカーソ
     ルが使えないシステムのため、また Post や Sender の移動時に猫がそれら
     を無視してしまう問題に対応するため。

  (1999 Mar 20)
   ・複数の差し出し人(猫)を並べて表示する方向を指定可能にした(-direction
     オプション追加)。
   ・From 以外のメールヘッダから差し出し人のアドレスを得られる様にした。
     (.sender?.headerkey リソース追加)。
   ・その他、いくつかのバグ修正。

  (1999 Mar 18)
   ・複数の差し出し人(猫)を表示可能にした(-multisender オプション追加)。
   ・-nosender オプション追加(差し出し人(猫)の表示を off)。
   ・L10N 用 .newtext1, .newtext2 リソース追加。
   ・アドレス判定部のコードの大幅な変更。
   ・その他、多くのバグ修正。

  (1999 Mar 15)
   Oneko version 2.0beta Patchlevel 6 + pop-1.1.1 + tip-1.7 + sender-0.2
   ・From: ヘッダの全部の文字列をアドレスとして扱う様にした。
     (README.sender にはそう書いてあったのにバグでそうなってなかった。)
   ・マクロ SENDER でパッチ部分を分離した(本体の修正は除く)。マクロ SENDER
     を define すると マクロ MAILNOTIFY, SHOWHEADER も define される。
   ・NSENDERS を指定できるアドレス数そのものとした。
   ・strsep() 関数をやめて strtok() 関数を使う様にした。
   ・その他、多くのバグ修正。

  (1999 Mar 14)
   Oneko version 2.0beta Patchlevel 6 + pop-1.1.1 + tip-1.7 + sender-0.1
   ・初版


版権について

  このパッチは、自由に改造、再配布して下さって結構です。その際には、私、
  坂本浩則 <hsaka@mth.biglobe.ne.jp> まで連絡をいただけると幸いです。
  動作報告、バグレポート等も、もちろん歓迎致します。
  ただし、作者としては、まだ積極的に公開できる段階ではないと判断しています
  ので、御承知おきください。

追記(私とoneko)

  oneko を一目見た時からファンでした。C や X11 を勉強し始めたのも oneko が
  きっかけです。oneko に biff 機能があればいいなぁと思っていたところもう出
  来ていました。しかも POP対応、MIMEデコードされたヘッダ表示機能もあるでは
  ありませんか。後は差し出し人によって動作が変わればいいなぁと思って作った
  のがこのパッチです。まだ、ビットマップを変更するだけなのですが。自分専用
  のビットマップを作成するなどして皆様にも楽しんでいただければ幸いです。

謝辞

  xneko, oneko とその拡張版の開発に携わった多くの方々に感謝いたします。
  荒井良重さん <ryo2@on.rim.or.jp> には貴重なアドバイスをいただきました。
  感謝いたします。

-----------------------------------
坂本 浩則 <hsaka@mth.biglobe.ne.jp>
 http://www2u.biglobe.ne.jp/~hsaka/

