New Emacs package: gazette

Published 2026-01-15

tag(s): #programming #emacs

The README pretty much tells the story of it, but why not repeat myself.
I found out a quite a while ago about notifications-notify, and used it to show desktop alerts for events in my calendar, using my own CalDAV sync + the built in appt.el. This worked OK, although honestly I am not using that integration that much.
Which makes you wonder why did I build cdsync at all...but let's not go there. Specially as we are talking about yet another package. >_>

So, desktop notifications from Emacs work nice, and I got in the habit of using them for all sorts of little things. At work, under Windows, there's support for W32 notifications, but it doesn't quite work as I would expect? I should maybe report that as a bug...[1] I ended up monkey patching notifications-notify to use an external program (no harm done, since Windows doesn't have D-Bus, I didn't need the original there). And I continued to (ab)use desktop notifications for things that didn't necessarily need them.

Nowadays though I also run Emacs on a shared Linux dev server, on the terminal. There's no desktop notifications, which made me review the different usages for these and think of an alternative. Because honestly...most are not good use cases for desktop notifications. It is usually the output of some long running process, which I ended up checking in some buffer. Also sometimes I would miss the notification pop up and forget about whatever I had running in the background until later.
Enter gazette, available in Source Hut[2]

Screenshot of Emacs
(direct link to image)

That's all there is to the package. The number of notifications "unread" is reset when you quit (or kill) the *gazette* buffer, and that removes the counter.
It's been pretty useful, since now all callbacks that sent notifications publish in there, and I just check ONE buffer for output of whatever I was running.

Now, this creates a conundrum, where I am considering having more of my code depend on gazette, but I don't want to impose. Then again, it is 120 lines, including the license header and comments. 🤷
I also have the feeling that there has to be another package that does the same, but I didn't find any. There's stuff for alerts, for internal logging, but couldn't find anything like this, for "non-important" notifications.

Footnotes
  1. It re-uses a single notification ID, which means you have to close the existing one before showing another. That's not how the other notifications work, but doesn't necessarily mean it is wrong...
  2. I thought of naming it something related to "log" or "diary" or "notification" but nothing quite clicked.

Share your thoughts (via email)

Back to top

Back to homepage