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 97%
  • Meson 2.4%
  • Shell 0.6%
Find a file
2024年05月11日 09:38:33 +02:00
.builds ci (sr.ht): pull directly from git.sr.ht 2022年08月23日 16:44:35 +02:00
3rd-party/nanosvg nanosvg: update to 93ce879dc4c04a3ef1758428ec80083c38610b1f 2024年04月27日 09:45:59 +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 'scaling-filter' option 2024年04月18日 10:15:51 +02:00
external wayland: add support for the KDE idle protocol 2022年10月21日 20:06:29 +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 changelog: add new 'unreleased' section 2024年05月11日 09:38:33 +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 'scaling-filter' option 2024年04月18日 10:15:51 +02:00
config.h config: add 'scaling-filter' option 2024年04月18日 10:15:51 +02:00
ctrl-protocol.h add pause/unpause commands 2024年01月27日 21:36:32 +01:00
ctrl.c add pause/unpause commands 2024年01月27日 21:36:32 +01:00
ctrl.h ctrl: add a dbus member to the ctrl object 2019年10月18日 23:27:53 +02:00
dbus.c add pause/unpause commands 2024年01月27日 21:36:32 +01:00
dbus.h dbus: implement dbus_signal_action() 2019年10月18日 23:27:21 +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 config: make 'layer' a per-urgency option 2024年04月18日 09:28:43 +02:00
fnottctl.c add pause/unpause commands 2024年01月27日 21:36:32 +01:00
generate-version.sh generate-version: handle git repo not having any tags 2021年10月11日 20:25:37 +02:00
icon.c icon: fix FD leak: close theme directory FD 2022年05月20日 17:56: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: make syslog facility and level configurable, always log filename+lineno 2020年02月20日 20:00:04 +01: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/pkgbuild: bump version to 1.6.0 2024年04月30日 08:30:46 +02:00
meson_options.txt meson-options: add missing systemd-units-dir option 2024年04月30日 08:00:46 +02:00
nanosvg.c nanosvg: define NANOSVG_ALL_COLOR_KEYWORDS 2023年03月21日 09:02:54 +01:00
nanosvgrast.c nanosvg: pull in the full source tree 2021年10月04日 21:41:45 +02:00
notification.c notification: regression: replacements not being displayed correctly 2024年04月20日 08:30:19 +02:00
notification.h wayland: add support for wp_fractional_scale_v1 and wp_cursor_shape_v1 2024年04月12日 15:38:01 +02:00
PKGBUILD meson/pkgbuild: bump version to 1.6.0 2024年04月30日 08:30:46 +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 add dbus service file 2024年04月30日 07:42:18 +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 svg: pre-multiply alpha 2021年10月07日 19:16:11 +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: add support for wp_fractional_scale_v1 and wp_cursor_shape_v1 2024年04月12日 15:38:01 +02:00
wayland.h wayland: add support for wp_fractional_scale_v1 and wp_cursor_shape_v1 2024年04月12日 15:38:01 +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.