【Claude Code】WSL開発者必見!タスク完了を見逃さない通知設定4選
はじめまして。nemunekoです=^_^=
Claude Codeのhook機能を使って、タスク完了時にWindows側に通知を送る方法をいくつか試してみました。
WSL環境からWindows側への通知で実際に動いた方法をまとめておきます。
それではどうぞ。
この記事が役に立つ方
- Claude Codeで処理完了の通知が欲しい方
- WSL環境からWindows側に通知を送りたい方
事前準備
通知用のスクリプトファイル alarm.sh を作成します
touch alarm.sh
chmod +x alarm.sh
Claude Codeのhook設定で呼び出します
# .cluade/.settings.local.json
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash alarm.sh"
}
]
}
]
}
}
それでは、各通知方法を見ていきましょう。
方法1: 音声通知(サウンド再生)
最もシンプルな通知方法です。Windowsのシステム音を再生します。
alarm.sh に以下の内容を記述します
#!/bin/bash
# 音声通知:Windowsのシステム音を再生
powershell.exe -c "(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\tada.wav').PlaySync()"
「タダーン♪」という音が鳴れば成功です。
音源は好きに決めてよいので、適当に音源を見繕って指定してみてください。
私は「旧支配者のキャロル」を以前設定しました。ぜひ以下の記事をご覧ください=^_^=
Hookで通知音に「旧支配者のキャロル」を設定してみた
方法2: MessageBox(ポップアップダイアログ)
画面中央に表示される通知方法です。やってみましたが意外と気づかないかもです。
alarm.sh を以下の内容に変更します
#!/bin/bash
# MessageBox通知:画面中央にポップアップ表示
powershell.exe -Command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show('タスクが完了しました。', 'Stop通知')"

方法3: バルーン通知(システムトレイ)
Windows標準の通知方法です。画面右下に表示され、デフォルトでは通知音も流れます。
alarm.sh を以下の内容に変更してください
#!/bin/bash
# バルーン通知:システムトレイに通知を表示
powershell.exe -Command "[reflection.assembly]::loadwithpartialname('System.Windows.Forms'); \$notify = new-object system.windows.forms.notifyicon; \$notify.icon = [System.Drawing.SystemIcons]::Information; \$notify.visible = \$true; \$notify.showballoontip(10,'Stop通知','タスクが完了しました',[system.windows.forms.tooltipicon]::Info)"

普段使いに最適なバランスの良い通知方法です。
補足:トースト通知(BurntToast)を使う場合
Windows 10/11のネイティブなトースト通知を使いたい場合は、BurntToastモジュールを使用します。
まず、管理者権限で起動したPowerShellにて、BurntToastモジュールをインストールします
Install-Module -Name BurntToast -Force
その後、alarm.shを以下の内容に変更します
#!/bin/bash
# トースト通知:Windows 10/11のネイティブ通知
powershell.exe -Command "New-BurntToastNotification -Text 'Stop通知', 'タスクが完了しました'"

お好みで選んでください。
方法4: AI音声読み上げ
Windows標準の音声合成でメッセージを読み上げる方法です。
alarm.sh を以下の内容に変更します
#!/bin/bash
# AI音声読み上げ:日本語でメッセージを読み上げ
powershell.exe -Command "
Add-Type -AssemblyName System.Speech
\$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
\$speak.SelectVoice('Microsoft Haruka Desktop')
\$speak.Speak('タスクが完了しました')
"
好きな言葉を喋らせられるので、便利かも?
まとめ
WSLからWindows通知を送る4つの方法を紹介しました。
- 音声通知: シンプルで効果的、大体気づける
- MessageBox: 見逃す可能性あり
- バルーン通知: 普段使いに最適、通知と言えばこれ
- AI音声読み上げ: カスタムメッセージで状況を把握、もっと使い道がある気がする
状況に応じて使い分けることで、快適な開発環境を構築できます。
みなさんも、自分の作業スタイルに合った通知方法を見つけてみてくださいね=^ω^=
それでは、また次の記事で。nemunekoでした=^_^=
Discussion