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 464699179e
nanosvg: update to 9da543e
4 days ago
.builds ci (sr.ht): pull directly from git.sr.ht 4 months ago
3rd-party/nanosvg nanosvg: update to 9da543e 4 days ago
completions completions: zsh: add -c,--config=PATH 2 years ago
doc doc: fnott.init: max-width: mention that we only word-wrap when *not* set to 0 1 month ago
external wayland: add support for the KDE idle protocol 2 months ago
subprojects subprojects: use meson wrap files for tllist+fcft 2 years ago
.gitignore gitignore: ignore compile_commands.json 2 years ago
.gitlab-ci.yml ci: use fcft master branch 10 months ago
.gitmodules update wlr-protocols url 4 months ago
.woodpecker.yml ci: use fcft master branch 10 months ago
CHANGELOG.md dbus: parse file:// URIs in icon paths 1 month ago
LICENSE license: fix bad copy-paste: first commit was in 2019 2 years ago
PKGBUILD meson/pkgbuild: bump version to 1.3.0 4 months ago
README.md Revert "readme: dummy" 1 month ago
char32.c fcft: adapt to API changes in fcft-3.x 10 months ago
char32.h fcft: adapt to API changes in fcft-3.x 10 months ago
config.c config: change default max-{width,height} to 0 (unlimited) 1 month ago
config.h config: add ‘default-icon’ option (per-urgency option) 1 month ago
ctrl-protocol.h ctrl: actions: detect when notification has no actions and report this specifically 3 years ago
ctrl.c ctrl: refactor: add client_disconnected() 1 year ago
ctrl.h ctrl: add a dbus member to the ctrl object 3 years ago
dbus.c dbus: parse file:// URIs in icon paths 1 month ago
dbus.h dbus: implement dbus_signal_action() 3 years ago
fdm.c tllist: is now an external "library", so use <> includes 3 years ago
fdm.h fdm: sync with latest FDM - fdm_del() now closes FD 3 years ago
fnott.desktop Add fnott.desktop 3 years ago
fnott.ini config: change default max-{width,height} to 0 (unlimited) 1 month ago
fnottctl.c fnottctl: initialize logger 1 year ago
generate-version.sh generate-version: handle git repo not having any tags 1 year ago
icon.c icon: fix FD leak: close theme directory FD 7 months ago
icon.h icon: performance and correctness fixes to icon lookup 8 months ago
log.c log: make syslog facility and level configurable, always log filename+lineno 3 years ago
log.h log: make syslog facility and level configurable, always log filename+lineno 3 years ago
main.c config: add ‘default-icon’ option (per-urgency option) 1 month ago
meson.build dbus: parse file:// URIs in icon paths 1 month ago
nanosvg.c nanosvg: pull in the full source tree 1 year ago
nanosvgrast.c nanosvg: pull in the full source tree 1 year ago
notification.c config: add ‘default-icon’ option (per-urgency option) 1 month ago
notification.h config: add ‘default-icon’ option (per-urgency option) 1 month ago
png-fnott.h png: loads PNG files into pixman images 3 years ago
png.c png: make sure image_data is initialized before the first 'goto err' 3 years ago
screenshot-2.png readme: add second screenshot, with multiple notifications 1 month ago
screenshot.png Revert "screenshot: reduce size" 1 month ago
shm.c shm: use LOG_ERRNO() when logging mmap() failures 7 months ago
shm.h wip: inital frame rendering of notification box 3 years ago
spawn.c spawn: new utility functions to expand and spawn a command template 2 years ago
spawn.h spawn: new utility functions to expand and spawn a command template 2 years ago
stride.h playing around with libdbus - we can receive notifications 3 years ago
svg.c svg: pre-multiply alpha 1 year ago
svg.h icon: use nanosvg to rasterize SVG images 3 years ago
tokenize.c config: add ‘play-sound’ option to fnott.ini 2 years ago
tokenize.h config: add ‘play-sound’ option to fnott.ini 2 years ago
uri.c dbus: parse file:// URIs in icon paths 1 month ago
uri.h dbus: parse file:// URIs in icon paths 1 month ago
wayland.c wayland: add support for the (new) idle-notify protocol 2 months ago
wayland.h wayland: add support for the KDE idle protocol 2 months ago
xdg.c icon: performance and correctness fixes to icon lookup 8 months ago
xdg.h icon: performance and correctness fixes to icon lookup 8 months 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 Notifications Specification.

Packaging status

Supports styling and progress hints:

screenshot

Notifications are automatically sized (with the possibility of limiting their max width and height):

screenshot-2

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

More documentation is available in the installed man pages:

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

Additionally if you compositor implements either the KDE idle protocol, or the newer idle-notify protocol, fnott will not dismiss any notification if you are idle by the amount of time configured in fnott.ini

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.