記事の概要
Windows10はOS標準の通知方法としてトースト通知というものを使用しています。
ちゃんと実装しようと思うと面倒くさいため、ここではpowershellのモジュールとして公開されている**BurnToast**を使用して簡単にトースト通知を実現する方法を記載します。
BurnToastとは
Windows10でトースト通知を行うためのpowershellのモジュールです。
非常に簡単な表現でトースト通知を行うことが出来ます。
導入方法などは公式ドキュメントを参照ください。
簡単な使用例
好きな文字列を通知の中に入れる
Import-Module BurntToast
$toastParams = @{
Text = "ここへ好きな文字列を記入"
}
New-BurntToastNotification @toastParams
上記を実行すると、以下の画像のような通知が出力されます。
好きな文字列+好きなタイトルを通知の中に入れる
Import-Module BurntToast
$toastParams = @{
Text = "ここへ好きな文字列を記入"
Header = (New-BTHeader -Id 1 -Title "タイトル")
}
New-BurntToastNotification @toastParams
上記を実行すると、以下の画像のような通知が出力されます。
好きな文字列+好きなタイトル+好きなリンク先を通知の中に入れる
Import-Module BurntToast
$url = "https://www.google.com"
$toastParams = @{
Text = "ここへ好きな文字列を記入"
Header = (New-BTHeader -Id 1 -Title "タイトル")
Button = (New-BTButton -Content 'リンク' -Arguments $url)
}
New-BurntToastNotification @toastParams
上記を実行すると、以下の画像のような通知が出力されます。
リンクボタンをクリックすると指定したリンク先(ここではwww.google.com)へ遷移します。
C:\hogehoge\hugahugaのように、フォルダパスを指定すればエクスプローラーが指定したフォルダを開きます。
ちょっとだけ便利かもしれない使用例
TODOをテキストファイルに記載しておいて、それをトースト通知させてみました。
2021/02/11 10:15 参考書を読む
everyday 23:45 筋トレ
1番左に日付、真ん中に時間、3番目にTODOの内容を書いています。
この日付、時間に通知を行います。
Import-Module BurntToast
while (1) {
$today = Get-Date -Format "d"
$everyday = "everyday"
$time = Get-Date -UFormat "%H:%M"
# todoファイルの内容から現在時刻で通知するべきtodoを取得
$allTodoList = (Get-Content "C:\todo.txt")
$todayTodoList = $allTodoList | Select-String -Pattern $today | Select-String -Pattern $time
$everydayTodoList = $allTodoList | Select-String -Pattern $everyday | Select-String -Pattern $time
if ($todayTodoList) {
$toastParamsTodayTodoList = @{
Text = $todayTodoList
Header = (New-BTHeader -Id 1 -Title "今日のTODO")
}
New-BurntToastNotification @toastParamsTodayTodoList
}
if ($everydayTodoList) {
$toastParamsEverydayTodoList = @{
Text = $everydayTodoList
Header = (New-BTHeader -Id 1 -Title "毎日のTODO")
}
New-BurntToastNotification @toastParamsEverydayTodoList
}
# todo.txtに1分単位で通知時刻を記載しているため、ループは1分間隔で実行する
Start-Sleep -Seconds 60
}
おわりに
BurnToastに実装されている機能はまだまだたくさんあります。
ここに書けなかった部分についてはまた改めてまとめようと思います。