2009年5月18日月曜日

ターミナル上でIRCするirssi

ネットブックで使うアプリはLightweight Softwareが参考になるかもしれない。WebBrowserはTextブラウザも含めて紹介されているけど、FireFoxがやっぱり使いやすい。メールもGoogleのメール使ってるので普段はメーラーアプリを使わなくなってしまった。

しばらく前から、ゲーム友達がIRCでチャンネルに常駐していたので、S101からもアクセス出きるようにクライアントを入れてみることにした。定番としてはXChatが使いやすく、日本語の扱いに付いても適当にこなしてくれる。使った感じでは全然重くも無い。

しっかし、WMにawesomeを使ってるならば、雰囲気的にはやっぱりターミナルの上で動くIRCクライアントが見た目にカッコ良さそうに思うのはミーハーなんだろうか?w
Lightweight Softwareでは、いくつか紹介されていてどれが人気かはわからないけれど、irssiというのを入れてみることにした。
extraにあるので、pacman -S irssiで簡単に導入可能。

で、ターミナル上で使うIRCクライアントの場合、日本語の扱いに工夫が必要となる。ターミナルは設定で扱う文字コードを選択出きるかもしれないけれど、今時の文字コードは大体UTF-8が普通っぽい。ArchLinuxでも日本語環境のコードはそうなっているはず。しかし、IRC上で流れてる文字はISO-2022JPなチャンネルが多いので、何も設定しなければ、流れてくる文字は文字化けしている。この日本語の扱いの解決策として、ネットで検索してみると2通りあるようだった。

1.irssiにISO-2022JP←→UTF-8の相互変換モジュールを組み込む。
irssiは独自にモジュールを作って組み込むことができるらしい。
びんずめ堂のirssi紹介ページに
conv.plという自作のモジュールが紹介されている。
うちでも使ってみたけれど、これでチャットの文字化けは解消される。ただし、irssiのステータスバー(?)部分のチャンネル名やプロンプト部分の日本語が文字化けしたままだった。

2.tiarraを使う。
Tiarra - IRC Proxy softwareらしい。このプロクシを経由することで、文字列の変換を適当にしてもらえる。プロキシといっても大層なものでなく簡単に導入できる。1で紹介した方法と違って、irssiのステータスバー(?)の文字化けも無く気持ちよい。あと、tiarraで使えるデフォルトのモジュールにはいわゆる、なると配り等の昔ながらのボット機能なんかも入っている。


というわけで、2番目のtiarraとirssiの組み合わせのメモをちょこっと。
目的はirssiをUTF-8ターミナル上で動かしていても、ISO-2022JPを使っているチャンネルと上手くやりとりが出きる亊。そこで、tiarraをローカルで起動して、目的のIRCサーバーに繋がり、irssiではローカルのtiarraに繋がるようにするだけ。

まずは、tiarraは上記のページから適当な最新版をダウンロードしてホームディレクトリなんかに展開。INSTALLファイルを適当に読んで(日本語で説明されている)、tiarraの設定はtiarra.confファイルになるので、sample.confをコピーする。コンフィグファイルも日本語なので、IRC使ったことあるなら何となく分かるはず。

generalブロックでは以下を確認

conf-encoding: utf8
これで、ターミナルがutf8の設定OK

nick: tiarra
user: tiarra
name: Tiarra the "Aeon"
ニック等を自分のものに変える。ここでのニックがプロキシを経由したリモートでのニックになる事に注意。

client-allowed: *
tiarraへの接続を許可するアドレスの制御。デフォルトでは誰でもOKになっている。自分のマシンがインターネットに直接繋がっている場合は、ローカルネットワーク側とかに制限しとくべき。

tiarra-port: 6667
tiarraはローカルで立ち上げることにするが、その際の待ち受けポート

tiarra-password:
tiarra接続のためのパスワード。上記の様に文字列を書いてない状態にすればパスワードは無し。パスワードを作る場合は、パスワードを暗号化した後の文字列をここに書く(コメント参照./tiarra --make-passwordを使う)

server-in-encoding: jis
server-out-encoding: jis
client-in-encoding: utf8
client-out-encoding: utf8
stdout-encoding: utf8
このあたりが、UTF-8ターミナルとISO-2022JP文字コードを使ってるチャンネルのやりとりの設定。コメントを参考にclient-in-encodingとclient-out-encodingをutf8に書き換えてみる。


networksブロックは接続先関係の設定

name: ircnet
name: 2ch
このname項目でつけた各々の任意の名前について、サーバー情報を登録することになる。
デフォルトでは上の二つのnameが宣言され、その後ファイルのずっと下の方をみると
ircnet{・・・・
}

2ch{
}
という設定部分が出てくる。
コメントを見ればわかるが、generalブロックで設定したのはデフォルトの設定で、個別に各ネットワークを宣言して違う設定を使うことも出来る。

とういうわけで、networksブロックのサンプルを消して、自分の繋がりたいircサーバー用に書き換えれば良い。ネットワーク名を変えた場合fixed-channelsの中で@以下にネットワーク名がない場合不具合があるかもなので適当に消した、その他、うちでは以下の通り。

name:wide

wide{
server: irc.media.kyoto-u.ac.jp 6667
}

以上で基本的な設定は終わり。networksブロックの後ろはモジュールの設定なので、組み込みたいのがあれば、コメントを参考に適当に組み込む。よく使いそうなのは、サーバー接続と同時に好きなチャンネルにジョインしてくれるChannel::Join::Connectとかかな?


次は、irssi側の設定。~/.irssi/configファイルで設定するんだけど、初めはないので、とりあえずirssiコマンドでirssiを立ち上げて、/quiteコマンドで終了すれば、~/.irssi/configが作られている。
デフォルトのは色々書いてあるけど、設定するのはservers配列とchatnets配列にローカルのtiarraを追加してやること。

servers = (
{
address = "localhost";
chatnet = "tiarra";
port = "6667";
}
);

chatnets = {tiarra = { type = "irc";};};

何て感じにしてみる。


これで、設定終わり。

tiarraの展開したディレクトリのなかで、./tiarraでプロキシ起動。
次にirssiを立ち上げて /connect tiarraすればOK(tiarraの部分はchatnetsで宣言した名前)



左がirssi、右がtiarraの標準出力

0 件のコメント:

コメントを投稿