eosd
eosd copied to clipboard
Emacs Notification Daemon
- Emacs On Screen Display
I currently use Emacs as the engine that runs my window management system. The specific module is [[https://github.com/ch11ng/exwm/][EXWM]]. Although EXWM is amazing, it is beyond it's capabilities to manage Desktop Notifications. Being historically a Gnome Desktop user, I really missed them.
This package teaches Emacs how to manage notifications received by other applications via a D-Bus service [[http://www.galago-project.org/specs/notification/0.9/index.html][standardized by the Free Desktop]] initiative.
** Screenshot
[[./screenshot.jpg]]
** Features
- [X] Central place to access all notifications received
- [ ] Filter notifications by time, application, and status
- [ ] Silence notifications based on custom patterns
- [ ] Persistent cache for notifications (they'll survive Emacs restarts).
- [ ] Optional integration with Emacs Mini-buffer
- [ ] Optionally shows GTK+ balloons for messages
** How to install
It's available on [[https://melpa.org/][melpa]] follow the instructions to [[https://melpa.org/#/getting-started][enable it]] and
then run =M-x package-install<RET>eosd=.
** Requirements
Emacs OSD was tested with Emacs 24.5.1 but will probably work with any version compiled with D-Bus.
** Basic Usage
To launch =EOSD=, assuming it's properly installed, just execute =M-x eosd= and you'll be sent to the =EOSD Mode=. Use the following key bindings in that mode:
| Key | Description | |-----+---------------------------------------| | =n= | Move to next notification | | =p= | Move to previous notification | | =g= | Reload notifications from cache | | =f= | Prompt the user with the filter popup | | =i= | Toggle show/hide notification body | | =d= | Delete notification | | =q= | Bury buffer |
** Alternatives
- https://launchpad.net/notify-osd
- http://www.knopwob.org/dunst
- https://github.com/GNOME/notification-daemon
** Modular Design
Emacs OSD is organized in three modules: D-Bus interface, Notification Buffer, and UI.
The Notification Buffer is the abstraction that binds the UI to the events received via D-Bus. It's also the place that filters are applied.