Перейти к содержимому

Напоминания и Pomodoro

Напоминалки в телефоне — хорошо, но они привязаны к телефону. Через Notifly они приходят на все ваши устройства одновременно: телефон, рабочий ноутбук, домашний компьютер.

Окно терминала
echo 'notifly-send "🔔 Встреча через 5 минут" "Zoom: ..." 8' | at now + 25 min

Удобный 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)
# Каждый рабочий день в 13:00 — обед
0 13 * * 1-5 ~/bin/notifly-send "🍽 Обед" "" 5
# Каждый час — встать размяться (только в рабочее время)
0 10-18 * * 1-5 ~/bin/notifly-send "🚶 Встать и размяться" "" 4
# Воскресенье 21:00 — спланировать неделю
0 21 * * 0 ~/bin/notifly-send "📅 Спланировать неделю" "" 6

Управляйте поведением через приоритет:

КогдаПриоритетЭффект
«Размяться»1–3без звука, только бэйдж
«Обед»4–5стандартный звук
«Встреча через 5 минут»7–8громко, проходит DND по правилам ОС
«УЛЕТАЕТ САМОЛЁТ»9–10максимум, отдельный звук

См. таблицу приоритетов.

Аналоги at и cron в Windows — schtasks.exe и Task Scheduler. Предполагается, что функция Send-Notifly уже загружена в профиле PowerShell (см. инструкцию).

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"

Использование:

Окно терминала
.\Remind.ps1 -When "25m" -Message "Кофе"
.\Remind.ps1 -When "17:30" -Message "Уйти забрать ребёнка"
Окно терминала
# Рабочие дни в 13:00 — обед
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`""
# Каждый час 10–18 — размяться
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
  • Один и тот же напоминатель на всех устройствах сразу.
  • Гибкий синтаксис at — куда мощнее календаря.
  • Никакой сторонний todo-сервис не нужен — cron/at уже стоят в системе.
  • TUI поверх at -l: смотреть, какие напоминания запланированы.
  • Синтаксис «напомнить через 2 часа» голосом — связка с локальным STT.
  • Интеграция с календарём (*.ics → cron-job).