org.nvim

Timers and notifications

:Org timer_start        Start a relative timer. A count asks for an offset
                        H:MM:SS (default: the timer value on the line; a
                        bare number is seconds, M:SS minutes); 16 shifts
                        the timer values of the selection instead.
:Org timer_insert       Insert the timer value after the cursor, written
                        with timer.format ("%s "). Starts the timer if
                        needed; a count restarts it; 16 shifts the timer
                        values of the selection. During a countdown, the
                        remaining time.
:Org timer_item         Insert a - 0:01:23 ::  item: below the current
                        item in a timer list, turning the current line into
                        one elsewhere (an error in other lists).
:Org timer_pause        Pause or continue the timer or countdown.
:Org timer_stop         Stop the timer or countdown.
:Org timer_countdown N  Countdown of N minutes (or H:MM:SS, M:SS). Without
                        an argument: a count (minutes), else the entry's
                        Effort, else a prompt suggesting timer.default_timer.
                        At the end you get a notification (clock.sound,
                        clock.notification_handler).
:Org timer_remaining    Show the remaining countdown time.
One timer runs at a time; require("org").statusline() shows it. User
autocmds: OrgTimerStart, OrgTimerStop, OrgTimerPause,
OrgTimerContinue, OrgTimerSet, OrgTimerDone.
Note: Emacs distinguishes C-u from a numeric prefix for the countdown
(C-u = the default timer); Neovim has only counts, so a count is always a
number of minutes.

Appointment reminders (notifications.enabled = true, or :Org notifications_start): timed SCHEDULED, DEADLINE and plain timestamps from the agenda files trigger vim.notify() at each of reminder_time minutes before the start. With system_notification, a desktop notification is sent too: osascript on macOS, notify-send on Linux and the BSDs, and a toast through powershell.exe (Windows PowerShell, part of Windows) on Windows and in WSL without notify-send. The toasts show "Windows PowerShell" as their sender. :checkhealth org says which one is used. Set notifications.notifier = function(n) ... end to deliver them yourself.

Each reminder is sent once per entry, which is known by its file, headline and start time: editing the file doesn't repeat it, and a headline whose SCHEDULED or DEADLINE time is also a plain timestamp gets one reminder. With several Neovim instances running, single_instance (on by default) lets only one of them send reminders. It holds a lock file in stdpath("data")/org, and another instance takes over, without repeating what was sent, when that one exits or stops checking for three check_intervals. Set single_instance = false to have every instance remind you.