Irssi
irssi はモジュール式の、ncurses ベースの IRC (Internet Relay Chat) クライアントです。プラグインにより SILC と ICB プロトコルもサポートしています。
目次
インストール
AUR の irssi-script や、irssi スクリプトリポジトリ にはスクリプトが多数用意されています。
使用方法
詳しい使い方は 公式ドキュメント を見て下さい。
tmux や Screen などのターミナルマルチプレクサを使うことが推奨されています。簡単にセッションから切断したり再接続することができ、nicklist.pl などのスクリプトはセカンダリウィンドウを使用します。irssi を起動するには、次を実行:
$ irssi
コマンド
コマンド | 説明 |
---|---|
/server , /s
|
現在のネットワークサーバーを変更。 |
/connect , /c
|
新しくサーバーに接続する。複数のサーバーに同時に接続するときに使います (Ctrl+Shift+x でサーバーを切り替えられます)。
|
/disconnect , /dc
|
サーバーとの接続を終了する。 |
ALT+(1-0,q-p,etc)
|
現在のアクティブウィンドウを変更。Ctrl+n で次のウィンドウに、Ctrl+p で前のウィンドウに変わります。
|
/window 1
|
最初のウィンドウに移動。キーボードの上段がウィンドウに対応しています: (1-0), (q-p)。 |
/window close , /wc
|
カレントウィンドウを閉じる。 |
/window move 1
|
カレントウィンドウを最初のウィンドウの位置に移動。 |
/layout save
|
カレントウィンドウの位置を後で使うために保存。 |
/set
|
現在の設定リストを表示。 |
/help
|
パラメータの説明を表示。 |
/alias
|
ショートカットを作成。 |
設定
個人設定ファイルは ~/.irssi/config
に配置します。/etc/irssi.conf
にテンプレートがあります。--config
フラグを使うことで他の設定ファイルを使って irssi を起動できます。
/save
を使うことで現在の設定を設定ファイルに保存できます。/layout save
と入力することで開いているウィンドウの位置を保存できます。
SASL で認証
以下のようにネットワークを追加してください:
/SERVER ADD -auto -ssl -ssl_verify -ssl_capath /etc/ssl/certs -network freenode -port 6697 irc.freenode.net /NETWORK ADD -sasl_mechanism plain -sasl_username <username> -sasl_password <password> freenode
irssi を再起動してネットワークに接続すると "SASL authentication succeeded" と表示されます。
起動時に #archlinux に自動で接続
irssi を起動して以下を入力してください:
/server add -auto -network freenode chat.freenode.net
freenode
は自由な名前に置き換えることができます (例: fn
)。
SASL を正しく設定してください。SASL の代わりに -autosendcmd
を使って手動で NickServ を使うこともできますが、チャンネルに自動で参加するときに競合状態になってしまいます。出来るだけ、NickServ でパスワードを使うよりも、SSL 証明書で認証してください。
/channel add -auto #archlinux freenode /channel add -auto #archlinux-offtopic freenode
SSL 接続
Freenode は SSL 接続にポート 6697, 7000, 7070 を使っています (6667 は使っていません)。Freenode IRC ネットワークに SSL を通して接続したい場合、新しい接続をセットアップする必要があります。irssi
を起動して次を実行:
/server add -auto -ssl -ssl_verify -ssl_capath /etc/ssl/certs -network freenode -port 6697 chat.freenode.net
そして新しい設定を保存:
/save
問題なければ "Z" モードがセットされるのが確認できます。次のように表示されます: "Mode change (+Zi) for user your-nick"。
クライアント証明書
Freenode と OFTC は平文のパスワード認証の代わりに、SSL 証明書による認証をサポートしています。詳しくは Freenode の Identifying with CERTFP と Creating an SSL Certificate を見てください。
730日間有効な証明書を作成するには (国名や Common Name (CN) などの入力を求められた場合、自由に入力してください):
$ openssl req -newkey rsa:2048 -days 730 -x509 -keyout irssi.key -out irssi.crt -nodes $ cat irssi.crt irssi.key > ~/.irssi/irssi.pem $ chmod 600 ~/.irssi/irssi.pem $ rm irssi.crt irssi.key
次に、フィンガープリントを確認してください:
$ openssl x509 -sha1 -fingerprint -noout -in ~/.irssi/irssi.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'
これにより、フィンガープリントが標準出力に書き込まれます。(sed コマンドは、不要なテキストや文字を削除してフィンガープリントを正しくフォーマットするために使用されます。)指紋の文字列をコピーします。後で irssi に登録します。
irssi で、ネットワークから切断し、クライアント証明書とキーを追加します。証明書がパスワードなしで作成された場合は、-ssl_pass オプションを省略します。
/disconnect Freenode /server add -ssl_cert ~/.irssi/irssi.pem -ssl_pass <irssi.pem_password> -network freenode chat.freenode.net 6697
ここで接続し (/reconnect
ではなく) フィンガープリントを登録します。
/connect Freenode /msg NickServ identify YOUR_PASSWORD /msg NickServ cert add YOUR_FINGERPRINT
この時点で、設定ファイルからパスワードを削除し (設定ファイルにパスワードを保存した場合) 、次のコマンドで設定を保存できます。
/save
自動ログイン
/SET autolog ON /save
join, part, quit を隠す
すべてのチャネルのユーザの参加、脱退、終了の表示を隠すには、 irssi に次のように入力します:
/ignore * joins /ignore * parts /ignore * quits
参加メッセージをアクティブ・ユーザーに制限するには、 smartfilter を参照してください。
マウススクロール
マウスを有効にするには、irssi に次のように入力します。
/run scriptassist /script install mouse.pl
永続的に有効にするには:
/script autorun mouse.pl
上記が動作しない場合は、 ~/.irssi/scripts
または ~/.irssi/scripts/autorun
からスクリプトを手動で次のようにロードできます。
/script load mouse.pl
ヒントとテクニック
HTTP プロキシ
irssi で HTTP プロキシを使うには、以下のコマンドが必要です:
/SET use_proxy ON /SET proxy_address <Proxy host address> /SET proxy_port <Proxy port> /SET -clear proxy_string /SET proxy_string_after conn %s %d /EVAL SET proxy_string CONNECT %s:%d HTTP/1.0\n\n
irssi はそれに応じて設定ファイルを変更します。プロキシが必要ない場合は、 use_proxy を OFF に設定します。
プロキシがパスワードを要求する場合は、以下を試してください。
/SET proxy_password your_pass
そうでない場合:
/SET -clear proxy_password
tmux で irssi と nicklist
irssi プラグイン nicklist は、現在表示されているチャンネルのユーザーを一覧表示するペインを追加します。これには2つの方法があります。
- screen は単に irssi の右側にリストを追加するだけですが、 irssi が行を印刷するたびにウィンドウ全体が再描画されるという欠点があります。
- fifo は名前が示すようにリストを fifo に書き込み、連続的に読むことができます。例えば cat~/.irssi/nicklistfifo です。
nicklist はより効率的な FIFO を以下で使用します。
/NICKLIST FIFO
この fifo は tmux ウィンドウで使用することができます。左側のペインの irssi と cat は、その右側の小さいものの上から垂直に分割できます。 ペインは tmux セッションのジオメトリの作成に依存するため、異なる1つのセッションは再作成する必要があります(fifo を補充するための irssi ウィンドウのスイッチも意味します)。
例えば、次のスクリプトは最初に実行中の irssi をチェックし、以前の自分自身の実行によって実行されたと推定されます。 見つけられない限り、新しい tmux セッション、 irssi の後に名前と実行されたウィンドウ、次に cat のペインを作成します。 ただし、 irssi が見つかった場合は、それは単にセッションに添付され、 cat のペインを再現します。
#!/bin/bash T3=$(pgrep -u $USER -x irssi) irssi_nickpane() { tmux setw main-pane-width $(( $(tput cols) - 21)); tmux splitw -v "cat ~/.irssi/nicklistfifo"; tmux selectl main-vertical; tmux selectw -t irssi; tmux selectp -t 0; } irssi_repair() { tmux selectw -t irssi (( $(tmux lsp | wc -l) > 1 )) && tmux killp -a -t 0 irssi_nickpane } if [ -z "$T3" ]; then tmux new-session -d -s main; tmux new-window -t main -n irssi irssi; irssi_nickpane ; fi tmux attach-session -d -t main; irssi_repair ; exit 0
バーチャルホストネーム (vhost)
バーチャルホストは、 IRC サーバに接続しているときにホスト名を変更するために使用できます。 IRC サーバは、一般的に whois に参加したり別れたりするときに表示されます。これは、静的 IP アドレスを持つサーバで最も一般的に行われます。 vhost がなければ、'whois' を実行したときに普通はこのようになります。
nick@123.456.78.90.isp.com
ドメイン example.com が使用可能な場合、成功した vhost の結果は次のようになります。
nick@example.com
すべての IRC サーバが vhost の使用をサポートしているわけではないことに注意してください。これは、ネットワークではなくサーバ間で個別に設定される場合があるため、サーバで問題が発生した場合は、同じネットワーク上の別のサーバを試してください。
必要な設定
irssi は、必要な構成が設定されている限り、バーチャルホストの使用をサポートします。これには、特にホストがポインタレコード (PTR) を使用した 逆引きDNS検索 (rDNS) をサポートしていることが含まれます。さらに、 /etc/hosts
ファイルに適切な行を追加する必要があります。
これが動作するかどうかを確認するには、 bind に含まれている 'host' DNS lookup ユーティリティを使用して、次のようにテストします (ip は通常の IPv4 アドレス)
host ip
この行で何かが返された場合、 rDNS が動作していることがわかります。
ip.in-addr.arpa domain name pointer example.com
vhost の有効化
ホストネームを指定してサーバーに接続する方法は複数存在します。-host 引数を使用して 'server' コマンドを実行する方法:
/server -host example.com irc.freenode.org
'set' コマンドを使用してホストネーム (vhost) を設定する方法 (ホストネームは ~/.irssi/config
に保存されます):
/set hostname example.com /save /server irc.freenode.org