IRCクライアント、皆さんは何を使われてますか?
私は今まで mac上で limechat や textual といった GUI クライアントを使っていましたが、最近社内のイケてる同僚エンジニアより勧められた weechat を導入したところ色々と捗ったので、私の設定をご紹介しつつオススメしたいと思います。
weechat とは?
- モジュール式: 軽量のコアと選べるプラグイン
- multi-protocols architecture (mainly IRC)
- C 言語、Python、Perl、Ruby、Lua、Tcl、Scheme で拡張可能
- 詳しく文書化され、数種類の言語に翻訳されている
- GPLv3 ライセンスのもとにリリースされるフリーソフトウェア
- スクリプトを作成する大きなコミュニティを持つ活発なプロジェクト
(本家サイトより転載)
weechat は主に IRC用として使う CUI のチャットクライアントで、軽量かつ拡張性の高さが特徴の様です。
開発も活発な様で、2014/3/27現在 ver0.4.3
がリリースされています。
とりあえず入れてみましょう!
install
brew install weechat --with-ruby --with-python --with-perl
mac は brew で入ります。各言語で書かれたプラグインスクリプトを使いたいので、オプションを付けています。
正常にインストールできたら
weechat
で起動します。 ※ weechat-curses
でも起動します(エイリアス)。
これが初期画面。味気ない画面ですが、これからカスタマイズしていきます。
今から書いて行く設定を適用していくと、最終的に
こんな感じの画面になります。
(私は iTerm2 + tmux 上で利用しています)
サーバ設定
まずはサーバを設定します。
/server add hoge irc.example.com/6667
hoge
部分に任意のサーバ名を入れ、ホストを適宜入力してください。
必要であれば
-ssl -autoconnect -password=mypassword
といったオプションがありますので、付与してください。
設定したサーバへの接続、切断
# 接続
/connect hoge
# 切断
/disconnect hoge
チャンネル接続、切断
# 接続
/join #hoge
# 切断
/close #hoge
チャンネル間の移動
weechat では、各チャンネル(に限らず1つの画面)を buffer
と呼びます。
# buffer の移動
/buffer #hoge
設定を保存する
今から設定する内容は、保存しないと終了時に消えてしまいます。
設定をいじった場合は終了前に save しましょう。
/save
weechat を終了する
/exit
チャンネルリストを表示する
現状ですと、自分がどのチャンネルを設定しているか等分かりにくいです。
現在自分が設定しているチャンネル(buffer)リストを表示するプラグインを入れます。
/script install buffers
/script install hoge
でプラグインスクリプトをインストールする事ができます。
この buffers
というプラグインを入れると、先ほどのキャプチャ左端の様に設定したチャンネル一覧が常に表示される様になります。
Alt + ↑ or ↓
で buffer の移動ができます。
チャンネルを素早く移動できるようにする
ちまちまと /buffer #hoge
と入力してチャンネルを移動するのは辛いものがありますので、便利プラグインを入れます。
/script install go
この go
というプラグインを入れると、
/go
と入力してエンターを押した後、チャンネル名をタイプしていく毎にインクリメンタルサーチしてくれます。
/go
の後にチャンネル名を入力しても移動できます。
キーバインドを設定する
更に以下の様に設定しておくと
/key bind ctrl-G /go
ctrl + g
で go を起動できて捗ります。
ウィンドウを分割する
# 水平分割
/window splith
# 垂直分割
/window splitv
引数として数値を渡せば、/window splith 60
など割合を指定して分割する事もできます。
先ほどのキャプチャでは4画面に分割しています。
ウィンドウを統合する
/window merge
で分割したウィンドウを統合する(元に戻す)事ができます。
オプションもいくつかあり、
# 全部統合する
/window merge all
# ウィンドウ番号を指定して統合する
/window merge -window 1
等があります。
ウィンドウ間を移動する
# 引数として up down left right を与えると、その方向へ移動できる
/window {up|down|left|right}
ただこれだといちいちコマンド入力が面倒なので、ショートカットを登録します。
/key bind ctrl-H /window left
/key bind ctrl-J /window down
/key bind ctrl-K /window up
/key bind ctrl-L /window right
ここでは vim のキーバインドに合わせていますが、各位お好きな様に設定すると良いのではないでしょうか。
なお HJKL
部分は大文字で設定しますが、実際のキー入力は大文字にしなくても大丈夫です。
入力バーを一カ所にまとめる
ウィンドウを分割すると、各ウィンドウに入力バーが存在します。これがうざい感じなので、画面下部に1つ入力バーがある状態にします。
/bar add rootinput root bottom 1 0 [buffer_name]+[input_prompt]+(away),[input_search],[input_paste],input_text
とした後
/bar del input
でOKです。
もとに戻したい場合は
/bar del rootinput
と入力します。
アクティブなウィンドウだけハイライトする
現状だと、分割した全てのウィンドウがハイライトされている状態です。好みもあるかと思いますが、私の場合今どこのウィンドウを見ているかを忘れて誤爆する事がありますので、見ている(アクティブ)ウィンドウ以外をグレーアウトする設定にしています。
/set weechat.look.color_inactive_window on
レイアウト設定を保存する
/layout store {name}
で現在のウィンドウとバッファを保存します。名前を付けて複数保存する事ができ、指定しない場合は default
として保存されます。
また、保存した設定は
/layout apply {name}
で呼び出せます。
全チャンネルの発言をモニタするバッファを追加する
limechat 等の一般的な IRCクライアントには全チャンネルのタイムラインが表示されるウィンドウがあります。これも追加できます。
/script install chanmon
これを入れると chanmon
バッファが生成されますので、ウィンドウ分割して表示させとくと便利です。
ハイライト、通知周り
キーワードハイライトを設定し、通知を行えなければ話しになりませんね。
/set weechat.look.highlight "$nick,hoge,fuga,piyo"
# 正規表現指定
/set weechat.look.highlight_regex .*\bこんにちは\b.*
さらに
/script install highmon
これを入れると、ハイライトを含む発言のみを集めた highmon
バッファが作成されます。
こちらのページ に書いてある設定を行うと、ハイライトを含む発言が入力バーの下にどんどん表示されていくのでチェック漏れが無くなって良いです。チェックしたら
/clear_highmon
でバッファをクリアできます。
これもキーバインド設定しとくと捗りますよ。
/key bind ctrl-C /clear_highmon
これで ctrl + c
で消去できます。
(再起動時に一気に再出力されるのがうざいですが、対策検討中..)
Growl通知
mac の notification_center
への通知プラグインもありますが、現状 Growl の方がデザイン等好みの設定をする事ができますのでこちらを利用しています。
利用する為には gntp という python のライブラリが必要なので、入れておきます。
※ pip で入れるので、pipが無い場合は先にコンソールから easy_install pip
で入れておきます。
# コンソール上にて
sudo pip install gntp
# weechat入力バーにて
/script install growl
Growl 環境設定のアプリケーション欄に WeeChat の表示が出ていればインストール成功です。
その他の設定
ログレベルの設定
ログはデフォルトだと何でも記録してしまい膨大な量になるので、絞っておいた方が良いです。
0: 記録しない
1: ユーザからのメッセージ (チャンネルまたはプライベート)
2: ニックネームの変更 (自身と他のユーザ)
3: 任意のサーバメッセージ (参加/退出/終了メッセージを除く)
4: 参加/退出/終了メッセージ
9: すべて記録する
/set logger.level.irc 2
join / part / quit を表示しない
/filter add irc_smart * irc_smart_filter *
URL をクリックで開く(iTerm)
iTerm2 の Preferences
> Pointer
メニューの下部にある、⌘-Click Opens Filename/URL
にチェックを入れる事で、Command + Option + Click
で URL をブラウザで開く事ができます。
その他便利なプラグイン
/script
でインストールできるスクリプトプラグインの一覧を表示し(ここに表示されていないプラグインも沢山ある様です)、インストール等の操作が可能です。
左から、
i
がインストール済み
a
が autoload 設定済み
r
が running 状態である
事を意味しています。
カーソルを移動して選択した状態でキー操作する事で、様々な操作ができます。(例えば /script install hoge
等と入力しなくても、選択して i
をタイプすればインストールされる)
プラグインインストール時に注意する事
エラーが発生した場合等に気づける様に、weechat
バッファを表示しておくのをお勧めします。このバッファには各操作のログや、/help hogehoge
を入力した際の出力内容が流れます。
例えばプラグインのインストールに成功したが、必要なライブラリが不足していた為起動に失敗した場合等は i
a
は表示されているが r
が表示されていない状態になるので、そういった時に weechat
バッファでエラー状況を確認します。
発言者ごとにテキストを色分けする
/script install colorize_lines
grep検索
/script install grep
バッファとログファイルから正規表現で grep 検索できるようになります。
url hinter
こちらで紹介されている url_hinter
プラグインを導入すると、マウスを使用せずに URL をブラウザで開く事ができ、とても便利です。
※ 4/16現在公式プラグインとして申請中との事です
url短縮
/script install shortenurl
isgd または tinyurl で URL を短縮してくれます。
ログファイルが膨大な場合に weechat を再起動すると、リクエスト飛ばしまくって起動に物凄く時間かかりますので、このプラグインは autoload 設定しない方が良さそうです。
urlのみ集める
/script install urlbuf
発言から URL のみを集めた urlbuf
バッファが作られます。
これもログファイルが膨大な場合の再起動時に時間がかかる要因となるので、 autoload 設定しない方が良さげ。
発言をカラフルにする
/script install prism
このプラグインを入れると発言にランダムなレインボーカラーを付与する事ができます。以下の様な種類があります。
/prism hoge
/prism -e hoge
eye-destroying colors
モードw
/prism -b hoge
テキストのリバースもできます。無駄に楽しい。
マインスイーパーがやりたい
/script install minesweeper
困っている事
- 画像URLが貼られた時にプレビューを表示したい
その他
ユーザーズガイド
weechat は ユーザーズガイド が日本語で詳細に書かれている為、これを読めば大抵の事は解決すると思います。
スクリプトプラグイン制作
様々な言語でスクリプトプラグインを作る事が出来るので、自分で書いてみるのも楽しそうです。
スクリプト制作ガイド も日本語で読めるので便利!
参考サイト
- http://blog.tnmt.info/2012/02/08/weechat-growl-for-windows/
- http://blog.glidenote.com/blog/2012/02/11/weechat-plugins/
- http://inputxoutput.com/howto-weechat/
- https://gist.github.com/studio3104/6899792
まとめ
CUI チャットクライアント weechat の導入から便利な設定までをご紹介しました。
Limechat 等の GUI クライアントに比べると初期設定など手がかかる部分もありますが、自分用にカスタマイズしていく楽しさもあり、ただの IRC クライアントでは無く環境の様な感じで使えるので大変気に入ってます。
もっと便利な使い方、プラグイン情報などありましたらコメント頂けると有り難いです!
良い IRC 生活を :)