# Dunst changelog

## 1.12.1 -- 2024-12-17

### Changed
- Improve man pages and add `dunstify(1)`
- Accept old `height` syntax again (with notice) (#1412)
- Add `history-clear` and `history-rm` zsh completions (#1418)

### Fixed
- Memory corruption when reloading (#1413)
- Fix height calculation regression (#1411)
- Handle correctly file uri icons (#1409)
- Fix typos in docs (#1415)

## 1.12.0 -- 2024-11-30

### Added
- Export rules via dbus with `dunstctl rules [--json]` (#1212)
- Added checks and messages for missing DBUS\_SESSION\_BUS\_ADDRESS (#1389)
- Add `-e/--exit` flag to `dunstctl is-paused` to exit with 1 when paused (#1378)
- Add color gradients for the progress bar (by providing a list of colors instead of one) (#1370)
- Use TESTDIR env var as the base for the test program (#1376)
- Add `dunstctl reload` to hot reload the configuration (#1350)
- Add an optional id to `dunstctl close` (#1351)
- Print compile-time options in `dunst --version` (#1336)

### Changed
- BREAKING: Implement dynamic height (changes the the `height` setting, see manual) (#1342)
- Change the preferred syntax of `offset` from `NxN` to `(N,N)` (#1330)
- Install the systemd service file in the session.slice (#1397)
- Open url with `dunstctl action` if no action is present (#1345,#1395)
- Remove default icons (now no icons are hard-coded) (#1365,#1358)
- Various updates to documentation and test suite

### Fixed
- Order of context menu was reversed (#1394,#1375)
- Resolve ~ and $HOME in `icon_path` (#1383,#1371)
- Fix broken link to freedesktop's notification specs in man page (#1381)
- Remove the message about shortcuts deprecation (#1353)
- Fix vertical padding behaviour (#1342)
- Fix bash completion (#1347)
- Fix file suffix for fish completions during installation (#1339)

## 1.11.0 -- 2024-04-15

### Added
- Add `corners`, `progress_bar_corners` and `icon_corners` options to control which corners to round (#1268)
- Support GTK/CSS cursor names on Wayland (#1276)
- Make dunst more portable (#1288)
- Print detected monitors names (X11) (#1332)

### Changed
- Make X11 optional in build (this allows wayland-only dunst) (#1290)
- Shell completions are now official and can be installed from the Makefile (#1262, #1263)
- Don't search for icon path if icons are disabled (#1301)
- Eagerly parse and cache colors (#1306)
- Update dunstctl manpage (#1298)
- Update documentation (#1315, #1334)

### Fixed
- Fix settings initialization (this prevented --print and --startup\_notification from working) (#1299)
- Rework timer logic and fix error about Glib source ID for good (#1308, #1196)
- Prevent memory corruption in XrmSetDatabase (#1256, #1291)
- Don't try to print NULL strings (#1323)
- Do not resolve icon paths twice (#1307, #1314)
- Don't crash the test suite if librsvg is not present (#1329)
- Fix memory leak in DBus RuleEnable (#1328)
- Fix dunstctl rule (#1281)
- Remove newlines from icon logging (#1296)
- Prevent make from failing if git tags are not found (#1287)
- Fix some typos (#1324, #1325, #1279)

## 1.10.0 -- 2024-02-19

### Added
- Unofficial fish and bash completions (#1205, 1209)
- Multiple pause levels to allow selective pausing of notifications (#1193)
- `--startup_notification` option as an alternative to `-startup_notification` (#1208)
- Expand variables, like `$HOME` in path in your dunstrc. See `man 3 wordexp` for the details (#1215)
- Support for stable output names for the `monitor` (eDP-1, HDMI-1, etc). This is more relyable than the order of monitors. (#1250)
- Wayland multiseat and touchscreen support (#1250)

### Changed
- The cursor is now being drawn by the compositor, making sure the right cursor theme and scaling is being used (#1250)

### Fixed
- Various documentation issues
- Icon path not being interpreted as a path (#1210)
- Handling of some commandline options (#1208)
- Improved handling of fallback fonts (#1222)
- Progress bar not rendering correctly for big corner radiusses compared to width (#1227)
- Whitespace and brackets in dunstctl usage output (#1230, #1233)
- Errors about Glib source ID spamming the log (#1257)
- Idle idle_threshold not working anymore in Wayland due to Wayland protocol changes (#1250)

## 1.9.2 -- 2023-04-20

### Fixed
- Various documentation issues (#1151, #1154, #1162)
- High cpu usage when `show_age_treshold = -1` (#1164)
- High cpu usage in some situation. This is often correlated with being idle. (#1158)

## 1.9.1 -- 2023-03-08

### Added
- zsh completion for dunst and dunstctl (#1107 and #1108)
- dunstctl `history-clear` command to delete all notifications from history (#1131)
- dunstctl `history-rm command` to remove a single notification from history (#1128)
- `progress_bar_corner_radius` option for adding rounded corners to the progress bar (off by default) (#1119)
- `icon_corner_radius` option for adding rounded corners to notification icons (#1139)

### Changed
- Make libnotify and dunstify optional in build (#1129)

### Fixed
- Man page typo's and readability (#1088 and #1121)
- Length changes not being emitted over D-Bus (#1127)
- Crash when locking screen with swaylock on Sway (#1148)
- Dunst using 100% in some configurations with `idle_threshold` turned on (#1140)

## 1.9.0 -- 2022-06-27

### Added
- `override_dbus_timeout` setting to override the notification timeout set via
  dbus. (#1035)
- Support notification gaps via the `gap_size` setting. Note that since the
  notifications are not separate windows, you cannot click in between the
  notifications. (#1053)
- Make `min_icon_size` and `max_icon_size` a rule for even more flexibility
  (#1069)

### Changed
- The window offset is now scaled according to `scale` as well. This way
  notification stay visually in the same place on higher DPI screens. (#1039)
- For the recursive icon lookup, revert to using `min_icon_size` and
  `max_icon_size` instead of `icon_size`. `min_icon_size` is used as the size to
  look for in icon themes. This way of defining icon size is more flexible and
  compatible with the old icon lookup. The new icon lookup should now be
  superior for all use cases. (#1069)
- Recursive icon lookup is no longer experimental.
- Recursive icon lookup is enabled in the default dunstrc. This does not change
  your settings when you have a custom dunstrc.

### Fixed
- Added back the `action_name` setting that was accidentally dropped. (#1051)
- Broken `dunstctl history`. (#1060)
- Merged a few wayland fixes from mako (https://github.com/emersion/mako)
  (#1067)
- `follow=keyboard`: Fix regression where we don't fall back to mouse (#1062)
- Raw icons not being scaled according to icon size (#1043)
- Notifications not disappearing. For some people notifications would sometimes
  stay on screen until a new notification appeared. This should not happen
  anymore (#1073).

## 1.8.1 -- 2022-03-02

### Fixed
- Dunst sometimes not using the right config file, sometimes falling back to the
  internal defaults.

## 1.8.0 -- 2022-02-24

### Added
- Implemented `progress_bar_min_width`. Before it was an unused setting. (#1006)
- `progress_bar_horizontal_alignment` for changing the alignment of the progress
  bar. (#1021)
- Support for config drop-ins. You can add as many configuration files as you
  want in `dunstrc.d`. See the man page dunst(1) for more information. This was
  done with help from @WhitePeter. (#997)
- Thanks to @m-barlett you can place your icons at the center of your
  notifications with `icon_position = top`.
- `icon_position` is now a rule (also by @m-barlett).
- `hide_text` for hiding all text of a notification. This also removes all
  padding that would be present for a notification without text. (also by
  @m-barlett) (#985)
- The previously removed keyboard shortcuts have been added again, but now they
  are in the `[global]` section of the config. Not everything that was possible
  with the keyboard shortcuts was possible with dunstctl on X11. Mainly
  activating a keyboard shortcut only when notifications are on screen. Thanks
  to @wgmayer0 for testing. (#1033).

### Changed
- Improved the man page regarding transitioning from the old geometry.
- The default alignment of the progress bar is now center instead of left.
- Better regex matching for rules. When you set `enable_posix_regex`. Take a
  look at
  https://en.m.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions
  for how the new regex syntax works. Note that you cannot do inverse matching
  yet, I'm working on that in #1040. (#1017)
- Thanks to @kurogetsusai you can once again use negative offsets to put a
  notification window slightly off-screen if you so like. (#1027)
- As mentioned above, the keyboard shortcuts have been moved to the `[global]`
  section. Please move your settings there.


### Fixed
- Crash when `open_url` was used without URL's. (#1000)
- Icons sometimes being incorrectly sized with the new icon lookup. (#1003)
- Incorrect defaults mentioned in the documentation. (#1004, #1029 and more)
- Crash when icon could not be read by glib. (#1023)
- Not being able to override anymore raw icons with `new_icon` (#1009)
- High cpu usage when selecting an action in dmenu or similar. This was caused
  by dunst not going to sleep when waiting for a response. (#898)
- Updated default values documentation (with help from @profpatch) (#1004 and more)

## 1.7.3 -- 2021-12-08

### Changed
- `follow` is now `none` again by default. This was the case before v1.7.0 as well. (#990).

### Fixed
- `dunstctl action` is now working again.
- Segfault in experimental icon lookup when an inherited theme doesn't exist.
- `icon_position = off` not being respected (#996).

## 1.7.2 -- 2021-11-30

### Added
- Experimental recursive icon lookup. This is not enabled by default and can be
  enabled by setting `enable_recursive_icon_lookup=true`. Setting icon sizes
  still doesn't work entirely as it's supposed to and will be improved in future
  releases. (#965)
- You can now enable or disable rules on the fly with `dunstctl rule $name$
  enable/disable`. (#981)
- `dunstctl history` lists your notification history in JSON format for
  processing by scripts. (#970)
- You can now pop specific notifications from history by passing a notification
  ID to `dunstctl history-pop`. (#970)
- `default_icon` setting for setting the icon when no icons are given (#984)
- Implemented display size detection in Wayland. (#973)

### Fixed
- Text being cut off on X11 when using fractional scaling. (#975)
- Incorrect hitbox for notification on X11 with scaling. (#980)
- Improved warning messages for deprecated sections. (#974)
- `icon` being interpreted as a filter and not being allowed in the special
  urgency sections. This is a compatibility fix, but it's recommended to replace
  all usages of `icon` in these sections with `default_icon` to prevent
  confusion with the `icon` rule in other sections. (#984)
- `new_icon` being used in the default dunstrc where `default_icon` is the
  intended settings. This was commented by default, so it doesn't affect any
  default behaviour. (#984)
- Notifications bleeding to other screens when the width was big enough. Now the
  notification's width is lowered when it would otherwise leave the display.


## 1.7.1 -- 2021-11-01

### Added
- Script environment variable `DUNST_DESKTOP_ENTRY`. (#874)
- Rule `set_category` for change a notifications category with rules. (1b72b2a)

### Fixed
- Dunst not building with WAYLAND=0. (#938)
- Wrong icon being shown in chromium-based browsers. (#939)
- `set_stack_tag` not working anymore. (#942)
- Outdated documentation. (#943, #944 and more)
- Empty strings not being allowed in settings. (#946)
- Dunst crashing when compositor doesn't support `zwlr_foreign_toplevel_v1`. (#948)
- Xmore notifications showing a progress bar and icon. (#915)
- Markup is now a rule again. Before this was undocumented behaviour. (#955)
- Double free when setting `XDG_CONFIG_DIR`. (#957)
- Dunst crashing on some compositors. (#948)
- Dunst not exiting when wayland compositor quits. (#961)
- Now the separators are not responsive to mouse clicks anymore. (#960)
- Mouse action stopping the rest of the actions. (bf58928)

## 1.7.0 -- 2021-10-19:

### Added
- `context` and `context_all` mouse actions for opening the context menu (#848)
- `open_url` mouse action for opening url's in a notification (#848)
- `action_name` rule for setting a default action to perform when using
  `do_action` (#848)
- HiDPI support for both Wayland and X11. On wayland the scale can be set from
  your compositor's settings and is automatically picked up by dunst. On X11
  dunst will guess the scale based on the DPI of the screen. If that isn't good,
  you can set the `scale` variable in the settings. (#854 and #890)
- `highlight` can now also be set through dbus hints with the key `hlcolor`
  (#862)
- Your dunstrc is now being checked by dunst. Dunst will print a warning when
  coming across an non-existing/invalid setting. (#803)
- Wayland fullscreen detection (#814)
- Wayland touch support (#814)
- Cursor is now being changed to `left_ptr` when hovering over dunst (Wayland)
  (#903)

### Changed
- `startup_notification` and `verbosity` are now only available as a command
  line arguments. (#803)
- Rule settings can now also be used in the `[global]` section. They will then
  apply to all the notifications. (#803)
- `fullscreen`, `ellpsize` and `word_wrap` are now rules. They can still be used
  in the `[global]` section as well (see above). (#937 and #803)
- The appid's now also need to match when stacking notifications. (#886)
- `xdg-open` is now being used by default for opening URL's. (#889)
- `geometry` and `notification_height` have been replaced by `origin`, `width`,
  `height`, `offset` and `notification_limit`. This allows for more flexible
  geometry settings. (#855)
- There were a bunch of changes in the installation and default locations. See
  the release notes for more information.
- Upon seeing invalid markup, dunst is a bit smarter in stripping the markup.

### Fixed
- Lots of debug messages when `idle_timeout=0` (#814)
- `follow=none` not working on Wayland (#814)
- Incorrect sorting when `sort` is false
- NULL pointer dereference on Wayland
- Dunst not redrawing after `close_all` action.
- Dunst not announcing icon-static capability over dbus (#867)
- Dunst not falling back to X11 output when it can't initialize the Wayland
  output. (#834)
- Improve stability on Wayland. (#930 and more)

### Removed
- The `[shortcuts]` section with all it's settings. Use your WM/DE's shortcut
  manager and `dunstctl` to replace it. (#803)
- Setting settings via command line arguments. (#803)
- Setting settings via `config.h`. (#803)

## 1.6.1 -- 2021-02-21:

### Fixed
- Incorrect version in Makefile

## 1.6.0 -- 2021-02-21:

### Added
- Wayland support. Dunst now runs natively on wayland. This fixes several bugs
  with dunst on wayland and allows idle detection. (#781)
- A progress bar, useful for showing volume or brightness in notifications (#775)
- A script in contrib for using the progress bar (#791)
- `dunstctl count` for showing the number of notifications (#793)
- Expose environment variables info about the notification to scripts (#802)
- `text_icon_padding` for adding padding between the notification icon and text
  (#810)

### Changed
- Dunst now installs a system-wide config in `/etc/dunst/dunstrc` (#798)
- Move part of the man page to dunst(5) (#799)

### Fixed
- `history_ignore` flag broken when using multiple rules (#747)
- Divide by zero in radius calculation (#750)
- Monitor setting overriding `follow_mode` (#755)
- Incorrect monitor usage when using multiple X11 screens (#762)
- Emit signal when `paused` property changes (#766)
- `dunstify` can pass empty appname to libnotify (#768)
- Incorrect handling of 'do_action, close' mouse action (#778)

### Removed

- `DUNST_COMMAND_{PAUSE,RESUME,TOGGLE}` (#830)

## 1.5.0 -- 2020-07-23

### Added
- `min_icon_size` option to automatically scale up icons to a desired value (#674)
- `vertical_alignment` option to control the text/icon alignment within the notification (#684)
- Ability to configure multiple actions for each mouse event (#705)
- `dunstctl` command line control client (#651)
- RGBA support for all color strings (#717)
- Ability to run multiple scripts for each notification
- `ignore_dbusclose` setting (#732)

### Changed
- `dunstify` notification client is now installed by default (#701)
- Keyboard follow mode falls back to the monitor with the mouse if no window has keyboard focus (#708)

### Fixed
- Overflow when setting a >=40 minute timeout (#646)
- Unset configuration options not falling back to default values (#649)
- Crash when `$HOME` environment variable is unset (#693)
- Lack of antialiasing with round corners enabled (#713)

## 1.4.1 -- 2019-07-03

### Fixed

- `max_icon_size` not working with dynamic width (#614)
- Failure to parse color strings with trailing comments in the config (#626)
- Negative width in geometry being ignored (#628)
- Incorrect handling of the argument terminator `--` in dunstify
- Crash when changing DPI while no notifications are displayed (#630)
- Fullscreen status change not being detected in some cases (#613)

## 1.4.0 -- 2019-03-30

### Added

- Add support to override `frame_color` via rules (#498)
- Support for round corners (#420)
- Ability to reference `$HOME` in icon paths with `~/` (#520)
- Support to customize the mouse bindings (#530)
- Command to toggle pause status (#535)
- Ability to automatically replace similar notifications (like volume changes)
  via `stack_tag` (#552)
- Comparison of raw icons for duplicate notifications (#571)
- Introduce new desktop-entry filter (#470)
- `fullscreen` rule to hide notifications when a fullscreen window is active (#472)
- Added `skip_display` rule option to skip initial notification display, and
  include the notification in the history. (#590)

### Fixed

- Notification age not counting the time while the computer was suspended (#492)
- Dunst losing always-on-top status on a window manager restart (#160)
- Xpm icons not being recognized
- When new notifications arrive, but display is full, important notifications don't
  have to wait for a timeout in a displayed notification (#541)
- Dunst hanging while the context menu is open (#456)
- Having & inside a notification breaking markup (#546)
- `<I> more` notifications don't occupy space anymore, if there is only a single
  notification waiting to get displayed. The notification gets displayed directly (#467)
- Segfault when comparing icon name with a notification with a raw icon (#536)
- Icon size can no longer be larger than the notification when a fixed width is specified (#540)

### Changed

- Transient notifications no longer skip history by default (#508)
- The notification summary no longer accepts markup (#497)

### Removed

- Dependency on libxdg-basedir (#550)

## 1.3.2 -- 2018-05-06

### Fixed

- Crash when trying to load an invalid or corrupt icon (#512)

## 1.3.1 -- 2018-01-30

### Fixed

- Race condition resulting in the service files being empty (#488)

## 1.3.0 -- 2018-01-05

### Added
- `ellipsize` option to control how long lines should be ellipsized when `word_wrap` is set to `false` (#374)
- A beginning tilde of a path is now expanded to the home of the current user (#351)
- The image-path hint is now respected, as GApplications send their icon only via this link (#447)
- The (legacy) image\_data hint is now respected (#353)
- If dunst can't acquire the DBus name, dunst prints the PID of the process holding the name (#458 #460)
- Increased accuracy of timeouts by using microseconds internally (#379 #291)
- Support for specifying timeout values in milliseconds, minutes, hours, or days. (#379)
- Support for HTML img tags (via context menu) (#428)

### Fixed
- `new_icon` rule being ignored on notifications that had a raw icon (#423)
- Format strings being replaced recursively in some cases (#322 #365)
- DBus related memory leaks (#397)
- Crash on X11 servers with RandR support less than 1.5. (#413 #364)
- Silently reading the default config file, if `-conf` did not specify a valid file (#452)
- Notification window flickering when a notification is replaced (#320 #415)
- Inaccurate timeout in some cases (#291 #379)

### Changed
- Transient hints are now handled (#343 #310)
  An additional rule option (`match_transient` and `set_transient`) is added
  to optionally reset the transient setting
- HTML links are now referred to by their text in the context menu rather than numbers (#428)
- `icon_folders` setting renamed to `icon_path` (#170)
- `config.def.h` and `config.h` got merged (#371)
- The dependency on GTK3+ has been removed. Instead of GTK3+, dunst now
  requires gdk-pixbuf which had been a transient dependency before. (#334
  #376)
- The `_GNU_SOURCE` macros had been removed to make dunst portable to nonGNU systems (#403)
- Internal refactorings of the notification queue handling. (#411)
- Dunst does now install the systemd and dbus service files into their proper location given
  by pkg-config. Use `SERVICEDIR_(DBUS|SYSTEMD)` params to overwrite them. (#463)

## 1.2.0 -- 2017-07-12

### Added
- `always_run_script` option to run script even if a notification is suppressed
- Support for more icon file types
- Support for raw icons
- `hide_duplicate_count` option to hide the number of duplicate notifications
- Support for per-urgency frame colours
- `markup` setting for more fine-grained control over how markup is handled
- `history_ignore` rule action to exclude a notification from being added to the history
- Support for setting the dpi value dunst will use for font rendering via the `Xft.dpi` X resource
- Experimental support for per-monitor dpi calculation
- `max_icon_size` option to scale down icons if they exceed a certain size
- Middle click on notifications can be used to trigger actions
- Systemd service file, installed by default
- `%n` format flag for getting progress value without any extra characters

### Changed
- Text and icons are now centred vertically
- Notifications aren't considered duplicate if urgency or icons differ
- The maximum length of a notification is limited to 5000 characters
- The frame width and color settings were moved to the global section as `frame_width` and `frame_color` respectively
- Dropped Xinerama in favour of RandR, Xinerama can be enabled with the `-force_xinerama` option if needed

### Deprecated
- `allow_markup` is deprecated with `markup` as its replacement
- The urgency specific command line flags have been deprecated with no replacement, respond to issue #328 on the bug tracker if you depend on them

### Fixed
- Infinite loop if there are 2 configuration file sections with the same name
- URLs with dashes and underscores in them are now parsed properly
- Many memory leaks
- Category based rules were applied without actually matching
- dmenu command not parsing quoted arguments correctly
- Icon alignment with dynamic width
- Issue when loading configuration files with very long lines
- '\n' is no longer expanded to a newline inside notification text
- Notification window wasn't redrawn if obscured on systems without a compositor
- `ignore_newline` now works regardless of the markup setting
- dmenu process being left as a zombie if no option was selected
- Crash when opening urls parsed from `<a href="">` tags

## 1.1.0 -- 2014-07-29
- fix nasty memory leak
- icon support (still work in progress)
- fix issue where keybindings aren't working when numlock is activated

## 1.0.0 -- 2013-04-15
- use pango/cairo as drawing backend
- make use of pangos ability to parse markup
- support for actions via context menu
- indicator for actions/urls found
- use blocking I/O. No more waking up the CPU multiple times per second to check for new dbus messages

## 0.5.0 -- 2013-01-26
- new default dunstrc
- frames for window
- trigger scripts on matching notifications
- context menu for urls (using dmenu)
- pause and resume function
- use own code for ini parsing (this removes inih)
- progress hints

## 0.4.0 -- 2012-09-27
- separator between notifications
- word wrap long lines
- real transparance
- bouncing text (alternative to word_wrap)
- new option for line height
- better multihead support
- don't die when keybindings can't be grabbed
- bugfix: forgetting geometry
- (optional) static configuration

## 0.3.1 -- 2012-08-02
- fix -mon option

## 0.3.0 -- 2012-07-30
- full support for Desktop Notification Specification (mandatory parts)
- option to select monitor on which notifications are shown
- follow focus
- oneline mode
- text alignment
- show age of notifications
- sticky history
- filter duplicate messages
- keybinding to close all notifications
- new way to specify keybindings
- cleanup / bugfixes etc.
- added dunst.service

## 0.2.0 -- 2012-06-26
- introduction of dunstrc
- removed static configuration via config.h
- don't timeout when user is idle
- xft-support
- history (a.k.a. redisplay old notifications)
