/eosd

Emacs Notification Daemon

Primary LanguageEmacs LispGNU General Public License v3.0GPL-3.0

Emacs On Screen Display

I currently use Emacs as the engine that runs my window management system. The specific module is 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 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

Requirements

Emacs OSD was tested with Emacs 24.5.1 but will probably work with any version compiled with D-Bus.

Installation

Install Emacs development headers, for example on Fedora:

dnf install emacs-devel

Build eosd-pixbuf.so library:

make

Enable the package in Emacs

(use-package eosd
  :load-path "/path/to/the/eosd/")

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:

KeyDescription
nMove to next notification
pMove to previous notification
gReload notifications from cache
fPrompt the user with the filter popup
iToggle show/hide notification body
dDelete notification
qBury buffer

Alternatives

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.