.builds | ||
3rd-party/nanosvg | ||
completions | ||
dbus | ||
doc | ||
external | ||
nanosvg | ||
subprojects | ||
systemd | ||
.gitignore | ||
.gitmodules | ||
.woodpecker.yaml | ||
CHANGELOG.md | ||
char32.c | ||
char32.h | ||
config.c | ||
config.h | ||
ctrl-protocol.h | ||
ctrl.c | ||
ctrl.h | ||
dbus.c | ||
dbus.h | ||
fdm.c | ||
fdm.h | ||
fnott.desktop | ||
fnott.ini | ||
fnottctl.c | ||
generate-version.sh | ||
icon.c | ||
icon.h | ||
LICENSE | ||
log.c | ||
log.h | ||
main.c | ||
meson.build | ||
meson_options.txt | ||
nanosvg.c | ||
nanosvgrast.c | ||
notification.c | ||
notification.h | ||
PKGBUILD | ||
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 |
Fnott
Fnott is a keyboard driven and lightweight notification daemon for wlroots-based Wayland compositors.
It implements (parts of) the Desktop Notifications Specification.
Supports styling and progress hints:
Notifications are automatically sized (with the possibility of limiting their max width and height):
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:
- man fnott documents the server
- man fnottctl documents the client
- man fnott.ini documents the configuration
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.