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 "🔔 Встреча через 5 минут" "Zoom: ..." 8' | at now + 25 min

Convenient wrapper:

#!/usr/bin/env bash
# ~/bin/remind — `remind 30m "Чай заварен"` / `remind "20:00" "Звонок маме"`
WHEN="${1:?when}"; shift
MSG="${*:?message}"
echo "notifly-send '🔔 $MSG' '' 6" | at "$WHEN"
Окно терминала
remind 25m "Кофе"
remind 17:30 "Уйти забрать ребёнка"
remind "tomorrow 9am" "Отнести документы"
#!/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 "🍅 Помидор $i/$N" "Работа $WORK мин." 5
sleep $((WORK*60))
notifly-send "☕ Перерыв" "Отдых $BREAK мин." 5
sleep $((BREAK*60))
done
notifly-send "🏁 Pomodoro завершён" "$N помидоров готово." 6
Окно терминала
pomodoro # 4 × (25/5)
pomodoro 50 10 3 # 3 × (50/10)
# Weekdays at 13:00 — lunch
0 13 * * 1-5 ~/bin/notifly-send "🍽 Обед" "" 5
# Every hour — stand up and stretch (work hours only)
0 10-18 * * 1-5 ~/bin/notifly-send "🚶 Встать и размяться" "" 4
# Sunday 21:00 — plan the week
0 21 * * 0 ~/bin/notifly-send "📅 Спланировать неделю" "" 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 "Напомню в $($target.ToString('HH:mm yyyy-MM-dd')): $Message"

Usage:

Окно терминала
.\Remind.ps1 -When "25m" -Message "Кофе"
.\Remind.ps1 -When "17:30" -Message "Уйти забрать ребёнка"
Окно терминала
# 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 '🍽 Обед' -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 '🚶 Размяться' -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 "🍅 Помидор $_/$Cycles" -Message "Работа $WorkMin мин." -Priority 5
Start-Sleep -Seconds ($WorkMin * 60)
Send-Notifly -Title "☕ Перерыв" -Message "Отдых $BreakMin мин." -Priority 5
Start-Sleep -Seconds ($BreakMin * 60)
}
Send-Notifly -Title "🏁 Pomodoro завершён" -Message "$Cycles помидоров готово." -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).