dshimizu/blog/alpha

とりとめのないITブログ

新規tmuxセッション起動時に自動で複数のウィンドウを作成してペイン分割する

はじめに

tmuxの新規セッション起動時に、毎回必要なウィンドウとペインを作成するのは面倒なときがあります。
そんなときは、あらかじめ必要なウィンドウとペインを作成するファイルを用意しておき、起動時にそのファイルを読み込ませることで自動でウィンドウとペインを作成するようにしておくと便利です。
ここではその方法について記載します。
なお、ウィンドウやペインについての詳細は記載していません。

ウィンドウとペイン作成ファイルの準備とそのファイルを利用したtmux起動

環境

動作確認環境は以下です。

OS CentOS 6.5 x86_64 (kernel 2.6.32-431.3.1.el6.x86_64)
tmuxバージョン tmux 1.6 (tmux-1.6-3.el6.x86_64)
必要なファイルの準備

ウィンドウとペインを生成するための以下のような設定ファイルを準備します。
ここではウィンドウとペイン生成用の2つのファイルと新規セッション起動時に読み込ませる1つのファイルの計3つのファイルを利用します。
各ファイルは、ここでは~/tmux/config以下に設置するものとしています。

~/tmux/config/tmux.window.1

1つめの新規ウィンドウとそのペイン生成用のファイルの例です。


### 1st Window
## Create New Window
new-window -1st

## Horizontal split
splitw -d
# Vertical split
splitw -h -d
# Vertical split
splitw -h -d
## Pane Resize(Over 7 lines)
resize-pane -U 7

# Move Right Pane
select-pane -R

# Move Right Pane
select-pane -R
# Vertical split
splitw -h -d

# Move Right Pane
select-pane -R
clock

# Move Under Pane
select-pane -D
~/tmux/config/tmux.window.2

2つめの新規ウィンドウ生成とそのペイン生成用のファイルの例です。


### 2nd Window
## Create New Window
new-window -n 2nd

# Vertical split
split-window -h -d
# Move Right Pane
select-pane -R

# Horizontal split
split-window -d
# Move Under Pane
select-pane -D

# Horizontal split
splitw -d
# Move Under Pane
select-pane -D

# Display Clock
clock-mode

# Move Left Pane
select-pane -L
~/tmux/config/tmux.startup

新規セッション起動時に読み込ませるファイルの例です。
~/tmux/config/tmux.window.1~/tmux/config/tmux.window.2 の2つのウィンドウ、ペイン作成用ファイルを読み込ませるように記述しています。


### Layout of Window Number 1
source-file ~/tmux/config/tmux.window.1

### Layout of Window Number 2
source-file ~/tmux/config/tmux.window.2
作成したファイルを読み込ませてtmuxを起動

tmuxの内部コマンドはセミコロンで区切ることで複数のコマンドを指定して実行することができます。なお、セミコロンはバックスラッシュ\エスケープする必要があります。

新規セッション起動時に外部ファイルを読み込ませる場合は、以下のように指定します。


$ tmux new-session \; source-file 設定ファイルPATH

作成した設定ファイルを読み込ませるようにしてtmuxのセッションを起動します。~/tmux/config/tmux.startup内に記載した各ファイルも読み込まれて、ウィンドウとペインが自動で作成されます。


$ tmux new-session \; source-file ~/tmux/config/tmux.startup

無事、起動後に、以下のような2つのウィンドウが作成され、それぞれのウィンドウにペイン分割がされていることが確認できました。

おわりに

新規tmuxセッション起動時に、自動で複数のウィンドウを作成してペイン分割する方法について、記載しました。
ここでは記載していませんが、必要なコマンドを実行したり各サーバへssh接続するように各設定ファイル内へ記述しておくこともできます。オペレーション用のウィンドウ、ペイン作成や、実行するコマンドを tmux セッション起動時に一括して動作するように設定しておくと非常に楽で便利かと思います。 screenほど多機能ではないと言われていますが、これが出来るだけでもtmuxも十分使っていけそうです。