🤖

tmux を起動している時に iTerm2 のプロファイルを切り替える方法

2021/10/12に公開

はじめに

iTerm2 では特定のエスケープシーケンスを渡すとプロファイルを切り替えることができます。

この方法を解説した情報はウェブ上に複数ありますが、tmux を起動した状態での切り替えは少し工夫が必要だったためその方法を残しておきます。

tmux を起動していない場合の手順については例えば次のページが参考になります。

プロファイルを切り替えるモチベーションは、上記ページのように SSH で本番環境にアクセスした際に作業の慎重さを求める意識づけのケースが多いようです。この場合の王道としては接続元ではなく接続先のプロンプトを切り替えるのが一般的ですが、様々な外部要因がありその対応が難しいケースもあると思います。

方法

まず、iTerm2 の設定から切り替えたいプロファイルを準備します。

次はプロファイル名 $PROFILE_NAME に切り替える例です。

% echo -ne "\033Ptmux;\033\033]1337;SetProfile=$PROFILE_NAME\007\033\\"

切り替え前の例。

切り替え後の例。

利用例

aws-vault 経由の AWS Systems Manager セッションマネージャーから AWS プロファイル名 $AWS_PROFILE_NAME で EC2 インスタンス (i-xxxx) へ接続する時に、iTerm2 のプロファイルを切り替えるワンライナーです。

% echo -ne "\033Ptmux;\033\033]1337;SetProfile=$PROFILE_NAME\007\033\\" && \
  aws-vault exec $AWS_PROFILE_NAME -- \
    aws ssm start-session --target i-xxxx \
    --region ap-northeast-1 ; \
  echo -ne "\033Ptmux;\033\033]1337;SetProfile=Default\007\033\\"

切断時には元のプロファイル (Default) に戻ります。

これをシェルの alias や IME の辞書などに登録しておくとサクッと切り替えられて便利です。自分は普段 Alfred の Snippets に登録して利用しています。

Discussion