Keyboard driven and lightweight Wayland notification daemon for wlroots-based compositors.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Daniel Eklöf d0854cd2b4
notif: set namespace to ‘notifications’ (same as mako)
2 weeks ago
.builds ci: freebsd: add evdev-proto dep 2 weeks ago
3rd-party/nanosvg nanosvg: pull in the full source tree 2 months ago
completions completions: zsh: add -c,--config=PATH 7 months ago
doc config: replace ‘timeout’ with ‘max-timeout’ 2 months ago
external external: wlr-protocols: bump 5 months ago
subprojects subprojects: use meson wrap files for tllist+fcft 11 months ago
.gitignore gitignore: ignore compile_commands.json 6 months ago
.gitlab-ci.yml ci: build on alpine/latest, not edge 8 months ago
.gitmodules fcft/tllist: remove git submodules 2 years ago
.woodpecker.yml ci: also build release branches 1 month ago
CHANGELOG.md ctrl: don’t close fnottctl connection when a reply is pending 2 weeks ago
LICENSE license: fix bad copy-paste: first commit was in 2019 1 year ago
PKGBUILD meson/pkgbuild: bump version to 1.1.2 2 months ago
README.md ci: codeberg CI 2 months ago
config.c config: replace ‘timeout’ with ‘max-timeout’ 2 months ago
config.h config: replace ‘timeout’ with ‘max-timeout’ 2 months ago
ctrl-protocol.h ctrl: actions: detect when notification has no actions and report this specifically 2 years ago
ctrl.c ctrl: refactor: add client_disconnected() 2 weeks ago
ctrl.h ctrl: add a dbus member to the ctrl object 2 years ago
dbus.c notification: refactor: timeout handling 2 months ago
dbus.h dbus: implement dbus_signal_action() 2 years ago
fdm.c tllist: is now an external "library", so use <> includes 2 years ago
fdm.h fdm: sync with latest FDM - fdm_del() now closes FD 2 years ago
fnott.desktop Add fnott.desktop 2 years ago
fnott.ini doc: update man page and template config for default-timeout 2 months ago
fnottctl.c fnottctl: initialize logger 2 weeks ago
generate-version.sh generate-version: handle git repo not having any tags 2 months ago
icon.c nanosvg: pull in the full source tree 2 months ago
icon.h icon: utility functions to load icons from an XDG icon theme 2 years ago
log.c log: make syslog facility and level configurable, always log filename+lineno 2 years ago
log.h log: make syslog facility and level configurable, always log filename+lineno 2 years ago
main.c main: enable debug logging 4 months ago
meson.build meson/pkgbuild: bump version to 1.1.2 2 months ago
nanosvg.c nanosvg: pull in the full source tree 2 months ago
nanosvgrast.c nanosvg: pull in the full source tree 2 months ago
notification.c notif: set namespace to ‘notifications’ (same as mako) 2 weeks ago
notification.h notification: add notif_play_sound() 6 months ago
png-fnott.h png: loads PNG files into pixman images 2 years ago
png.c png: make sure image_data is initialized before the first 'goto err' 2 years ago
screenshot.png screenshot: update: use a scalable font, rendered with subpixel antialiasing 2 years ago
shm.c shm: unbreak build without memfd_create 11 months ago
shm.h wip: inital frame rendering of notification box 2 years ago
spawn.c spawn: new utility functions to expand and spawn a command template 6 months ago
spawn.h spawn: new utility functions to expand and spawn a command template 6 months ago
stride.h playing around with libdbus - we can receive notifications 2 years ago
svg.c svg: pre-multiply alpha 2 months ago
svg.h icon: use nanosvg to rasterize SVG images 2 years ago
tokenize.c config: add ‘play-sound’ option to fnott.ini 6 months ago
tokenize.h config: add ‘play-sound’ option to fnott.ini 6 months ago
wayland.c Revert "wayland: drop check for BTN_LEFT" 2 weeks ago
wayland.h wayland: add wayl_guess_subpixel() 6 months ago
xdg.c xdg: include limits.h to pull in PATH_MAX 2 years ago
xdg.h xdg: utility functions to get XDG paths 2 years ago

README.md

CI status

Fnott

Fnott is a keyboard driven and lightweight notification daemon for wlroots-based Wayland compositors.

It implements (parts of) the Desktop Notification Specification.

Packaging status

screenshot

Supported features

  • Summary
  • Body
  • Actions (requires a dmenu-like utility to display and let user select action)
  • Urgency
  • Icons
    • PNGs (using libpng)
    • SVGs (using bundled nanosvg)
  • Markup
  • Timeout

Requirements

Running

  • fontconfig
  • freetype
  • pixman
  • libpng
  • wayland (client and cursor libraries)
  • wlroots*
  • dbus
  • fcft, unless built as a subproject

* Fnott must be run in a Wayland compositor that implements the wlroots protocols.

Building

In addition to the dev variant of the packages above, you need:

  • meson
  • ninja
  • scdoc
  • wayland-protocols
  • tllist, unless built as a subproject

Usage

Copy the example fnott.ini to ${HOME}/.config/fnott/fnott.ini and edit to your liking.

Start the daemon by running fnott. Note that it does not daemonize or background itself.

Test it with e.g. notify-send "this is the summary" "this is the body".

Use fnottctl dismiss to dismiss the highest priority notification (usually the oldest), fnottctl dismiss all to dismiss all notifications, or fnottctl dismiss <id> to dismiss a specific notification (use fnottctl list to list currently active notifications).

You can also click on a notification to dismiss it.

Note: you probably want to bind at least fnottctl dismiss to a keyboard shortcut in your Wayland compositor configuration.

Installation

To build, first, create a build directory, and switch to it:

mkdir -p bld/release && cd bld/release

Second, configure the build (if you intend to install it globally, you might also want --prefix=/usr):

meson --buildtype=release ../..

Three, build it:

ninja

You can now run it directly from the build directory:

./fnott

Test that it works:

notify-send -a "MyApplicationName" "This Is The Summary" "hello world"

Optionally, install it:

ninja install

License

Fnott is released under the MIT license.

Fnott uses nanosvg, released under the Zlib license.