広告 Linux Mac

SSHの接続先ごとにターミナルの背景色を変更する

現在職場では、Debian 9 + LXDE な環境で開発をしているのですが、SSH 接続の際に本番環境とステージング環境とがひと目で分かるように背景色を変えたいなと思っていました。

ググって見ると、Mac の iTerm2 での背景色の変え方は引っかかるのですが、Linux のターミナルでの変更方法が見つかりませんでした。

ちょうど tmux を使っているので、tmux の機能で実現することができないかなと調べてみると実現できるとことがわかりました。

下記を.bashrc や .zshrc に仕込むことで下記に記載したホストに接続すると背景色を変えることができます。

function ssh() {
  # tmux起動時
  if [[ -n $(printenv TMUX) ]] ; then
      # 現在のペインIDを記録
      local pane_id=$(tmux display -p '#{pane_id}')
      # 接続先ホスト名に応じて背景色を切り替え
      if [[ `echo $1 | grep 'prd'` ]] ; then
          tmux select-pane -P 'bg=colour52,fg=white'
      elif [[ `echo $1 | grep 'stg'` ]] ; then
          tmux select-pane -P 'bg=colour25,fg=white'
      fi

      # 通常通りssh続行
      command ssh $@

      # デフォルトの背景色に戻す
      tmux select-pane -t $pane_id -P 'default'
  else
      command ssh $@
  fi
}

Sponsor Link

-Linux, Mac