3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

iTerm2の背景色をアクセスしたサーバごとに変える小ネタ

3
Last updated at Posted at 2023-09-25

執筆の経緯

現在フリーランスで活動しています。この度新しい案件に参画することが決まったので、現在の現場で使っていた便利な小ネタなどをメモしておきたいと思い、この記事を書きます。

やること

開発でiTeam2を使っています。背景色の変更や画面の分割がしやすいためです。現場では複数のGCEインスタンスで作業をしているのですが、アクセスするインスタンスを間違え無駄な時間を過ごした経験があります。例えば、GPU環境だと思ってNLPの学習を始めたら、実際にはCPU環境で非常に時間がかかってしまったり、CPU環境にしかないデータをGPU環境で探してしまったり。。

そんな、アクセスするインスタンスを間違えた時にすぐに気付けるように、アクセスするインスタンスごとにiTerm2の背景の色を変えようと思います。

具体的には、インスタンスにアクセスしたとき、下の画像のような見た目にします。
※滅茶苦茶に雑ですが、セキュリティ的に問題ない環境で実行してから画像を置き換えます。許してください。

iTerm2_色2.jpg

↓サーバにアクセス

iTerm2_色1.jpg

実行環境

  • MacBook Pro, Apple M1
  • zsh
  • iTerm2, Build 3.4.20

やったこと

  1. アクセスするインスタンスに名前をつける
  2. スクリプトを作り、インスタンスごとに色を設定する
  3. エイリアスを設定する

この順番に書きます。

1. アクセスするインスタンスに名前をつける

こちらの記事にあるように、以下のファイルを作ります。

~/.ssh/config
#User sekine
#IdentityFile ~/.ssh/id_rsa

Host gpu_server
    HostName        111.111.111.111
    User            sekine
    IdentityFile    ~/.ssh/id_rsa

Host cpu_server
    HostName        222.222.222.222
    User            sekine
    IdentityFile    ~/.ssh/id_rsa

2. スクリプトを作り、インスタンスごとに色を設定する

以下のようなファイルを作ります。

~/.zsh/ssh-item-setting
#!/bin/zsh
​
set_color() {
  local HEX_BG=$1
  local OPACITY=$2
​
  local BG_R=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$1 * 257)}'`
  local BG_G=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$2 * 257)}'`
  local BG_B=`echo $HEX_BG | sed 's/../0x&,/g' | awk -F "," '{printf("%d",$3 * 257)}'`
​
  /usr/bin/osascript <<EOF
tell application "iTerm2"
   tell current session of current window
      set background color to {$BG_R, $BG_G, $BG_B} 
      set transparency to "$OPACITY" 
   end tell
end tell
EOF
}
​
# 接続host名で振り分け
if [[ "$@" =~ cpu_server ]]; then
   # 色・透明度設定
   set_color 233B6C 0.05 
elif [[ "$@" =~ gpu_server ]]; then
   set_color 30000 0.1
fi
​
ssh $@
​
set_color 2f4f4f 0.05

set_colorという関数を作って、引数で16進数のカラーコードと透過率を渡します。最後のset_color 2f4f4f 0.05はローカルの色設定です。sshでのアクセスをexitで終えるとこの色に戻るようになっています。

スクリプトができたらパーミッションを¥変更しておきましょう。

chmod 755 ~/.zsh/ssh-item-setting

3. エイリアスを設定する

.zshrcファイルでエイリアスを設定し、sshコマンドを実行したときに、今作ったスクリプトを実行するようにします。

.zshrcに追記
alias ssh='~/.zsh/ssh-item-setting'

以上で、アクセスしたサーバーごとに背景色を変えることができました。あとはいつも通りsshでアクセスするのみです。

ssh gpu_server

備考

このやり方は、「あー背景の色変えてーなー」って思った時に目についた中で最もやりやすそうなものでした。今調べればもっとやりやすいものがあるかもしれないです。もしもっと良いやり方がありましたら教えてください!

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?