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 04dd3842fa Release 1.1.1 8 months ago
.builds ci: build on alpine/latest, not edge 1 year ago
3rd-party/nanosvg nanosvg: pull in the full source tree 8 months ago
completions completions: zsh: add -c,--config=PATH 1 year ago
doc config: replace ‘timeout’ with ‘max-timeout’ 8 months ago
external external: wlr-protocols: bump 11 months ago
subprojects subprojects: use meson wrap files for tllist+fcft 1 year ago
.gitignore gitignore: ignore compile_commands.json 12 months ago
.gitlab-ci.yml ci: build on alpine/latest, not edge 1 year ago
.gitmodules fcft/tllist: remove git submodules 2 years ago
CHANGELOG.md changelog: prepare for 1.1.1 8 months ago
LICENSE license: fix bad copy-paste: first commit was in 2019 2 years ago
PKGBUILD Release 1.1.1 8 months ago
README.md readme: add a ‘license’ section 8 months ago
config.c config: replace ‘timeout’ with ‘max-timeout’ 8 months ago
config.h config: replace ‘timeout’ with ‘max-timeout’ 8 months ago
ctrl-protocol.h ctrl: actions: detect when notification has no actions and report this specifically 3 years ago
ctrl.c codespell: spelling fixes 1 year ago
ctrl.h ctrl: add a dbus member to the ctrl object 3 years ago
dbus.c notification: refactor: timeout handling 8 months 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 doc: update man page and template config for default-timeout 8 months ago
fnottctl.c ctrl: use WAYLAND_DISPLAY instead of XDG_SESSION_ID in socket path 2 years ago
generate-version.sh meson: run generate_version.sh in a C locale 9 months ago
icon.c nanosvg: pull in the full source tree 8 months ago
icon.h icon: utility functions to load icons from an XDG icon theme 3 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 10 months ago
meson.build Release 1.1.1 8 months ago
nanosvg.c nanosvg: pull in the full source tree 8 months ago
nanosvgrast.c nanosvg: pull in the full source tree 8 months ago
notification.c config: replace ‘timeout’ with ‘max-timeout’ 8 months ago
notification.h notification: add notif_play_sound() 12 months 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.png screenshot: update: use a scalable font, rendered with subpixel antialiasing 2 years ago
shm.c shm: unbreak build without memfd_create 1 year 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 12 months ago
spawn.h spawn: new utility functions to expand and spawn a command template 12 months ago
stride.h playing around with libdbus - we can receive notifications 3 years ago
svg.c svg: pre-multiply alpha 8 months ago
svg.h icon: use nanosvg to rasterize SVG images 3 years ago
tokenize.c config: add ‘play-sound’ option to fnott.ini 12 months ago
tokenize.h config: add ‘play-sound’ option to fnott.ini 12 months ago
wayland.c explicitly cast wl_output_subpixel to enum fcft_subpixel 12 months ago
wayland.h wayland: add wayl_guess_subpixel() 12 months ago
xdg.c xdg: include limits.h to pull in PATH_MAX 3 years ago
xdg.h xdg: utility functions to get XDG paths 3 years ago

README.md

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.