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 69099d1f05
Merge branch 'beep-beep'
3 days ago
.builds ci: build on alpine/latest, not edge 2 months ago
3rd-party svg: build nanosvg 2 years ago
completions completions: zsh: add -c,--config=PATH 1 month ago
doc config: add ‘play-sound’ option to fnott.ini 3 days ago
external wlr-protocols: bump 7 months ago
subprojects subprojects: use meson wrap files for tllist+fcft 6 months ago
.gitignore gitignore: ignore compile_commands.json 3 days ago
.gitlab-ci.yml ci: build on alpine/latest, not edge 2 months ago
.gitmodules fcft/tllist: remove git submodules 1 year ago
CHANGELOG.md config: add ‘play-sound’ option to fnott.ini 3 days ago
LICENSE license: fix bad copy-paste: first commit was in 2019 11 months ago
PKGBUILD meson/pkgbuild: bump fcft requirement to 2.4.0 4 days ago
README.md fnottrc: move to XDG_CONFIG_HOME/fnott/fnott.ini 3 months ago
config.c config: add ‘play-sound’ option to fnott.ini 3 days ago
config.h config: add ‘play-sound’ option to fnott.ini 3 days ago
ctrl-protocol.h ctrl: actions: detect when notification has no actions and report this specifically 2 years ago
ctrl.c codespell: spelling fixes 6 months ago
ctrl.h ctrl: add a dbus member to the ctrl object 2 years ago
dbus.c dbus: call notif_play_sound() after having configured a new notification 3 days 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 ‘play-sound’ option to fnott.ini 3 days ago
fnottctl.c ctrl: use WAYLAND_DISPLAY instead of XDG_SESSION_ID in socket path 11 months ago
generate-version.sh generate-version: check for .git directory in *src* dir 1 year ago
icon.c icon: check if malloc:ed path variable is NULL 4 days 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 1 year ago
log.h log: make syslog facility and level configurable, always log filename+lineno 1 year ago
main.c main: add -c,--config=PATH 1 month ago
meson.build spawn: new utility functions to expand and spawn a command template 3 days ago
nanosvg.c svg: build nanosvg 2 years ago
nanosvgrast.c icon: use nanosvg to rasterize SVG images 2 years ago
notification.c notification: add notif_play_sound() 3 days ago
notification.h notification: add notif_play_sound() 3 days 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 6 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 3 days ago
spawn.h spawn: new utility functions to expand and spawn a command template 3 days 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 3 days ago
tokenize.h config: add ‘play-sound’ option to fnott.ini 3 days ago
wayland.c explicitly cast wl_output_subpixel to enum fcft_subpixel 4 days ago
wayland.h wayland: add wayl_guess_subpixel() 4 days 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