Skip to content

klochowicz/focus-nag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

focus-nag

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.

Install

MELPA (once accepted)

M-x package-install RET focus-nag RET

Spacemacs

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 + straight.el

(use-package focus-nag
  :straight (focus-nag
             :type git :host github :repo "klochowicz/focus-nag")
  :config (focus-nag-mode 1))

Usage

(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).

Configuration

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.

How it decides

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.

Development

eldev test   # ERT suite
eldev lint   # checkdoc + package-lint

Install eldev first.

License

GPL-3.0-or-later. See LICENSE.

About

Gentle ADHD-aware reminders to set a focus task in Emacs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors