はじめに
Codexの作業完了時に、デスクトップ通知を表示させる方法を紹介します。
対象環境は WSL2(Ubuntu) および Windows 11 です。
設定ファイルに通知スクリプトを登録する
Codexの設定ファイル ~/.codex/config.toml に、通知スクリプトを呼び出す設定を追加します。
notify = ["bash", "/home/user_name/.codex/notify_wsl2.sh"]
※他のセクション(例:[tool])の中には記載せず、独立した設定として追加してください。
BurntToast モジュールをインストールする
PowerShellで以下を実行し、Windowsの通知機能を操作できるモジュールをインストールします。
Install-Module -Name BurntToast -Scope CurrentUser -Force
実行中に以下のようなメッセージが表示される場合があります。
続行するには NuGet プロバイダーが必要です
...
今すぐ PowerShellGet で NuGet プロバイダーをインストールしてインポートしますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"):
この場合は Y を入力して続行してください。
再度、以下のコマンドで BurntToast をインストールします。
Install-Module -Name BurntToast -Scope CurrentUser -Force
PowerShellでの動作確認
以下を実行して通知が出れば成功です。
New-BurntToastNotification -Text "テスト", "BurntToastが正常に動作しています!" -Sound Default
Windowsの右下に通知が表示されます。
WSL2からの通知テスト
次のコマンドをWSL2上で実行します。
powershell.exe -Command "Import-Module BurntToast; New-BurntToastNotification -Text 'WSL2通知テスト', 'これはWSLからの通知です'"
こちらもWindowsの通知センターに表示されれば設定完了です。
通知スクリプトの作成
~/.codex/notify_wsl2.sh を作成し、以下の内容を記載します。
#!/bin/bash
# ~/.codex/notify_wsl2.sh
# JSONから最後のエージェント発言を抽出
LAST_MESSAGE=$(echo "$1" | jq -r '.["last-assistant-message"] // "Codex task completed"')
# デスクトップ通知
powershell.exe -Command "Import-Module BurntToast; New-BurntToastNotification -Text 'Codex', '$LAST_MESSAGE'"
実行権限の付与
作成したスクリプトを実行可能にします。
chmod 755 ~/.codex/notify_wsl2.sh
jq のインストール
スクリプト実行時に次のようなエラーが出た場合:
jq: command not found
jq コマンドがインストールされていないため、以下を実行してください。
sudo apt update && sudo apt install -y jq
動作確認
以下のコマンドでスクリプト単体の動作を確認します。
bash ~/.codex/notify_wsl2.sh '{"last-assistant-message":"テスト通知"}'
Windowsの通知センターにメッセージが表示されれば成功です。
Codexでの通知確認
Codexを再起動し、タスクを実行します。
作業完了時に、設定した通知が表示されることを確認します。
トラブルシューティング
notify設定を[tool]セクション内に記載していた
初めは notify を [tool] セクション内に記載していたため、通知が動作しませんでした。
config.toml の仕様上、notify は独立した設定として記述する必要があります。
TOML構文を正しく理解していなかったことが原因でした。
notify-sendは使用できない
Ubuntuでデスクトップ通知を行う際によく紹介される notify-send コマンドを試しましたが、
WSL2環境では通知デーモンが存在しないため、通知が表示されませんでした。
そのため、PowerShell経由でWindowsの通知機能を利用する方法に切り替えました。
おわりに
これで、Codexのタスク完了時にデスクトップ通知を表示できるようになりました。
作業終了に気づきやすくなり、より効率的にCodexを活用できます。
