Dunst is a lightweight replacement for the notification-daemons provided by most desktop environments.
Install the package. There is no need to start or enable dunst; it is called by systemd when programs send notifications through dbus.
An example configuration file is included at
/usr/share/dunst/dunstrc. Copy this file to
~/.config/dunst/dunstrc and edit it accordingly.
Dunst allows for the use of html markup in notifications. Some examples are bold, italics, strikethrough and underline. For a complete reference see . HTML can be stripped from notifications if
markup is set to
The formatting of the notification can be specified. Options are as follows:
%a appname %s summary %b body %i iconname (including its path) %I iconname (without its path) %p progress value if set ([ 0%] to [100%]) or nothing
These can be used in conjunction with HTML markup. For example the
format can be set to
<b>%s</b>\n%b for a bolded notification summary, a newline and the body unformatted.
Icons are set in the option
icon_path. Status and devices icons are needed. By default, Dunst looks for the icons. For example, to use (gnome-icon-theme's successor), instead:
icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/
Idle thresholds can be set letting the notification stay onscreen if the user is idle longer than the threshold.
To close a notification before it times out use
Control + space. If multiple notifications are onscreen
Control + Shift + Space closes all of them.
A history list can be accessed by using
Control + grave. A context menu can be opened using
Control + Shift + period. The context menu uses dmenu to filter out URLs and open them in your browser. The default browser can be set in the config like so:
browser = /usr/bin/chromium
Dunst can be configured to run scripts based on certain notification content. Here is an example using Dunst to run a script when someone fromsigns on:
[signed_on] appname = Pidgin summary = "*signed on*" urgency = low script = do_something.sh
When using dunst without a Display Manager, the
DISPLAY environment variable might not be correctly set.
To fix this, add the following to your
systemctl --user import-environment DISPLAY