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 45f6698950
meson: run generate_version.sh in a C locale
1 month ago
.builds ci: build on alpine/latest, not edge 6 months ago
3rd-party svg: build nanosvg 2 years ago
completions completions: zsh: add -c,--config=PATH 5 months ago
doc config: add stacking-order=bottom-up|top-down 2 months ago
external external: wlr-protocols: bump 3 months ago
subprojects subprojects: use meson wrap files for tllist+fcft 9 months ago
.gitignore gitignore: ignore compile_commands.json 4 months ago
.gitlab-ci.yml ci: build on alpine/latest, not edge 6 months ago
.gitmodules fcft/tllist: remove git submodules 2 years ago
CHANGELOG.md changelog: Fixed crash on notification with no monitor 2 months ago
LICENSE license: fix bad copy-paste: first commit was in 2019 1 year ago
PKGBUILD meson/pkgbuild: bump version to 1.1.0 3 months ago
README.md fnottrc: move to XDG_CONFIG_HOME/fnott/fnott.ini 6 months ago
config.c config: make section name parsing modular 1 month ago
config.h config: add stacking-order=bottom-up|top-down 2 months ago
ctrl-protocol.h ctrl: actions: detect when notification has no actions and report this specifically 2 years ago
ctrl.c codespell: spelling fixes 9 months ago
ctrl.h ctrl: add a dbus member to the ctrl object 2 years ago
dbus.c dbus: Handle notif_mgr_create_notif NULL return 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 config: add stacking-order=bottom-up|top-down 2 months ago
fnottctl.c ctrl: use WAYLAND_DISPLAY instead of XDG_SESSION_ID in socket path 1 year ago
generate-version.sh meson: run generate_version.sh in a C locale 1 month ago
icon.c icon: don’t stop when we’ve find our first theme instance 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 2 months ago
meson.build meson: run generate_version.sh in a C locale 1 month ago
nanosvg.c svg: build nanosvg 2 years ago
nanosvgrast.c icon: use nanosvg to rasterize SVG images 2 years ago
notification.c notif: don’t trigger refresh when dismissing a notification due to it being closed by the compositor 1 month ago
notification.h notification: add notif_play_sound() 4 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 1 year ago
shm.c shm: unbreak build without memfd_create 9 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 4 months ago
spawn.h spawn: new utility functions to expand and spawn a command template 4 months ago
stride.h playing around with libdbus - we can receive notifications 2 years ago
svg.c Disable all debug log output by default 2 years ago
svg.h icon: use nanosvg to rasterize SVG images 2 years ago
tokenize.c config: add ‘play-sound’ option to fnott.ini 4 months ago
tokenize.h config: add ‘play-sound’ option to fnott.ini 4 months ago
wayland.c explicitly cast wl_output_subpixel to enum fcft_subpixel 4 months ago
wayland.h wayland: add wayl_guess_subpixel() 4 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

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 (PNG + SVG)
  • 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