1
0
Fork
You've already forked fnott
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
sewn 1df77f971a
notification: implement additional progress bar customization
Introduce 3 configuration options to customize the inner color,
border size, and the padding of the progress indicator.
2025年11月01日 15:07:35 +03:00
.builds builds (sr.ht): disable codespell, don't try to install wlroots 2025年04月14日 12:30:37 +02:00
3rd-party/nanosvg nanosvg: update to ea6a6aca009422bba0dbad4c80df6e6ba0c82183 2025年01月24日 07:04:42 +01:00
completions meson: completions: install fish completions 2025年05月21日 13:37:49 +02:00
dbus meson: move fnott.service.in to dbus subdirectory 2024年04月30日 07:57:31 +02:00
doc notification: implement additional progress bar customization 2025年11月01日 15:07:35 +03:00
external wayland: add support for the KDE idle protocol 2022年10月21日 20:06:29 +02:00
nanosvg meson/nanosvg: support linking against a system library 2024年07月18日 18:06:43 +02:00
subprojects subprojects: use meson wrap files for tllist+fcft 2020年12月25日 11:58:06 +01:00
systemd meson: move fnott.service.in to systemd subdirectory 2024年04月30日 08:00:22 +02:00
.gitignore gitignore: ignore compile_commands.json 2021年06月13日 15:39:34 +02:00
.gitmodules update wlr-protocols url 2022年07月27日 22:15:09 -05:00
.woodpecker.yaml ci: group -> depends_on 2024年04月17日 09:48:35 +02:00
CHANGELOG.md notification: implement additional progress bar customization 2025年11月01日 15:07:35 +03:00
char32.c char32: mbsntoc32() returns a size_t, not a char32_t 2024年04月20日 08:23:11 +02:00
char32.h fcft: adapt to API changes in fcft-3.x 2022年02月05日 16:40:58 +01:00
config.c notification: implement additional progress bar customization 2025年11月01日 15:07:35 +03:00
config.h notification: implement additional progress bar customization 2025年11月01日 15:07:35 +03:00
ctrl-protocol.h add support for xdg activation 2024年07月25日 16:05:59 +02:00
ctrl.c ctrl: pause/unpause: set reply to CTRL_OK 2025年05月17日 15:29:27 +02:00
ctrl.h ctrl: add a dbus member to the ctrl object 2019年10月18日 23:27:53 +02:00
dbus.c dbus: dispatch initial messages immediately 2024年10月02日 07:45:37 +02:00
dbus.h dbus: dispatch initial messages immediately 2024年10月02日 07:45:37 +02:00
fdm.c tllist: is now an external "library", so use <> includes 2019年11月17日 19:19:17 +01:00
fdm.h fdm: sync with latest FDM - fdm_del() now closes FD 2019年11月05日 10:58:30 +01:00
fnott.desktop Add fnott.desktop 2019年10月12日 20:12:41 +02:00
fnott.ini notification: implement additional progress bar customization 2025年11月01日 15:07:35 +03:00
fnottctl.c add support for xdg activation 2024年07月25日 16:05:59 +02:00
generate-version.sh generate-version: handle git repo not having any tags 2021年10月11日 20:25:37 +02:00
icon.c icon+config: sync icon theme loading with fuzzel 2025年05月26日 12:44:25 +02:00
icon.h icon+config: sync icon theme loading with fuzzel 2025年05月26日 12:44:25 +02:00
LICENSE license: fix bad copy-paste: first commit was in 2019 2020年07月25日 08:51:33 +02:00
log.c log: respect the NO_COLOR environment variable 2024年07月18日 08:34:42 +02:00
log.h log: make syslog facility and level configurable, always log filename+lineno 2020年02月20日 20:00:04 +01:00
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 meson/nanosvg: support linking against a system library 2024年07月18日 18:06:43 +02:00
nanosvg.c meson/nanosvg: support linking against a system library 2024年07月18日 18:06:43 +02:00
nanosvgrast.c meson/nanosvg: support linking against a system library 2024年07月18日 18:06:43 +02:00
notification.c notification: implement additional progress bar customization 2025年11月01日 15:07:35 +03:00
notification.h add support for xdg activation 2024年07月25日 16:05:59 +02:00
PKGBUILD meson+pkgbuild: bump version to 1.8.0 2025年07月16日 11:58:13 +02:00
png-fnott.h png: loads PNG files into pixman images 2019年10月11日 21:01:42 +02:00
png.c png: do alpha pre-multiplication manually 2024年04月18日 15:52:13 +02:00
README.md readme: add liberapay donation button 2025年04月30日 11:52:11 +02:00
screenshot-2.png readme: add second screenshot, with multiple notifications 2022年10月28日 11:03:06 +02:00
screenshot.png Revert "screenshot: reduce size" 2022年10月28日 11:11:24 +02:00
shm.c shm: try with MFD_NOEXEC_SEAL first, then without 2023年10月13日 16:37:31 +02:00
shm.h wip: inital frame rendering of notification box 2019年10月08日 19:07:23 +02:00
spawn.c spawn: new utility functions to expand and spawn a command template 2021年06月13日 15:40:24 +02:00
spawn.h spawn: new utility functions to expand and spawn a command template 2021年06月13日 15:40:24 +02:00
stride.h playing around with libdbus - we can receive notifications 2019年10月06日 18:43:29 +02:00
svg.c meson/nanosvg: support linking against a system library 2024年07月18日 18:06:43 +02:00
svg.h icon: use nanosvg to rasterize SVG images 2019年10月12日 17:12:23 +02:00
tokenize.c config: add ‘play-sound’ option to fnott.ini 2021年06月13日 15:40:24 +02:00
tokenize.h config: add ‘play-sound’ option to fnott.ini 2021年06月13日 15:40:24 +02:00
uri.c uri: deocoded_len is unused 2023年03月31日 13:07:52 +02:00
uri.h dbus: parse file:// URIs in icon paths 2022年10月28日 10:39:43 +02:00
wayland.c wayland: improve flush + error handling 2025年05月04日 12:49:10 +02:00
wayland.h add support for xdg activation 2024年07月25日 16:05:59 +02:00
xdg.c icon: performance and correctness fixes to icon lookup 2022年04月24日 13:36:44 +02:00
xdg.h icon: performance and correctness fixes to icon lookup 2022年04月24日 13:36:44 +02:00

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