gomodoroの残り時間をtmuxのstatus lineに出すプラグインをつくった

完成したもの

f:id:hatappi1225:20171229235334g:plain

キャプチャを見ると分かるようにgomodoroを動作させてない時は--:--になっており、動作している時は24:32のようにtmuxのstatus lineに表示されています!!
今回はこれをつくりました。

なんで作ったのか?

gomodoroは元々時間が終わるとデスクトップ通知と音を出すようにしている。
これを実装したのはgomodoroはコマンドラインで実行するが、ずっとコマンドラインに出しておくのは邪魔で別タブとかtmuxで別セッションとかで動かすことが想定されたので、終了したことに気づけるようにしたかったため。

ただ実際に使っていると集中しすぎて、通知とか音を逃してしまい気づいたら終わってることが良く起きた。
時々タブを切り替えてヘルスチェックするのも面倒だし、なんとかしたいなって思っていたら最近次の記事をみた。

naoty.github.io

そうかtmuxのstatus lineにのせる手があるか!!! で作ったというのが理由です。

どうやって作ったの?

hatappi.hateblo.jp

昨日gomodoroのリリースノートにも書いたように最近gomodoroの0.2.0をリリースしたのですが、その時にgomodoro remainという残り時間を標準出力するコマンドを作成しました。
これを使います。

tmuxにはstatus lineに任意のコマンドの標準出力を表示させたりカスタマイズすることが出来ます。
またtmuxはプラグインを作成することが出来て、ユーザーに便利な機能を提供できるようになっています。
さらにtpmというプラグインマネージャーまで存在していて、これを使うことでユーザーは簡単にプラグインを導入することが出来ます。

github.com

プラグインは比較的簡単に作成することが出来て、tpmでもその例が記載されています。

tpm/how_to_create_plugin.md at master · tmux-plugins/tpm · GitHub

上の例ではtmux起動時のキーバインドに任意のアクションを追加するプラグインだったので今回やりたかったstatus line上に何か表示されるものは、このorganaization内の他のリポジトリを参考にしました。

これで出来たものがtmux-gomodoroです。

github.com

利用手順

このプラグインを利用するにはもちろんgomodoro本体が起動できる必要があります。
あとはtpmを利用している状態であれば.tmux.confset -g @plugin 'hatappi/tmux-gomodoro'を追加してprefix + Iでインストールすることが出来ます。

後はstatus lineに任意の箇所に#{gomodoro_remain}と記載して再読み込みすれば最初のキャプチャのように表示されるはずです。

set -g status-right 'gomodoro[#{gomodoro_remain}] | %Y-%m-%d(%a) '

最後に

今回はtmux用のgomodoroプラグインを作成して提供したことをかきました。
自分で使った感想ですが、status lineに出せるようになったのでタブ移動とかセッション移動とかして見に行かなくてよくなったので便利になりました。