tmuxのセッション管理を簡単にする「tmuxist」の紹介
こんにちは、K@zuki.です。
tmuxを使った開発環境の構築は便利ですが、毎回手動でウィンドウやペインを設定するのは面倒です。 実は約7年前から自分用に開発・使用している設定ファイルからtmuxセッションを自動生成できるtmuxistというツールがあります。
Claude Codeでtmuxを使う人が増えてきているので、改めて簡単に紹介できたらなと思っています。
tmuxistとは
tmuxistは、YAMLまたはTOMLの設定ファイルからtmuxセッションを自動的に作成・管理するツールです。
元々は2017年頃から自分の開発環境を効率化するために作り始めたツールで、長年使い続けながら改良を重ねてきました。
特徴としては、
といった形です。
tmuxinatorやtmuxpなどと比べると圧倒的に機能は劣りますが、必要最小限の機能で構成されていて、単一バイナリで動作させられるのでサーバで作業する場合でも便利です。
start というセッションを管理するコマンドがありますが、すでに起動しているセッションがあれば、簡単にセッションにアタッチもできるので、急にエディタが終了した場合にも重宝します。
インストール
Homebrew(macOS/Linux)
brew tap corrupt952/tmuxist brew install tmuxist
手動インストール
Releasesから各OS向けのバイナリをダウンロードしてください。単一バイナリなので、パスを通すだけで使えます。
機能
何度も紹介してるので詳細はGitHubを見てもらったらいいですが、簡単に説明します。
tmuxist init... 設定ファイルの雛形を生成(YAML/TOML形式を選択可能)tmuxist start... 設定ファイルを読み込んでtmuxセッションを起動・もしくは起動済みのセッションへのアタッチtmuxist kill... 設定ファイルで定義されたセッションを終了
特に重宝するのはtmuxist startでして、何度も説明しますがセッションへのアタッチが比較的容易であるのが便利です。
Claude Codeを利用する場合にここ数ヶ月私がどのプロジェクトにも入れているテンプレ設定ファイルは👇になるので、参考にしてみてください。 github.com
Grid記法によるレイアウト設定
さっき実装してきたんですが、従来のtmuxレイアウト設定はmain-verticalやtiledなど、名前から実際の配置をイメージしづらいものでした。
tmuxist v1.2.0から、直感的なGrid記法が使えるようになりました。
name: development windows: # 2x2のグリッドレイアウト - layout: "2x2" panes: - command: htop - command: docker stats - command: tail -f app.log - command: watch date
これは以下のようなレイアウトになります。
┌────────┬────────┐ │ htop │ docker │ ├────────┼────────┤ │ tail │ watch │ └────────┴────────┘
対応しているGrid記法は他にも以下のようなものがあります。
"2x2"- 2列×2行(4ペイン)"3x2"- 3列×2行(6ペイン)"4x1"- 4列×1行(横に4分割)"1x4"- 1列×4行(縦に4分割)
また割合指定なども対応しているので、詳細はGitHubのREAMDEを見てみてください。
実際の使用例
基本的な設定(.tmuxist.yaml)
name: my-project root: ~/projects/myapp windows: # エディタとサーバー - layout: main-vertical panes: - command: nvim - command: npm run dev size: "25%" # モニタリング - layout: "2x2" panes: - command: htop - command: docker stats - command: tail -f logs/app.log - command: watch -n 1 'netstat -tuln'
セッションの起動
# プロジェクトディレクトリで tmuxist start # カスタム設定ファイルを指定 tmuxist start -f custom-config.yaml
なぜ自作しているのか
7年前、既存のツール(tmuxinator等)を試しましたが、自作することに決めました。
理由はとても単純で
だけですね。
概ねどの環境でもRuby/Pythonが入ってるケースもあるんですが、コンテナ環境やCI、一部のminimalなサーバではツールのためだけにインストールするのが癪だったのでこのような形でやっています。
結果として、Go言語で必要最小限の機能に絞ったツールを作ることで、これらの問題を解決できいます。
競合ツールとの比較
tmuxistの最大の利点は、依存関係なしで動作することです。
CIパイプラインやDockerコンテナでも、バイナリを配置するだけで使えます。
逆にいえばそれ以外で秀でている点は皆無なので、人にtmux周りで聞かれた時は別のツールをおすすめすることが多いですね。
| ツール | 言語 | 依存関係 | 特徴 |
|---|---|---|---|
| tmuxist | Go | なし | シンプル |
| tmuxinator | Ruby | Ruby必須 | 最も人気 |
| tmuxp | Python | Python必須 | 高機能 |
おわりに
tmuxistは「シンプルで高速、でも必要な機能は押さえている」をコンセプトに、7年間の実使用を通じて自分のために磨き上げてきたツールです。
特にGrid記法による直感的なレイアウト設定は、tmux初心者の方でも簡単にペインのレイアウトを組みやすくなっているかなと思います。
また、今後も時間があればアップデートしていくと思います。
自分用に作ったツールですが、同じような悩みを持つ方の役に立てば幸いです。
もしtmuxでの開発環境構築を効率化したい方は、ぜひ試してみてください。
GitHubでのフィードバック、コントリビューションもお待ちしています!