ソフトウェアをリリースしました

かいふく という訪問介護の副業に特化した求人サイトを公開しています。

お近くの介護資格保有者にご紹介頂けると嬉しいです 👏

https://kai-fuku.com/

このサイトにはプロモーションが含まれます

やんやん

プログラマーとしてLEMP環境に主に生息しており、DevOps 的な立ち回りをしながらご飯を食べている当ブログの管理人のやんやんと申します。
最近はTmux使うのを辞めました。

iTerm2でディレクトリごとにテーマを自動で切り替える方法

ターミナル作業をしていると、「このプロジェクトの時はこの色で、個人作業の時は別の色にしたいな」と思うことはありませんか?iTerm2を使っているなら、ディレクトリごとにターミナルのテーマ(背景色、フォント、カラースキームなど)を自動で切り替えることができます!副業を多数行っている人は設定必須っす!

今回は、ZshとiTerm2の連携機能を使って、この便利機能を設定する方法を解説します。

なぜディレクトリごとにテーマを切り替えるのか?

  • 視覚的な区別: 複数のプロジェクトを並行して進めている場合、ターミナルの色が変わることで、今どの環境で作業しているのか一目で分かります。
  • 集中力の向上: 特定の作業モードに合わせた色合いにすることで、集中力を高める効果も期待できます。
  • 誤操作の防止: 本番環境や重要なディレクトリに入ったときに、警告色にすることで、不用意なコマンド実行を防ぐことができます。

必要なもの

  • iTerm2: macOS用の高機能ターミナルエミュレータ
  • Zsh: macOSのデフォルトシェル(Bashでも可能ですが、Zshの方が設定が簡単です)

設定手順

設定は大きく分けて2つのステップです。

  1. iTerm2で複数のプロファイル(テーマ)を作成する
  2. Zshの設定ファイルで、ディレクトリに応じたプロファイル切り替えスクリプトを記述する

ステップ1: iTerm2で複数のプロファイル(テーマ)を作成する

まず、切り替えたいテーマごとにiTerm2のプロファイルを作成します。

  1. iTerm2を開き、Cmd + , で設定(Preferences)を開きます。
  2. 「Profiles」タブを選択します。
  3. 左下の「+」ボタンをクリックして、新しいプロファイルを作成します。
    • 例えば、デフォルトの「Default」プロファイルとは別に、仕事用の「Work Theme」、個人用の「Personal Theme」など、分かりやすい名前を付けましょう。
  4. 各プロファイルでテーマを設定します。
    • 作成したプロファイルを選択し、右側の設定を変更します。
    • Colors: 「Color Presets」から好きなカラースキームを選んだり、背景色を調整したりできます。
    • Text: フォントや文字サイズを設定します。
    • Window: 背景画像や透明度を設定することも可能です。

これで、複数のテーマがiTerm2に準備できました。

ステップ2: Zshの設定ファイルで、ディレクトリに応じたプロファイル切り替えスクリプトを記述する

次に、シェルがディレクトリを移動するたびに、iTerm2に「このプロファイルに切り替えて!」と指示を出すスクリプトを記述します。

お使いのZshの設定ファイル(通常は ~/.zshrc)を開いて、以下のコードを追記してください。

# iTerm2のプロファイルを切り替える関数
# この関数は、iTerm2独自の制御シーケンス(OSC 1337;SetProfile)を使ってプロファイルを変更します。
function iterm_set_profile() {
  local profile_name="$1"
  echo -e "3]1337;SetProfile=${profile_name}\a"
}

# コマンド実行前に呼ばれる関数
# ここで現在のディレクトリ($PWD)をチェックし、適切なプロファイルを呼び出します。
function precmd_iterm_profile_switcher() {
  if [[ "$PWD" == *"/Users/yourname/projects/work"* ]]; then
    # 例: '/Users/yourname/projects/work' ディレクトリ配下なら 'Work Theme' プロファイルに
    iterm_set_profile "Work Theme"
  elif [[ "$PWD" == *"/Users/yourname/documents/personal"* ]]; then
    # 例: '/Users/yourname/documents/personal' ディレクトリ配下なら 'Personal Theme' プロファイルに
    iterm_set_profile "Personal Theme"
  else
    # それ以外のディレクトリでは、デフォルトのプロファイルに戻す
    iterm_set_profile "Default"
  fi
}

# Zshがコマンド実行前にprecmd_iterm_profile_switcher関数を実行するように登録
precmd_functions+=(precmd_iterm_profile_switcher)

 

【重要】コードをあなたの環境に合わせて修正してください!

  • "/Users/yourname/projects/work""/Users/yourname/documents/personal" の部分は、あなたがテーマを切り替えたい実際のディレクトリパスに修正してください。
  • "Work Theme""Personal Theme""Default" は、ステップ1であなたがiTerm2で作成したプロファイルの名前に正確に合わせてください。

設定の反映

~/.zshrc に上記のコードを追記したら、ターミナルを再起動するか、以下のコマンドを実行して設定を再読み込みします。

Bash

source ~/.zshrc

 

これで設定は完了です!

動作確認

実際にテーマを切り替えたいディレクトリに cd してみてください。 例えば、/Users/yourname/projects/work ディレクトリに移動すると、「Work Theme」のiTerm2プロファイルが適用され、背景色やフォントが切り替わるはずです。そして、別のディレクトリに移動すると、「Default」テーマに戻るのを確認できるでしょう。

ちょっとしたヒント

  • if文の条件を増やすことで、さらに多くのディレクトリやプロジェクトに対して異なるテーマを設定できます。
  • *" の部分は、指定したパスがディレクトリ名のどこかに含まれていればマッチするという意味です。より厳密に特定のディレクトリだけを対象にしたい場合は、"$PWD" == "/Users/yourname/exact/path" のように = を使って記述することも可能です。

これで、あなたのiTerm2環境は、さらに快適で視覚的に分かりやすいものになったはずです。ぜひこの機能を活用して、ターミナル作業をより効率的で楽しいものにしてください!

おすすめの記事