🔔

どのディレクトリのClaude Codeが完了したか一目でわかる方法

に公開

解決する問題

複数のプロジェクトでClaude Codeを並行利用している際、どのディレクトリのタスクが完了したかが分からないという課題を解決します。

tmuxでの通知のされ方

この記事で実現できること

✅ tmuxセッション一覧で🔔マークによる通知表示
✅ Claude Code完了時の自動通知設定
✅ セッション切り替え時の通知自動クリア
✅ 複数プロジェクトの作業効率向上

前提条件

  • tmux 最新版(他バージョンでは検証できていません)
  • Claude Code

複数プロジェクトを並行している場合は、この機能のためだけでもtmuxを導入する価値があります!

手順

4ステップで実装可能

  1. hooksの設定
  2. スクリプトファイルの作成
  3. セッション一覧での通知表示
  4. 通知のクリア機能

1. hooks の設定

hooks-scriptsディレクトリを作成し、各hooksでそれぞれスクリプトを実行するように設定します

~/.claude/settings.json
{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks-scripts/Notification.sh"
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks-scripts/Stop.sh"
          }
        ]
      }
    ]
  }
}

2. スクリプトファイルの作成

まず、スクリプト用ディレクトリを作成:

$ mkdir -p ~/.claude/hooks-scripts

Notification.sh(通知時実行):

~/.claude/hooks-scripts/Notification.sh
#!/bin/bash
# tmux通知状態を設定
if [ -n "$TMUX" ]; then
    TMUX_SESSION=$(tmux display-message -p '#S')
    tmux set-option -t "$TMUX_SESSION" @claude_notification "$(date)"
fi

Stop.sh(タスク完了時実行):

~/.claude/hooks-scripts/Stop.sh
#!/bin/bash
# tmux通知状態を設定
if [ -n "$TMUX" ]; then
    TMUX_SESSION=$(tmux display-message -p '#S')
    tmux set-option -t "$TMUX_SESSION" @claude_notification "$(date)"
fi

実行権限を付与:

$ chmod +x ~/.claude/hooks-scripts/*.sh

3. セッション一覧での通知表示

~/.tmux.confに下記の設定を追加します。

~/.tmux.conf
# セッション一覧の表示設定
bind s choose-tree -sZ -F "#{?@claude_notification,🔔,} #{session_windows} windows"
$ tmux source-file ~/.tmux.conf

4. 通知のクリア機能

セッション切り替え時に通知を自動クリアする設定を追加:

~/.tmux.conf
# セッション切り替え時の通知クリア
set-hook -g client-session-changed 'run-shell "tmux set-option -t \"#{session_name}\" -u @claude_notification"'
$ tmux source-file ~/.tmux.conf

動作確認

設定完了後、以下の手順で通知システムの動作を確認します。

1. 設定の最終確認

# hooks-scriptsの確認
$ ls -la ~/.claude/hooks-scripts/
-rwxr-xr-x ... Notification.sh
-rwxr-xr-x ... Stop.sh

# Claude Code設定の確認
$ cat ~/.claude/settings.json | jq '.hooks'

2. 通知の発生テスト

  1. tmuxで複数セッションを作成:
$ tmux new-session -d -s project1
$ tmux new-session -d -s project2
$ tmux new-session -d -s project3
  1. いずれかのセッションでClaude Codeを起動し、簡単なタスクを実行

3. 通知マークの確認

  1. いずれかのセッションにアタッチ:
$ tmux attach-session -t project1
  1. セッション内で Ctrl+b s を押してセッション選択画面を開く
  2. 🔔マークが付いたセッションがあることを確認

4. 通知クリアの確認

  1. 🔔マークが付いたセッションに切り替え
  2. 再度セッション一覧を確認し、🔔マークが消えることを確認

5. 複数プロジェクトでの動作確認

各セッションでClaude Codeタスクを実行し、独立して通知が管理されることを確認

まとめ

  • 自分の場合、Claude Codeを複数のディレクトリ(複数プロジェクト)で同時に稼働させているので、
    hooksによる通知に合わせてずんだもん読み上げ+この🔔通知を使うことにしました。
  • おかげでどのディレクトリでClaude Codeのタスクが完了したかすぐにわかるので、作業効率が向上しました。
  • Claude Codeの導入からtmuxを活用し始めたのですが、この機能が実装できただけでもtmuxから離れられなくなった気がします。
  • 他により良い方法があればぜひコメントいただけたら幸いです。

最後に

  • マウスでも直感的に使えて、今までtmuxを使っていなかった人でもすぐに導入できるtmuxの設定も貼っておきます。
  • さらにコマンドをよく忘れるのでチートシートをtmux内から開けるようにもしているので、セットでご利用ください。

参考リンク

Discussion