Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/clarete/eosd

Emacs Notification Daemon
https://github.com/clarete/eosd

emacs exwm notification-server notifications

Last synced: about 2 months ago
JSON representation

Emacs Notification Daemon

Awesome Lists containing this project

README

        

* 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-installeosd=.

** 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:

#+BEGIN_SRC
dnf install emacs-devel
#+END_SRC

Build =eosd-pixbuf.so= library:

#+BEGIN_SRC
make
#+END_SRC

Enable the package in Emacs

#+BEGIN_SRC emacs-lisp
(use-package eosd
:load-path "/path/to/the/eosd/")
#+END_SRC

** 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.