Irssi
コンソール上で動くCUIなIRCクライアントを探していたのですが,Irssiを紹介されたので使ってみます.
依存しているライブラリは比較的少ないのでインストールは楽です.Emacs使いの人はrieceとかがいいでしょう.
今回はFreeBSDにIrssiをインストールしてみました.
インストール
portsからインストールしました.楽.
/usr/ports/irc/irssi等でmake installしてください.
設定
ホームディレクトリ下の.irssi/configで設定します.設定はサンプルを見ながらやれば問題無いと思います.
servers,chatnets,channelsにエントリを追加します.あとは,一番したのsettingsを書き換えればOkです.
# ~/.irssi/config servers = ( { address = "irc.friend-chat.jp"; port = "6660"; chatnet = "H"; autoconnect="yes"; }, ); chatnets = { H = { type = "IRC"; }; }; channels = ( { name = "#channel"; chatnet = "F"; autojoin = "Yes"; }, ); # 略 settings = { core = { real_name = "kousuke kawahira"; user_name = "binzume"; nick = "binzume"; }; "fe-text" = { term_force_colors = "yes"; }; };
使い方
「/(スラッシュ)」から始まる文字列はコマンドとして扱われます.接続するには,connectコマンドを使います.
チャンネルのautojoinをNoにした場合は,joinコマンドでチャンネルに参加.
/connect H /join #channel
上記の設定なら,irc.himitsukichi.comにつながります.
exitコマンドで終了します.複数のチャンネルに参加している場合は,windowコマンドで切り替えられます.詳しくはIrssiのサイトを参照.
日本語を使う
Irssiは文字コードの変換をしてくれないので,チャットの文字コードとローカルの文字コードが違うと文字が化けてしまいます.
「irssi | nkf -uJw」とかで切り抜けようとしましたが,これはだめでした.
とりあえず今回はプラグインを書いて対処.
プラグインは ~/.irssi/scripts に置くと,scriptコマンドでロードできます.「/script load conv.pl」と入力して読み込んでください.
/.irssi/scripts/autorun に入れておけば,起動時に自動的にロードされるのでここに入れておきましょう.
見ればわかりますが,単純なperlスクリプトです.好きに書き換えて使ってください.ライセンスはNYSLとしておきます.
…トピックの扱いが無理やりなのは手抜きです.
conv.pl
use Irssi; use Encode; our $VERSION = '0.02'; our %IRSSI = ( authors => 'binzume', contact => 'kawahira_binzume.net', name => 'conv', description => 'convert to utf-8', license => 'NYSL', url => 'http://www.binzume.net/', changed => '2007-10-05', ); my $local_charset = 'UTF-8'; my $remote_charset = 'ISO-2022-JP'; sub send_text { my ( $text, $server, $witem ) = @_; if ($server && $witem) { Encode::from_to($text, $local_charset, $remote_charset ); } Irssi::signal_continue( $text, $server, $witem ); } Irssi::signal_add( 'send text', 'send_text' ); sub send_command { my ($command,$server,$item) = @_; Encode::from_to($command, $local_charset, $remote_charset ); Irssi::signal_continue( $command, $server, $item ); } Irssi::signal_add( 'send command', 'send_command' ); sub print_text { my ( $dest, $text, $stripped ) = @_; if ($text!~/Topic for .+:/) { Encode::from_to($text, $remote_charset, $local_charset ); } Irssi::signal_continue( $dest, $text, $stripped ); } Irssi::signal_add( 'print text', 'print_text' ); sub message_topic { my ( $server, $chan, $topic, $nick, $addr ) = @_; Encode::from_to($topic, $local_charset, $remote_charset ); Irssi::signal_continue( $server, $chan, $topic, $nick, $addr ); } Irssi::signal_add_first( 'message topic', 'message_topic' ); sub event_topic { my ($server, $data, $nick, $address) = @_; my ($channel, $topic) = split(/ :/, $data, 2); Encode::from_to($topic, $remote_charset, $local_charset ); $data = "$channel :$topic"; Irssi::signal_continue( $server, $data, $nick, $address ); } Irssi::signal_add_first("event topic", "event_topic"); Irssi::signal_add_first("event 332", "event_topic"); Irssi::signal_add_first("event 333", "event_topic");
autorunに入れてない場合は,Irssi起動後に「/script load conv.pl」としてプラグインを読み込んでください.
更新履歴
- 2006-12-31 公開