There have been many important contributions in the last few months. Some notable changes are: adding hot-reload for the configuration, exporting rules via dunstctl, adding color gradients, removing default hard-coded icons. For detailed information consult the changelog.
Important notice for all users:
The behaviour of the setting height
has been changed in a breaking way.
Before you could specify a single value that would be used as the max height
of a notification. In this release the dynamic height was implemented to make
this settings behave more similarly to width
.
Now the values accepted are either a single number (for a fixed height) or
a tuple of numbers (for a min/max range).
The way of specifying a maximum height before was: height = 300
The equivalent way now is: height = (0, 300)
Furthermore the preferred syntax for the offset
settings has been changed
from NxN to (N,N). The old syntax is supported nevertheless.
If you are a maintainer it would be helpful to include the message above when an user updates from an older version of dunst.
Take a look at the changelog for all the bug fixes and improvements.
This release hopefully marks the start of a new period of active development and contributions and a shift away from the previous lower maintenance mode.
For users:
This is the perfect time to engage with the project and other dunst users. Some of the features and changes to include in the v2 release are starting to be proposed or implemented. Everyone’s opinion is important, so feel free to participate in the issues proposing new features (or redesigns of the old ones).
This version mainly contains bug fixes and QoL improvements, and can be considered a preparatory release for the various things that will come in the future (overhaul of the rule syntax, multiple windows support, aesthetic and customization options, refactor of the drawing system, etc).
For maintainers:
X11 support is now optional and can be disabled in build by setting the X11
make
flag to 0. This means that you can offer Wayland-only builds.
Shell completions are now considered official and can be installed/uninstalled from
the Makefile. By default they are installed and can be disabled by setting the
COMPLETIONS
flag to 0.
Take a look at the changelog for all the bug fixes and improvements.
It’s been a while since the last release. That does not mean that the development has been stagnant. There are some long requested features have been implemented, like a do not disturb mode in the form of multiple pause levels. You can specify the priority of notification and selectively pause them. The progress bar rendering for low progress values has been fixed, with preparation work being done for more progress bar customization.
Since dunst gained Wayland support, Wayland received a lot of development. Dunst needed to do some catchup for that. A new Wayland idle protocol is implemented and support for Wayland touch screens and multi-seat has been added. It’s now also possible to specify displays by their port name, instead of number.
Take a look at the changelog for all the bug fixes and improvements.
This release fixes two issues with high cpu usage one of which was introduced when trying to fix another cpu usage issue. So if you have experienced dunst making your fans spin harder than usual that should be fixed with this release.
For users:
If you like rounded corners, this release is for you. You can now add rounded corners to your progress bar and notification icons. Dunstctl added more options for changing the notification history, so I’m excited for what you can build with that. Dunst also is even more stable now with a crash being fixed and not using 100% of your cpu anymore in some situations.
For maintainers:
Libnotify and dunst are now optional to build by setting the DUNSTIFY
make
flag to 0. (enabled by default)
Take a look at the changelog for a more detailed change description.
This release marks the point for a few big features to be useable. The recursive icon lookup is marked stable and is used by default for new users. It is now also possible to add gaps between notifications, although it is not done with separate windows, so clicks in between notification will not register to the below window. You’ll also need a compositor for the transparancy to take effect.
Take a look at the changelog for a more detailed change description.
Lots of exciting and useful features are being added to dunst, all while making dunst even more configurable and reliable.
For users:
This release re-adds the keyboard shortcuts for those who have been missing them. Also, support for drop-in files has been implemented. Files placed in dunstrc.d/*.conf will be read after the main dunstrc. This may be useful for theming (with pywal or otherwise). In the future we will add example drop-in files for different default themes and special configuration.
For maintainers:
Not much has been changed for maintainers. Maybe you’ll find the drop-in files useful for distro-specific fixes. Note that only the files in the directory of the used dunstrc will be read (see dunst(1) for documentation).
This release was long overdue. There have been a lot of changes in the mean time. For a full list of changes, see the changelog.
For users:
The wayland support of v1.6.0 was already pretty good, but this release added fullscreen detection and improved the stability.
This release added a few improvements to the wayland support. Dunst now automatically falls back to X11 when the wayland compositor doesn’t support the neccesary protocols.
For maintainers:
Previously the readme said dunst depended on GTK3, which hasn’t been the case for a while. Make sure that GTK3 is not included as a dependency.
The default program for opening URL’s in notifications has been changed from firefox to xdg-open.
The Makefile and dunstrc searching has been significantly changed to be more
compliant with the XDG spec. The default config directory, SYSCONFDIR
, has
been changed from “/etc” to “${PREFIX}/etc/xdg/”. To change back to the old
behaviour, run make with: make SYSCONFDIR="/etc"
(make sure to pass the same
variables to make in subsequent calls). Take a look at the “Make parameters”
section of the readme and the FILES section of the man page for more details.
For users:
At long last, dunst has native wayland support. On startup dunst will now
autodetect the display environment it’s run on and use the appropriate backend
(X11 or wayland).
Additionally, support for progress bars has been added when the ‘value’ hint is
used. Try it out with notify-send -h int:value:70 'Progress bars!'
Last but most importantly, support for the
DUNST_COMMAND_{PAUSE,RESUME,TOGGLE}
has been removed as they could
potentially be used to DoS dunst. dunstctl
has been available as a direct
replacement for the use-case they served since last release. See
https://github.com/dunst-project/dunst/pull/830 for details
For maintainers:
Dunst now depends on the wayland libraries and (optionally) on the
wayland-protocols package. A global configuration file is now installed by
default in /etc/dunst/dunstrc
For users:
The most important update from the previous version is the addition of the dunstctl command and dunstify utility, a drop-in notify-send replacement (which existed for a while, but wasn’t installed by default). The internal keyboard shortcut support in dunst is now considered deprecated and should be replaced by dunstctl calls. You can use the configuration of your WM or DE to bind these to shortcuts of your choice.
Additionally, another long requested feature implemented is RGBA/transparency support. Given an active compositor you can now add an optional transparency component to all colors in #RRGGBBAA format.
For maintainers:
As mentioned above, two new binaries are now installed by default, dunstctl and dunstify. libnotify has been added as a dependency as it’s used internally by dunstify.
There has been significant internal refactoring since the last release which might have introduced some new bugs. Be sure to report anything you find. However, as usual, there has been a lot of bug-fixing and a lot of new features have been added as well. Look at the full changelog for a breakdown. Some important points to note:
For users:
Behavioural changes
In the previous release we introduced support for clients to mark notifications as ’transient’. Transient notifications used to 1) bypass idle_threshold and 2) not be saved in history. The latter behaviour has been disabled by default and can be re-created using rules if necessary. Transient notifications will now only bypass idle_threshold.
Additionally, to be compliant with the notification spec, the notification summary no longer accepts markup.
For maintainers:
Version 1.3 is supposed to be fully backwards compatible with 1.2.
For users:
Behavioural changes
Dunst respects the timeout with millisecond accuracy now. Notifications with a one second timeout are not shown up to three seconds. Additionally you can specify timeout values in milliseconds, seconds, minutes, hours or days using the ms, s, h, or d suffix in the config value respectively.
Transient notifications time out ignoring the idle_threshold
setting and are not
saved in history. This can be overridden with a rule containing set_transient = no
.
In the same vein there is the match_transient
condition to match transient
notifications via rules.
A prefixed tilde (~/
) in path settings (browser, dmenu, script) is interpreted as the
home folder of the user.
Configuration Options
icon_folders
got deprecated and renamed to icon_path
. icon_folders
is still
supported, but will get removed in future.
The option ellipsize
got introduced. It controls where to ellipsize the text of
an overlong notification if word_wrap = no
.
For maintainers:
Dependencies
The GTK3+ dependency got removed. Instead of this gdk-pixbuf is required explicitly. This had been a transient dependency before.
In the Makefile, libxrandr is now specified to require version 1.5 or newer. The dependency on libxrandr >= 1.5 is not new, Dunst 1.2.0 required it too but there was no active check for it.
Installation process
The internals of dunst’s make installation process have slightly changed. The
install routine won’t install the service files for DBus and systemd in a hardcoded
subdirectory of $PREFIX. It’ll now query the dbus-1
and systemd
pkg-config
packages for those paths and will put it there.
To overwrite the pkg-config values, you can manually specify another path.
Use SERVICEDIR_(DBUS|SYSTEMD)
vars as parameters to your make calls.
For all introduced variables, see [the README.md].
Portability
GNU-specific functions have been disabled to make dunst portable to nongnu libc’s.
For a full list of changes see [CHANGELOG.md].
After about 3 years of inactivity, dunst is back under active development.
Version 1.2 is supposed to be fully backwards compatible with 1.1 but due to the number of changes and the time since the last release there may be some overlooked breakages. If one is found it should be reported to the bug tracker.
For users:
Markup
The allow_markup
setting has been deprecated in favour of markup
which
is a multi-value setting that can be used to control much more accurately
how markup in notifications should be handled. Currently it only supports
no
, strip
and full
as values but it is planned to be expanded soon.
To preserve backwards compatibility, allow_markup
is still supported but
users are encouraged to update their configuration files since it will be
removed after a few major releases.
DPI handling
The DPI value used is now retrieved from the Xft.dpi
X resource if
available. If not, the default value 96 will be used.
Additionally, as an experiment a per-monitor dpi setting, which tries to calculate an acceptable dpi values for each monitor, has been added to the experimental section of the configuration file.
RandR and Xinerama
Dunst switched from using the Xinerama extension to provide multi-monitor
support to using the more modern RandR extension. While this change won’t
affect the majority of users, some legacy drivers do not support RandR. In
that case, the force_xinerama
option was added as a way to fall back to
the old method.
The downside of forcing Xinerama to be used is that dunst won’t be able to detect when a monitor is added or removed meaning that follow mode might break if the screen layout changes.
Frame settings
All the settings in the frame section of the configuration file have been
deprecated and have been moved into the global section. The color
and size
settings became frame_color
and frame_size
respectively. As with
allow_markup
, the old format still works but it’ll be removed in one of the
next major releases.
Deprecation of urgency-specific command line flags
The urgency specific command line flags (-li, -ni, -ci, -lf, -nf, -cf, -lb, -nb, -cb, -lfr, -nfr, -cfr, -lto, -nto, -cto
) have been deprecated with no
plan for a replacement. If you rely on them please respond to issue #328 on
the bug tracker with your use case.
For maintainers:
The project homepage has been changed to https://dunst-project.org
The main repository has been changed to https://github.com/dunst-project/dunst
Dependency changes:
For a full list of changes see CHANGELOG.md.
PACKAGE MAINTAINERS: There are new dependencies introduced with this version: *glib *pango/cairo
The drawing backend was moved from Xlib to Cairo/Pango. This change requires some user intervention since Pango uses different font strings. For example “Monospace-12” becomes “Monospace 12”. Font sizes might also get interpreted differently.
Markup Markup within the notification can be interpreted by pango. Examples are italic and bold. If the Markup can’t be parsed by pango, the tags are stripped from the notification and the text is displayed as plain text. An error message gets printed to stdout describing why the markup could not be parsed.
To make use of markup the option allow_markup must be set in dunstrc. If this option is not set, dunst falls back to the old behaviour (stripping all tags from the text and display plain text).
Actions are now supported. If a client adds an action to a notification this gets indicated by an (A) infront of the notification. In this case the context menu shortcut can be used to invoke this action.
Indicator for URLs. If dunst detects an URL within the notification this gets indicated by an (U) infront of the notification. As with actions the URL can be opened with the context menu shortcut. (This requires the browser option to be set in the dunstrc).
dunstify ( a drop-in replacement for notify-send) Since notify-send lacks some features I need to for testing, I’ve written dunstify. It supports the same option as notify-send + The abillity to print the id of the notification to stdout and to replace or close existing notifications.
example: id=$(dunstify -p “Replace” “this should get replaced after the sleep”) sleep 5 dunstify -r $id “replacement”
see dunstify –help for additional info.
Since dunstify depends on non-public parts of libnotify it may break on every other libnotify version than that version that I use. Because of this it does not get build and installed by default. It can be build with “make dunstify”. An installation target does not exist.
Please don’t open bug reports when dunstify doesn’t work with your version of libnotify
Since dunst has lost its ability to show notifications independend of dbus/libnotify a long time ago I think it is time that the describtion reflects that. Even though this breaks the acronym. So if you’re a packager please update the package description to read something like:
short: “Dunst - a dmenu-ish notification-daemon”
long: “Dunst is a highly configurable and lightweight notification-daemon”
Release Tarballs are now available at: http://www.knopwob.org/public/dunst-release/
For more information have a look at the CHANGELOG and the new options in dunstrc.