1
0
Fork
You've already forked fnott-fork
0
forked from dnkl/fnott
Keyboard driven and lightweight Wayland notification daemon for wlroots-based compositors.
  • C 96.5%
  • Meson 2.5%
  • Shell 1%
Find a file
2026年05月11日 12:56:35 +03:00
.builds
3rd-party/nanosvg
completions fnottctl: add new sub-command: status 2025年11月12日 15:00:46 +01:00
dbus
doc fnottctl: add new sub-command: status 2025年11月12日 15:00:46 +01:00
external
nanosvg
subprojects
systemd
.gitignore
.gitmodules
.woodpecker.yaml
CHANGELOG.md fnottctl: add new sub-command: status 2025年11月12日 15:00:46 +01:00
char32.c fix (char32.c): OpenBSD has UTF-32 2026年05月04日 15:21:13 +02:00
char32.h
config.c config: add include option 2026年05月11日 12:56:35 +03:00
config.h config: add top-center and bottom-center to the anchor option 2025年11月12日 14:51:08 +01:00
ctrl-protocol.h fnottctl: add new sub-command: status 2025年11月12日 15:00:46 +01:00
ctrl.c fnottctl: add new sub-command: status 2025年11月12日 15:00:46 +01:00
ctrl.h
dbus.c
dbus.h
fdm.c
fdm.h
fnott.desktop
fnott.ini
fnottctl.c fnottctl: add new sub-command: status 2025年11月12日 15:00:46 +01:00
generate-version.sh
icon.c icon: load: error out when we fail to load an absolute path 2025年11月12日 14:10:49 +01:00
icon.h icon+config: sync icon theme loading with fuzzel 2025年05月26日 12:44:25 +02:00
LICENSE
log.c
log.h
main.c icon+config: sync icon theme loading with fuzzel 2025年05月26日 12:44:25 +02:00
meson.build meson+pkgbuild: bump version to 1.8.0 2025年07月16日 11:58:13 +02:00
meson_options.txt
nanosvg.c
nanosvgrast.c
notification.c fix (notification.c): define CLOCK_BOOTTIME as CLOCK_MONOTONIC 2026年05月04日 15:21:13 +02:00
notification.h
PKGBUILD meson+pkgbuild: bump version to 1.8.0 2025年07月16日 11:58:13 +02:00
png-fnott.h
png.c
README.md
screenshot-2.png
screenshot.png
shm.c
shm.h
spawn.c
spawn.h
stride.h
svg.c
svg.h
tokenize.c
tokenize.h
uri.c
uri.h
wayland.c
wayland.h
xdg.c
xdg.h

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. Keep in mind that your environment should start it automatically when a notification is emitted.

if your environment doesn't do it automatically, you need to start a dbus session yourself:

dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus

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

Use fnottctl pause to disable notifications. fnottctl unpause will re-enable 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.

Sponsoring/donations

Donate using Liberapay