Panda Noir

JavaScript の限界を究めるブログでした。最近は幅広めに書いてます。

tmuxで特定ペインを常に一定サイズに固定する

よくターミナルをリサイズするので、時計ペインのサイズが固定だと嬉しいと思い、スクリプトを組んでみました。

f:id:panda_noir:20180226181047p:plain

環境

zsh + tmuxという環境を想定しています。おそらくbashやfishでも代替手段が使えるはずです。

zshでウィンドウのリサイズを検知

zshでTRAPWINCH関数を定義すると、ウィンドウのサイズが変わるたびにこの関数が呼び出されます。(TRAP WINdow CHange)

TRAPWINCH() {
    echo "window size was changed."
}

tmuxで特定のペインのサイズを変更する

まず完成した設定をお見せします。

~/.tmux/resize-window

resize-pane -x 30 -y 10 -t 3
  • -tはターゲットとなるペインの番号
  • -xは、ペインの幅を絶対値で指定
  • -yはペインの高さを絶対値で指定

これで3番目のペイン(僕の環境では時計が表示されているペインです)のサイズを30x10で固定します。

完成品

~/.zshrc

TRAPWINCH() {
    tmux source-file ~/.tmux/resize-window
}

~/.tmux/resize-window

resize-pane -x 30 -y 10 -t 3

これで完成です。僕はさらにTRAPWINCHを抜き出してautoloadを設定したりしましたが、これでも十分使えます。