Gentle ADHD-aware reminders to set a focus task in Emacs.
When neither an org-clock nor an org-pomodoro work phase is running,
focus-nag fires escalating desktop notifications on a schedule that
floors at four minutes — predictable, never frantic.
The design philosophy: predictability over urgency. ADHD-friendly tools should feel invitational, not punitive. There's a five-minute grace window after going idle, eight invitational messages drawn at random, and a thirty-minute snooze for when you genuinely need it.
M-x package-install RET focus-nag RET
Add to dotspacemacs-additional-packages in your .spacemacs:
(focus-nag :location (recipe :fetcher github
:repo "klochowicz/focus-nag"
:files ("focus-nag.el")))Then enable it in dotspacemacs/user-config:
(focus-nag-mode 1)(use-package focus-nag
:straight (focus-nag
:type git :host github :repo "klochowicz/focus-nag")
:config (focus-nag-mode 1))(require 'focus-nag)
(focus-nag-mode 1)Interactive commands:
| Command | What it does |
|---|---|
focus-nag-mode |
Toggle the minor mode. |
focus-nag-status |
Echo current state (on/off, step, snooze) to the minibuffer. |
focus-nag-now |
Fire a nag immediately, bypassing all checks. |
focus-nag-snooze |
Suppress nags for focus-nag-snooze-seconds (default thirty min). |
All knobs live in M-x customize-group RET focus-nag:
focus-nag-grace-seconds(300) — quiet window after going idle before the first nag.focus-nag-intervals('(480 360 300 240)) — escalation curve in seconds. The last entry is the floor that repeats forever.focus-nag-snooze-seconds(1800) — snooze duration.focus-nag-messages— pool of strings drawn at random per nag. Override with your own copy if the defaults aren't your tone.focus-nag-title— notification title.
A "main task" is active when either org-clocking-p returns
non-nil, or org-pomodoro-state is :pomodoro or :overtime.
While on a pomodoro break (:short-break, :long-break),
focus-nag stays quiet. Both alert and
org-pomodoro are soft dependencies — without them
focus-nag falls back to message and skips the pomodoro checks.
eldev test # ERT suite
eldev lint # checkdoc + package-lint
Install eldev first.
GPL-3.0-or-later. See LICENSE.