TMD45'β'LOG!!!

Life is Beta-ful.

tmuxinator 使ってみた

tmux*1のセッション定義セットを作ってくれるやつ。

tmux は使っていて、ある場合には detach/attach も便利なのだけど、ターミナルアプリそのものを終了させたときに毎回作業状態*2を復帰させるのに時間がかかっていたので導入してみた。

参考

導入

gem で提供されているので gem install する。

$ gem install tmuxinator
Fetching: tmuxinator-0.6.6.gem (100%)

    __________________________________________________________
    ..........................................................

    Thank you for installing tmuxinator.

    Make sure that you've set these variables in your ENV:

      $EDITOR, $SHELL

    You can run `tmuxinator doctor` to make sure everything is set.
    Happy tmuxing with tmuxinator!

    ..........................................................
    __________________________________________________________

Successfully installed tmuxinator-0.6.6
Installing ri documentation for tmuxinator-0.6.6
1 gem installed

ターミナルの再起動か、source ~/.zshrc で設定読み込み後に tmuxinator doctor で確認。 コマンド tmuxinator は短縮して mux でも利用可能にされている。

$ tmuxinator doctor
Checking if tmux is installed ==> Yes
Checking if $EDITOR is set ==> Yes
Checking if $SHELL is set ==> Yes

定義追加

mux new <project名> で新しい定義を登録し、定義内容を編集する。

$ mux new dev
# ここで $EDITOR に設定されたエディタが起動して定義ファイルの編集が始まる

初期状態で設定内容が書かれているので、適宜修正して書き替える。記述は yml で行う。

例:

# ~/.tmuxinator/dev.yml

name: dev
# カレントディレクトリ ~/work/dev にする
root: ~/work/dev

#  windowを10枚(0〜9)開きたい
windows:
  # window-0 はunicornとjobsを各paneで起動するために立ち上げ時にプロセスチェックしたい
  - server:
      layout: main-vertical
      panes:
        - ps aux | grep -v grep | grep unicorn # sudo bundle exec unicorn -c ./config/unicorn.rb -p 3000
        - ps aux | grep -v grep | grep jobs    # rake jobs:work
  - zsh: ll ./app
  - zsh:
  - zsh:
  - zsh:
  - zsh:
  - config:  ll ./config
  - logs:    ll ./log   # tail -f ./log/development.log
  - spec:    rake spec  # rake spec
  - console: # rails c

layout には tmux でサポートされているレイアウト*3が指定できる。

保存すれば準備は完了する。

定義ファイルの保存場所は以下にあるので、dotfile リポジトリなどで管理しておけば複数端末でも共通して利用できる。
定義の修正もこのファイルを直接編集すれば良い。ただし project名 はファイル名を指しているようなので、project名 を変更したい場合はファイル名ごと修正する必要がある。

$ ls ~/.tmuxinator   ← ここ
dev.yml

利用

  • mux list で登録した定義の一覧が見られる。
  • mux start <project名> で定義を利用して新しいセッションを開始する。

その他、コマンド mux をオプションなど何も付けずに実行すると、利用できるコマンドの簡易ヘルプが見られる。

*1:ターミナルマルチプレクサのひとつ。screen の同類

*2:常に window 10枚開いて、0番はサーバ起動、7番はログのtail、…とかだいたい決めて使っていたのだけど、いちいち window 10枚起動するとこからして面倒だった。

*3:tmux のマニュアル https://bytebucket.org/ns9tks/tmux-ja/wiki/tmux-ja.html の『以下のレイアウトがサポートされています:』以下の一覧を参照。

▲ ページトップへ移動