本記事は Gemini CLI の YOLO mode で出力された内容です。
環境
- OS: Linux (Debian GNU/Linux 13 trixie)
- Gemini CLI バージョン: 0.1.18
-
作業ディレクトリ:
$HOME/gemini_workspace
はじめに
「VS Codeで作業中に、バックグラウンドで実行している処理の完了通知がデスクトップに表示されると、集中が途切れてしまう…」そんな経験はありませんか?本記事では、VS Codeのウィンドウがアクティブではない時だけデスクトップ通知を出すシェルスクリプトを作成し、その使い方を解説します。これにより、作業の邪魔をすることなく、必要な情報だけを受け取れるようになります。
実際の画面
条件付き通知スクリプト (send_conditional_notification.sh) について
このスクリプトは、現在アクティブなウィンドウが特定のウィンドウ(ここではVS Code)ではない場合にのみ、デスクトップ通知を送信します。
スクリプトの内容
#!/bin/bash
# 引数のチェック
if [ "$#" -ne 4 ]; then
echo "使用法: $0 "<除外したいウィンドウ名の部分>" "<通知のタイトル>" "<通知の本文>" "<通知のアイコン>""
exit 1
fi
EXCLUDE_WINDOW_PART="$1"
NOTIFICATION_TITLE="$2"
NOTIFICATION_BODY="$3"
NOTIFICATION_ICON="$4"
# 現在アクティブなウィンドウのタイトルを取得
ACTIVE_WINDOW_TITLE=$(xdotool getactivewindow getwindowname)
# アクティブなウィンドウタイトルが除外したいウィンドウ名を含まない場合のみ通知を送信
if [[ ! "$ACTIVE_WINDOW_TITLE" =~ "$EXCLUDE_WINDOW_PART" ]]; then
notify-send --wait --icon="$NOTIFICATION_ICON" "$NOTIFICATION_TITLE" "$NOTIFICATION_BODY"
echo "Notification sent to '$ACTIVE_WINDOW_TITLE'."
else
echo "Notification not sent because active window '$ACTIVE_WINDOW_TITLE' matches exclude pattern '$EXCLUDE_WINDOW_PART'."
fi
導入方法
-
スクリプトの作成:
上記のスクリプト内容を$HOME/gemini_workspace/send_conditional_notification.shとして保存します。 -
実行権限の付与:
chmod +x $HOME/gemini_workspace/send_conditional_notification.sh -
依存関係のインストール:
このスクリプトはxdotoolとnotify-send(通常libnotify-binに含まれる)に依存します。もしインストールされていない場合は、以下のコマンドでインストールしてください。sudo apt install xdotool libnotify-bin
活用例
例えば、長時間かかるコンパイルやデータ処理の完了を通知したい場合、そのコマンドの後にスクリプトを呼び出すことで、VS Codeで作業中に通知が邪魔になるのを防ぐことができます。
# 長時間かかる処理
./your_long_running_process.sh
# 処理完了後に条件付き通知を送信
$HOME/gemini_workspace/send_conditional_notification.sh "Visual Studio Code" "処理完了!" "バックグラウンド処理が終わったよ!" "dialog-information"
この例では、アクティブなウィンドウのタイトルに「Visual Studio Code」が含まれていない場合にのみ通知が表示されます。
まとめ
本記事では、VS Codeのウィンドウがアクティブではない時だけデスクトップ通知を出すシェルスクリプトの作成方法と使い方を解説しました。このスクリプトを活用することで、作業の集中を妨げることなく、必要な情報を効率的に受け取ることが可能になります。ぜひあなたの開発環境に取り入れてみてください。
本記事に記載されている情報は、特定の環境下での成功事例に基づいています。お使いの環境や設定によっては、記載通りの動作を保証するものではありません。導入の際は、ご自身の責任において実施してください。