Help us understand the problem. What is going on with this article?

weechat のススメ(導入〜設定)

More than 5 years have passed since last update.

IRCクライアント、皆さんは何を使われてますか?

私は今まで mac上で limechattextual といった 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 でも起動します(エイリアス)。

スクリーンショット 2014-03-27 00.37.37.png

これが初期画面。味気ない画面ですが、これからカスタマイズしていきます。
今から書いて行く設定を適用していくと、最終的に

2__WeeChat_0_4_3__weechat_.png

こんな感じの画面になります。
(私は 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 をブラウザで開く事ができます。

スクリーンショット 2014-04-01 18.48.20.png

その他便利なプラグイン

/script でインストールできるスクリプトプラグインの一覧を表示し(ここに表示されていないプラグインも沢山ある様です)、インストール等の操作が可能です。

スクリーンショット 2014-04-02 10.50.17.png

左から、
i がインストール済み
a が autoload 設定済み
r が running 状態である
事を意味しています。

カーソルを移動して選択した状態でキー操作する事で、様々な操作ができます。(例えば /script install hoge 等と入力しなくても、選択して i をタイプすればインストールされる)

プラグインインストール時に注意する事

エラーが発生した場合等に気づける様に、weechat バッファを表示しておくのをお勧めします。このバッファには各操作のログや、/help hogehoge を入力した際の出力内容が流れます。

スクリーンショット 2014-04-02 11.07.06.png
上は /help chanmon を実行した結果

例えばプラグインのインストールに成功したが、必要なライブラリが不足していた為起動に失敗した場合等は i a は表示されているが r が表示されていない状態になるので、そういった時に weechat バッファでエラー状況を確認します。

発言者ごとにテキストを色分けする

/script install colorize_lines

を入れると
スクリーンショット 2014-03-29 12.07.03.png
みたいに発言者ごとに色分けされます。

grep検索

/script install grep

バッファとログファイルから正規表現で grep 検索できるようになります。

url hinter

http://tkengo.github.io/blog/2014/04/15/introduction-weechat-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

スクリーンショット 2014-03-29 12.53.42.png

/prism -e hoge

スクリーンショット 2014-03-29 12.53.52.png

eye-destroying colors モードw

/prism -b hoge

スクリーンショット 2014-03-29 12.52.31.png

テキストのリバースもできます。無駄に楽しい。

マインスイーパーがやりたい

/script install minesweeper

困っている事

  • 画像URLが貼られた時にプレビューを表示したい

その他

ユーザーズガイド

weechat は ユーザーズガイド が日本語で詳細に書かれている為、これを読めば大抵の事は解決すると思います。

スクリプトプラグイン制作

様々な言語でスクリプトプラグインを作る事が出来るので、自分で書いてみるのも楽しそうです。
スクリプト制作ガイド も日本語で読めるので便利!

参考サイト

まとめ

CUI チャットクライアント weechat の導入から便利な設定までをご紹介しました。

Limechat 等の GUI クライアントに比べると初期設定など手がかかる部分もありますが、自分用にカスタマイズしていく楽しさもあり、ただの IRC クライアントでは無く環境の様な感じで使えるので大変気に入ってます。

もっと便利な使い方、プラグイン情報などありましたらコメント頂けると有り難いです!

良い IRC 生活を :)

taketin
最近は iOSアプリケーション をメインに開発しています
https://github.com/taketin
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした