agenda-notifier.̶e̶l̶ go is a basic notification daemon for org-mode agenda, a part of the free software text editor GNU/Emacs.
- Actually works.
- Emacs independent, so you will get notified even if Emacs is not running (it runs its own process of Emacs).
- Reminder notification before an event.
- The
notify-send
command. (preinstalled in most GNU/Linux distributions) - It uses
kdialog
in the case of KDE.
First install Go. Then run:
go install github.com/larraskt/notifier.go/notifier@latest
Now notifier
should be located at $GOPATH/bin/
(Probably $HOME/go/bin
).
Auto start the notifier
command with your system, there are many ways to do so, this page
could be useful.
The configuration file should be found at $HOME/.config/agn/config.yaml
, and
it is generated automatically.
# Whether you are using Emacs or Doom Emacs[fn:3].
doom: true
# Emacs ~init.el~ or ~.emacs~ location.
emacsInitFile: /home/ghd/.doom.d/
# Scan interval (in seconds) for checking for changes in org-agenda
scanInt: 300
# Time (in minutes) before getting a reminder of an event.
beforeNotification: 30
# ~doomscript~ binary location, in case of doom.
doomScriptLoc: /home/ghd/.emacs.d/bin/doomscript
Because:
- It is hard to maintain (sometimes, impossible[fn:1][fn:2]) asynchronous code inside Emacs environment.
- Debugging Elisp can be painful, compared to other languages. I tired to use spegoraro/org-alert, doppelc/org-notifications, akhramov/org-wild-notifier.el and others but I couldn’t get persistence with any, and I couldn’t also debug to tell what was the problem. Actually I told myself then it would be easier to rewrite it rather than debugging it, and here we go.
[fn:2] Elisp capability of using threads is often described as ‘limited’.
[fn:1] Nothreading. EmacsWiki. Retrieved November 23, 2022, from https://www.emacswiki.org/emacs/NoThreading