Tmuxp

提供: ArchWiki
2017年2月11日 (土) 21:17時点におけるKusakata (トーク | 投稿記録)による版 (翻訳)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

関連記事

tmuxptmux ターミナルマルチプレクサのセッションマネージャです。tmuxinatorteamocil と同じ類のプログラムです。

インストール

tmuxpAUR パッケージをインストールしてください。

tmuxp は以下のように pip を使ってインストールすることもできます:

$ pip install --user tmuxp

設定

tmuxp は JSON や YAML で設定できます。YAML のマークアップは tmuxinator と似ています。

ディレクトリに保存した設定を使用する方法は3つあります:

  1. tmuxp load filetmuxp load ../myconfig で、絶対・相対パスでファイルを指定する。
  2. $TMUXP_CONFIGDIR のパス (デフォルトでは $HOME/.tmuxp) に設定を保存して tmuxp load basename で読み込む。例えば tmuxp load myconfig$HOME/.tmuxp/myconfig.yaml がロードされます。
  3. プロジェクトのディレクトリに .tmuxp.yaml を保存して tmuxp load path/to/dir で読み込む (VCS のプロジェクト・フォルダごとに設定を保存できます)。

YAML の設定は以下のようになります:

session_name: 4-pane-split
windows:
- window_name: dev window
  layout: tiled
  shell_command_before:
    - cd ~/                    # run as a first command in all panes
  panes:
    - shell_command:           # pane no. 1
        - cd /var/log          # run multiple commands in this pane
        - ls -al | grep \.log
    - echo second pane         # pane no. 2
    - echo third pane          # pane no. 3
    - echo forth pane          # pane no. 4

また、tmuxp では before_script を使うことで tmux のセッションを開始する前に任意のスクリプトを実行することができます。例えば tmuxp プロジェクト自体から の例として、プロジェクト用に virtualenv (python のパッケージ環境) を作成して依存パッケージをインストールする bootstrap スクリプト が存在します。さらに、セッションはプロジェクトの virtualenv を全てのペインに設定します:

session_name: tmuxp
start_directory: ./ # load session relative to config location (project root).
before_script: ./bootstrap_env.py # ./ to load relative to project root.
windows:
- window_name: tmuxp
  focus: True
  layout: main-horizontal
  options:
    main-pane-height: 35
  shell_command_before:
    - '[ -d .venv -a -f .venv/bin/activate ] && source .venv/bin/activate'
  panes:
  - focus: true
  - pane 
  - make watch_test
- window_name: docs
  layout: main-horizontal
  options:
    main-pane-height: 35
  start_directory: doc/
  shell_command_before: 
    - '[ -d ../.venv -a -f ../.venv/bin/activate ] && source ../.venv/bin/activate'
  panes:
  - focus: true
  - pane
  - make serve
  - make watch

YAML や JSON の設定に関してはドキュメントに 様々な例 が載っています。

参照