Ages and ages I wrote about letting Emacs code access the notification area. I have more to say about it now, but first I want to bore you with some rambling thoughts and some history.
The “notification area” is also called the “status icon area” or the “systray” — it is a spot that holds some icons that are under control of various applications.
I was a fan of the notification area since it first showed up in Gnome. I recognized it instantly as the thing I wanted that I hadn’t realized I wanted.
Now, as you know, the notification area has fallen on hard times. It’s been removed in Gnome 3… I searched a bit for the rationale for this deletion, which as far as I can tell is just that some applications abused it, whatever that means; or that it was used inconsistently, which I think the web has conclusively proven is fine by users. Coming from the Emacs perspective, where one can customize the somewhat-equivalent of the status area (see those recent posts on diminishing minor-mode lighters in the mode line…), and where a certain amount of per-mode idiosyncrasy is the norm, these seem like an inadequate reasons.
However, the reason doesn’t really matter. I love the notification area! When I moved more of my daily desktop use back into Emacs (the tides are strong but slow, and take years to come in or go out), I hooked Emacs up to it, and made it a part of my basic configuration.
It’s indispensable now. What I particularly like about it is that it is both noticeable and unobtrusive — the former because I can have the icons blink on important events, and the latter because the icons don’t move around or obscure other windows.
Ok! You should use it! And I totally plan to tell you how, but first some boring history.
My original post relied on a hacked version of the Gnome zenity utility. This turned out to be a real pain over time. I had to rebuild it periodically, adding hacks (once removing chunks), etc. Sharing it with others was hard. And, for whatever reason, the patches in Gnome bugzilla were completely ignored. Bah.
A bit later I wrote a big patch to Emacs to put all this into the core. That patch was rejected, more or less. Bah two.
Then even later I flirted with KDE for a bit. Yes. KDE had the nice idea to expose the notification area via dbus, and Emacs could talk dbus… so I did the obvious thing in elisp. However the KDE notification area was pretty buggy and in the end I had to abandon it as well.
So, it was back to zenity… until this week, during my funemployment. I rewrote my hacks in Python. This was so easy I wish I’d done it years and years ago.
I’m not sure what the moral of this story is. Maybe that my obsession is your gain. Or maybe that I have trouble letting go.
Anyway, the result is here, on github, or in marmalade. You’ll need Python and the new (introspection-based) Python Gtk interfaces. This of course is no trouble to install. The package includes the base status icon API, plus basic UIs for ERC and EMMS. Try it out and let me know what you think.