Windowsでtmuxを使おうとするとCygwinかMSYS2の2択になるかと思います。
以下はMSYS2を使用している場合の手順ですが、Cygwinでもそんなに変わらないかと思います。
tmuxのインストール
パッケージマネージャのpacman(apt-cygみたいの)でインストール出来るtmuxはバージョンが古い?様でペインのタイトルを変更することが出来ませんでした。
$ pacman -Sy tmux
$ tmux select-pane -T 'hoge'
# -T オプションの説明がない
usage: select-pane [-DdegLlMmRU] [-P style] [-t target-pane]
なのでgitのソースコードからビルドする形で最新バージョンをインストールしています。
$ pacman -Sy make autoconf pkg-config automake-wrapper gcc mingw-w64-x86_64-ncurses ncurses-devel libtool --noconfirm
$ cd ~/
$ git clone https://github.com/libevent/libevent.git
$ cd libevent
$ sh autogen.sh
$ ./configure
$ make
$ make install
$ cd ~/
$ git clone https://github.com/tmux/tmux
$ cd tmux
$ sh autogen.sh
$ ./configure
$ make
$ make install
$ tmux -S $(find /tmp -name 'tmux*')/default
$ tmux select-pane -T 'hoge'
# -T オプションが使用できる
tmux
コマンドだけで起動しようとするcan't create socket: Permission denied
となり起動できませんでしたが、こちらを参考にさせていただき何とかなりました。
https://qiita.com/shibu_t/items/7556a075e25bd86aac3a
ペインタイトルの表示
ペインタイトルを変更してもデフォルトではどこにも表示されませんので、以下の設定を追加します。
# status
set -g pane-border-status bottom
set -g pane-border-format " #{pane_index} : #T "
# border
set -g pane-border-fg green
set -g pane-border-bg black
# アクティブなペインの色
set -g pane-active-border-fg colour14
set -g pane-active-border-bg colour21
設定ファイルを読み込むために以下コマンドを実行。
$ tmux source-file ~/.tmux.conf \; display "Reloaded!"
- 選択中のペインのボーダーを変更
- ペイン番号とタイトルをボーダー下線に表示
- タイトルには現在のディレクトリが自動で反映される
試しに手動でペインタイトルを変更してみる。
$ tmux select-pane -T 'hogehogehoge'
・・・変化しない。画像では伝わらないがコマンドを実行した直後、一瞬だけタイトルが変化したようにみえる。
現在選択中のペイン以外に対して実行してみる
$ tmux select-pane -T 'hogehogehoge' -t 2
選択中のペインが移動すると同時にタイトルが変化した。
どうやらエンターが入力された後、現在いるディレクトリ情報が自動的にペインタイトルに反映されてしまうらしい。
- 自分自身のペインタイトルを変更しようとした場合
-
ペイン1
でペイン1
のタイトルをhoge
に変更するコマンドを入力してエンターを押す。 -
ペイン1
のタイトルが変更される。 - エンターを押されたので、
ペイン1
の現在いるディレクトリ情報が自動的にタイトルに上書きされる。
-
- 自分以外のペインタイトルを変更しようとした場合
-
ペイン1
でペイン2
のタイトルをhoge
に変更するコマンドを入力してエンターを押す。 -
ペイン2
のタイトルが変更される。同時に選択中ペインもペイン2
になる。 - エンターが押されたのは
ペイン1
なので、ペイン1
の現在いるディレクトリ情報が自動的にタイトルに反映されるが、ペイン2
のタイトルはhoge
のまま。
-
後の作業でも特に困らないので、ひとまずこの問題は放置しておく。
背景色の変更
事前に256色設定を有効にしておくこと。(いろいろな人がまとめてくれているので手順は省略します)
$ tmux select-pane -P 'bg=cyan,fg=white'
sshコマンド実行時にペインタイトル、背景色を変更する。
sshの引数をどのように判断するか?どんな色にするか?は自由に変更可能。
function ssh() {
# tmux起動時
if [[ -n $(printenv TMUX) ]] ; then
# 現在のペインIDの退避と背景色の書き換え
local pane_id=`tmux display -p '#{pane_id}'`
# 接続先ホスト名に応じて背景色、文字色を切り替え
if [[ `echo ${!#} | grep -E 'localhost|127\.0\.0\.1'` ]] ; then
tmux select-pane -P 'fg=colour166,bg=colour233'
else
tmux select-pane -P 'fg=colour5,bg=colour233'
fi
tmux select-pane -T "${!#}"
# 通常通りコマンド続行
command ssh $@
# デフォルトの色設定に戻す
tmux select-pane -t $pane_id -P 'default'
else
command ssh $@
fi
}
適当なホストにssh。
ssh -p 2222 ubuntu@127.0.0.1