Slack の IRC gateway が終了するということもあって、 wee-slack をしばらく使ってみました。
対象バージョン
- Ubuntu 16.04.4 LTS
- weechat-core, weechat-curses, weechat-perl, weechat-plugins, weechat-python 2.1-1
- python-websocket 0.18.0-2
- wee-slack 2.0.0
依存関係のインストール
WeeChat 自体はWeeChat 側のリポジトリから最新安定版の 2.1-1 をインストールしました。
wee-slack で必要なので、 pip install websocket-client
ではなく、 sudo apt install python-websocket
で websocket-client を入れました。
apt search websocket-client
で python-websocket
と python3-websocket
があったのですが、 weechat-python
が依存しているのが libpython2.7
だったので、 python 2 の方のを入れました。
wee-slack のインストール
自分で wee_slack.py
をダウンロードしなくても、 weechat 上で /script install slack.py
でインストールできますが、 以下のエラーになります。
python: スクリプト "/home/vagrant/.weechat/python/slack.py" のロード中
python: スクリプト "slack"、バージョン 2.0.0 (Extends weechat for typing
notification/search/etc on slack.com) が登録されました
python: 標準出力/標準エラー (slack): Traceback (most recent call last):
python: 標準出力/標準エラー (slack): File "/home/vagrant/.weechat/python/slack.py", line
3836, in <module>
python: 標準出力/標準エラー (slack): EMOJI.extend(load_emoji())
python: 標準出力/標準エラー (slack): File "/home/vagrant/.weechat/python/slack.py", line
3477, in load_emoji
python: 標準出力/標準エラー (slack): dbg("Couldn't load emoji list: {}".format(e), 5)
python: 標準出力/標準エラー (slack): UnicodeDecodeError: 'ascii' codec can't decode byte
0xe3 in position 10: ordinal not in range(128)
python: ファイル "/home/vagrant/.weechat/python/slack.py" を解析できません
そのため、 weemoji.json
をダウンロードして WEECHAT_HOME
に置く必要がありました。
$ wget https://raw.githubusercontent.com/wee-slack/wee-slack/master/weemoji.json
$ mv weemoji.json ~/.weechat
そして、 /script install slack.py
は script: スクリプト "slack.py" の最新版がインストール済みです
になったので /script load slack.py
としてみると、
python: スクリプト "/home/vagrant/.weechat/python/autoload/slack.py" のロード中
python: スクリプト "slack"、バージョン 2.0.0 (Extends weechat for typing
notification/search/etc on slack.com) が登録されました
と出てきて使えるようになりました。
チーム追加
/slack register
で出てくる URL を開いて許可します。 メッセージは以下のように出ます。
#### Retrieving a Slack token via OAUTH ####
1) Paste this into a browser:
https://slack.com/oauth/authorize?client_id=...&scope=client
2) Select the team you wish to access from wee-slack in your browser.
3) Click "Authorize" in the browser **IMPORTANT: the redirect will fail, this is
expected**
4) Copy the "code" portion of the URL to your clipboard
5) Return to weechat and run `/slack register [code]`
許可すると、 wee-slack の 3 の説明にあるように http://not.a.realhost/?code=コード&state=
にリダイレクトされてエラー画面になるので、 code=コード
の コード
の部分をコピーして、 /slack register コード
を実行すると
Success! Added team "NAME"
Please reload wee-slack with: /script reload slack
とメッセージが出るので、 /script reload slack
すると繋がって、チャンネルなどが出てきます。
複数チームを登録する場合は /slack register
と /slack register コード
を繰り返せば良いようです。
その他のおすすめ設定
weechat-cursesでの罫線の文字幅問題を回避するの設定の他に、 以下のような設定をしました。
バッファ一覧関連
以下の設定をしてもすぐに並び変わらないようで、 weechat を再起動したらサーバーごとのツリーになっていました。
/set irc.look.server_buffer independent
/set irc.look.new_channel_position near_server
/set irc.look.new_pv_position near_server
logger
IRC は bouncer 経由なのでログ不要ということでログをとらないようにしたのと、 ログは基本的に日付ごとに分けるようにしました。 slack のログを取らないようにする方法はすぐにはわかりませんでした。
/set logger.level.irc 0
作成されたオプション: logger.level.irc = 0 (デフォルト: 9)
/set logger.file.mask "%Y/%m/%d/$plugin.$name.weechatlog"
変更されたオプション: logger.file.mask = "%Y/%m/%d/$plugin.$name.weechatlog" (デフォルト: "$plugin.$name.weechatlog")
プラグイン
使ってみているプラグインとその設定です。
go
/script install go.py
/set plugins.var.python.go.sort "hotlist,number,beginning"
/key bind ctrl-G /go
sort 順は "number,beginning"
から変更しました。 キー割り当ては /key bind ctrl-g /go
ではダメで G
にする必要がありました。
切り替えの入力を失敗して発言してしまったことがあったので、 auto_jump
も有効にしてみました。
/set plugins.var.python.go.auto_jump "on"
hotlist でソートするようにしていると、 ctrl-G
Enter
ですぐに移動できると思いきや、 デフォルトで選ばれているのが現在表示しているチャンネルで、 Tab
, Shift+Tab
に前後に移動できるものの、 遠いと移動するよりも数字を入力するなどした方が早くなるので悩んでいたところ、 普通のチャンネルは サーバー名.チャンネル名
と .
を含むので、 ctrl+G
.
Enter
で簡単に移動できると気づきました。
urlbuf
番号と URL のみが urlbuf というバッファにたまるようです。 URL が含まれる発言がわかるわけではないようなので、一度みたものを後から参照したり、 改行が入ってコピーしにくかったのをコピーしやすくする、ぐらいの用途には使えそうです。
/script install urlbuf.py
後述のプラグインで 2.chanmon
, 3.highmon
になって、 番号がすべて chanmon の番号になってしまって、 元々どのチャンネルの発言かわからなくなっていたので、 skip_buffers
の設定をしました。
/set plugins.var.python.urlbuf.skip_buffers "2,3"
chanmon
LimeChat などにあるような全チャンネルの発言が流れるバッファーができます。
/script install chanmon.pl
/chanmon help
highmon
ハイライトを含む行を集めたバッファーができます。 slack の @here
の行も溜まっていました。
キーワードハイライトの設定自体は weechat 側の設定になります。
/script install highmon.pl
/highmon help
/set weechat.look.highlight "$nick,znz,西山"
autosort
バッファ一覧の順番が安定するように autosort を入れてみました。
/script install autosort.py
/autosort rules list
/autosort helpers list
しばらく使ってみた感想
インストール時に weemoji.json
でこけてソースをみないと解決方法がわからなかったり、 色々な設定やプラグインとの組み合わせが IRC サーバーとは違って、何かうまくいかない感じだったり、 スレッド対応が微妙 (チャンネルにも発言するようなリプライでもチャンネル側に出てこないとか issues を thread で検索すると色々でてくるとか) だったり、 基本的なところ以外は問題もありそうですが、 公式の Slack クライアントと併用する感じだと、 IRC とまとめて確認できる環境になって便利そうです。