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.9%
  • Meson 2.5%
  • Shell 0.6%
Find a file
Daniel Eklöf d24952b3d9
config: add anchor=center
This adds 'center' as a valid value for the 'anchor' option.
2024年09月13日 08:44:45 +02:00
.builds ci (sr.ht): pull directly from git.sr.ht 2022年08月23日 16:44:35 +02:00
3rd-party/nanosvg nanosvg: silence "may be used uninitialized" warning 2024年07月14日 13:34:40 +02:00
completions add pause/unpause commands 2024年01月27日 21:36:32 +01:00
dbus meson: move fnott.service.in to dbus subdirectory 2024年04月30日 07:57:31 +02:00
doc config: add anchor=center 2024年09月13日 08:44:45 +02: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 config: add anchor=center 2024年09月13日 08:44:45 +02: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 config: add anchor=center 2024年09月13日 08:44:45 +02:00
config.h config: add anchor=center 2024年09月13日 08:44:45 +02:00
ctrl-protocol.h add support for xdg activation 2024年07月25日 16:05:59 +02:00
ctrl.c add support for xdg activation 2024年07月25日 16:05:59 +02:00
ctrl.h ctrl: add a dbus member to the ctrl object 2019年10月18日 23:27:53 +02:00
dbus.c dbus: pre-multiply image alpha in in-band image data 2024年07月31日 16:20:29 +02:00
dbus.h add support for xdg activation 2024年07月25日 16:05:59 +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 Added rounded corners on borders. 2024年07月18日 09:15:46 +02: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 meson/nanosvg: support linking against a system library 2024年07月18日 18:06:43 +02:00
icon.h icon: performance and correctness fixes to icon lookup 2022年04月24日 13:36:44 +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 config: add ‘default-icon’ option (per-urgency option) 2022年10月27日 13:53:55 +02:00
meson.build meson: reduce binary size: we don't need unwind tables 2024年08月09日 08:34:58 +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 config: add anchor=center 2024年09月13日 08:44:45 +02:00
notification.h add support for xdg activation 2024年07月25日 16:05:59 +02:00
PKGBUILD meson+pkgbuild: bump version to 1.7.0 2024年08月02日 11:48:03 +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: repology: use four columns 2024年08月20日 09:11:58 +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 add support for xdg activation 2024年07月25日 16:05:59 +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.