Skip to content

Reminders and Pomodoro

Reminders on your phone are nice, but they’re tied to the phone. Via Notifly they arrive on all your devices at once: phone, work laptop, home desktop.

Окно терминала
echo 'notifly-send "🔔 Meeting in 5 minutes" "Zoom: ..." 8' | at now + 25 min

Convenient wrapper:

#!/usr/bin/env bash
# ~/bin/remind — `remind 30m "Tea is ready"` / `remind "20:00" "Call mom"`
WHEN="${1:?when}"; shift
MSG="${*:?message}"
echo "notifly-send '🔔 $MSG' '' 6" | at "$WHEN"
Окно терминала
remind 25m "Coffee"
remind 17:30 "Leave to pick up the kid"
remind "tomorrow 9am" "Drop off the documents"
#!/usr/bin/env bash
# ~/bin/pomodoro [WORK_MIN] [BREAK_MIN] [CYCLES]
set -eu
WORK=${1:-25}; BREAK=${2:-5}; N=${3:-4}
for ((i=1; i<=N; i++)); do
notifly-send "🍅 Pomodoro $i/$N" "Work for $WORK min." 5
sleep $((WORK*60))
notifly-send "☕ Break" "Rest for $BREAK min." 5
sleep $((BREAK*60))
done
notifly-send "🏁 Pomodoro finished" "$N pomodoros done." 6
Окно терминала
pomodoro # 4 × (25/5)
pomodoro 50 10 3 # 3 × (50/10)
# Weekdays at 13:00 — lunch
0 13 * * 1-5 ~/bin/notifly-send "🍽 Lunch" "" 5
# Every hour — stand up and stretch (work hours only)
0 10-18 * * 1-5 ~/bin/notifly-send "🚶 Stand up and stretch" "" 4
# Sunday 21:00 — plan the week
0 21 * * 0 ~/bin/notifly-send "📅 Plan the week" "" 6

Control behavior via priority:

WhenPriorityEffect
“Stand up”1–3silent, badge only
“Lunch”4–5standard sound
“Meeting in 5 minutes”7–8loud, bypasses DND according to OS rules
“THE PLANE IS TAKING OFF”9–10maximum, separate sound

See the priority table.

The equivalents of at and cron on Windows are schtasks.exe and Task Scheduler. It is assumed that the Send-Notifly function is already loaded in the PowerShell profile (see the instructions).

C:\scripts\Remind.ps1
param([Parameter(Mandatory)] [string]$When,
[Parameter(Mandatory)] [string]$Message,
[int]$Priority = 6)
# When: "25m", "2h", "20:00", "2026-04-23 14:00"
$target = if ($When -match '^(\d+)m$') {
(Get-Date).AddMinutes([int]$Matches[1])
} elseif ($When -match '^(\d+)h$') {
(Get-Date).AddHours([int]$Matches[1])
} else {
[datetime]$When
}
$taskName = "Notifly Remind " + (Get-Date).Ticks
$cmd = ". `$env:USERPROFILE\Documents\WindowsPowerShell\Notifly.ps1; " +
"Send-Notifly -Title '🔔 $Message' -Priority $Priority"
$Action = New-ScheduledTaskAction -Execute "powershell.exe" `
-Argument "-NoProfile -WindowStyle Hidden -Command `"$cmd`""
$Trigger = New-ScheduledTaskTrigger -Once -At $target
$Settings = New-ScheduledTaskSettingsSet -DeleteExpiredTaskAfter (New-TimeSpan -Minutes 5)
Register-ScheduledTask -TaskName $taskName -Action $Action -Trigger $Trigger -Settings $Settings | Out-Null
Write-Host "Will remind at $($target.ToString('HH:mm yyyy-MM-dd')): $Message"

Usage:

Окно терминала
.\Remind.ps1 -When "25m" -Message "Coffee"
.\Remind.ps1 -When "17:30" -Message "Leave to pick up the kid"
Окно терминала
# Weekdays at 13:00 — lunch
schtasks /Create /TN "Notifly Lunch" /SC WEEKLY /D MON,TUE,WED,THU,FRI /ST 13:00 `
/TR "powershell.exe -WindowStyle Hidden -Command `". $env:USERPROFILE\Documents\WindowsPowerShell\Notifly.ps1; Send-Notifly -Title '🍽 Lunch' -Priority 5`""
# Every hour 10–18 — stretch
schtasks /Create /TN "Notifly Stretch" /SC HOURLY /ST 10:00 /DU 08:00 /K `
/TR "powershell.exe -WindowStyle Hidden -Command `". $env:USERPROFILE\Documents\WindowsPowerShell\Notifly.ps1; Send-Notifly -Title '🚶 Stretch' -Priority 4`""
C:\scripts\Pomodoro.ps1
param([int]$WorkMin = 25, [int]$BreakMin = 5, [int]$Cycles = 4)
. $env:USERPROFILE\Documents\WindowsPowerShell\Notifly.ps1
1..$Cycles | ForEach-Object {
Send-Notifly -Title "🍅 Pomodoro $_/$Cycles" -Message "Work for $WorkMin min." -Priority 5
Start-Sleep -Seconds ($WorkMin * 60)
Send-Notifly -Title "☕ Break" -Message "Rest for $BreakMin min." -Priority 5
Start-Sleep -Seconds ($BreakMin * 60)
}
Send-Notifly -Title "🏁 Pomodoro finished" -Message "$Cycles pomodoros done." -Priority 6
  • The same reminder on all your devices simultaneously.
  • The flexible at syntax — far more powerful than a calendar.
  • No third-party todo service required — cron/at are already on the system.
  • TUI on top of at -l: view scheduled reminders.
  • Voice “remind me in 2 hours” syntax — integrate with local STT.
  • Integration with calendar (*.ics → cron job).