gnus-eyecandy には favicon が便利

Gnus の *Group* buffer にアイコンを表示してくれる gnus-eyecandy.el ってツールがある。以前ちょっと使ってみたんだけどすぐやめてしまった。理由は特に有用性を感じられなかったから。そのときの設定はこんなん。

(setq gnus-group-icon-list
      '(((and (string-match "\\`nnml:.+" group) (> unread 0)) . "mail.xpm")))

ようは未読記事があるメールグループに一律に同じアイコンを表示させていた。実際はもうちょっといろいろ設定してたんだけど大筋こんなかんじ。

……これじゃぜんぜん便利くないのですよ。

もともと未読記事があるグループはグループ名のフェイスが変わるので別にアイコンを補ってやらなくても一目瞭然な訳でして、単なる賑やかしに終わってしまった。

で、http://d.hatena.ne.jp/emacsjjj/20050707/p1 を書いたのを機会にこいつを再び使い始めたんだけど、新たな気分で設定し直したらなかなか便利になったのでちょっとメモ。

gnus-eyecandy.el の入手

正式な配布元ってどこなんだろう。ちょっとググってみたけどわからなかった。Debiangnus-bonus-el パッケージに入ってるのでそこから引っこ抜くのが楽かも。

アイコンを取り揃える

アイコンは付属とかしてないので各自で用意する必要がある。自分はこれまた Debianfvwm95-icons パッケージを流用してみた。これに含まれる mini-icons ってのがいい按配の大きさなのでこれをベースにする。

favicon を漁る

今回の新機軸がこれ。favicon てのはブラウザの URL 欄の横に表示されることがあるあのちっちゃなアイコンのこと。こいつを利用する。サイズも丁度いいし。これで例えば ruby 関連のグループなら http://www.ruby-lang.org/ からもらってきた favicon を、Debian 関連なら http://www.jp.debian.org/ からゲットした favicon を付けてやる訳です。既存のアイコンだけだとなかなかイメージに会う絵がないので割当ての選択に苦労するんだけど、これならバッチリ。ちなみに favicon は複数の画像がまとめてあったりすることがあるので、その場合は Imagemagic あたりでちょちょっとフォーマット変換してやるとよい。

gnus-eyecandy.el を設定する

(setq gnus-group-icon-list
      '(((and (string-match "debian" group) (> unread 0)) . "debian.xpm")
	((and (string-match "ruby" group) (> unread 0)) . "ruby.png")
	((and (string-match "java" group) (> unread 0)) . "duke.xpm")
	((and (string-match "mac" group) (> unread 0)) . "apple.xpm")
	;; 日本語のグループ名なら utf-8 でエンコードして比較する
	((and (string-match (encode-coding-string "ぐるーぷ" 'utf-8) group)
	      (> unread 0)) . "foo.xpm")))

まあだいたいこんな感じで。設定の詳細はソースの冒頭に書いてあるのでそちらを参照のこと。「未読記事があるかどうか」ではなく「そのグループが何であるか」を表わしてやるとグッドなようです。まあ、いま考えればあたりまえな話ではあるんですが…。これで *Group* buffer の視認性が50%アップしました(当社比)。

おまけ

(defadvice gnus-group-line-add-icon (around case-insensitive activate compile)
  (let ((case-fold-search t))
    ad-do-it)))

こうやっとくと case-insensitive な判定をしてくれるので

(string-match "[Dd]ebian" group)

とか書かなくていいのでちょっとだけ楽。

おまけその2

favicon についていろいろググってたらこんなサイトがあった。

http://www.favicon.jp/

へー、favicon 作成サービスとかもやっててなかなかおもしろい。