===================================================================================
Release Notes For v1.12.2
===================================================================================

This is the first release of 2025 and comes with an important fix to
dunstify. With the roll out of libnotify v0.8.4, older version of dunstify
started to not compile or crash when using the -r flag.

If your distribution has updated libnotify, you should update dunstify as soon
as possible to resolve these issues.

Other changes include the addition of three dbus signals, the --category
option for dunstify, the use of SOURCE_DATE_EPOCH for reproducible builds.

For more details take a look at the changelog for all the fixes and improvements.

===================================================================================
Release Notes For v1.12.0
===================================================================================

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.

===================================================================================
Release Notes For v1.11.0
===================================================================================

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.

===================================================================================
Release Notes For v1.10.0
===================================================================================

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.

===================================================================================
Release Notes For v1.9.2
===================================================================================

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.

===================================================================================
Release Notes For v1.9.1
===================================================================================

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.

===================================================================================
Release Notes For v1.9.0
===================================================================================

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.

===================================================================================
Release Notes For v1.8.0
===================================================================================

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).


===================================================================================
Release Notes For v1.7.0
===================================================================================

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.

===================================================================================
Release Notes For v1.6.0
===================================================================================

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`


===================================================================================
Release Notes For v1.5.0
===================================================================================

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.

===================================================================================
Release Notes For v1.4.0
===================================================================================

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:

* Dependency on libxdg-basedir has been removed

===================================================================================
Release Notes For v1.3.0
===================================================================================

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].

===================================================================================
Release Notes For v1.2.0
===================================================================================

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:
 - Dependency on libraries that were unused in the code but were mentioned as
   dependencies has been dropped. Dunst no longer depends on: libfreetype,
   libxft and libxext.
 - Added dependency on libxradnr and libgtk2.0.

For a full list of changes see CHANGELOG.md.

===================================================================================
Release Notes For v1.0.0
===================================================================================

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 <i>italic</i> and <b>bold</b>. 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

===================================================================================
Release Notes For v0.4.0
===================================================================================

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.
