Dunst dotfiles anyone?

Hello all.
I’m looking for a nice dunstrc (I promise to use it carefully.) Does anyone have one they are proud of and are willing to share.

Just for giggles, perhaps you’d be willing to share a screen shot of your dunst as well for those discriminating buyers… :wink:

1 Like

Here is mine, absolutely nothing special. Colours are aligned with my theme and that is all really.

[global]
    ### Display ###

    # Which monitor should the notifications be displayed on.
    monitor = 1
    follow = none

    geometry = "597x50+100+50"

    indicate_hidden = yes

    # Shrink window if it's smaller than the width.  Will be ignored if
    # width is 0.
    shrink = no
    transparency = 0
    notification_height = 0

    # Set to 0 to disable.
    separator_height = 1

    # Padding between text and separator.
    padding = 15

    # Horizontal padding.
    horizontal_padding = 8

    # Set to 0 to disable.
    frame_width = 1

    # Defines color of the frame around the notification window.
    frame_color = "#252525"
    separator_color = frame

    # Sort messages by urgency.
    sort = yes

    idle_threshold = 5

    ### Text ###

    font = San Francisco Text 7


    # The spacing between lines.  If the height is smaller than the
    # font height, it will get raised to the font height.
    line_height = 0
    markup = full

    # The format of the message.  Possible variables are:
    #   %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
    #   %n  progress value if set without any extra characters
    #   %%  Literal %
    # Markup is allowed
    format = "<b>%s</b>\n%b"

    # Alignment of message text.
    # Possible values are "left", "center" and "right".
    alignment = left

    # Show age of message if message is older than show_age_threshold
    # seconds.
    # Set to -1 to disable.
    show_age_threshold = -1

    # Split notifications into multiple lines if they don't fit into
    # geometry.
    word_wrap = yes

    # When word_wrap is set to no, specify where to make an ellipsis in long lines.
    # Possible values are "start", "middle" and "end".
    ellipsize = middle

    # Ignore newlines '\n' in notifications.
    ignore_newline = no

    # Merge multiple notifications with the same content
    stack_duplicates = true

    # Hide the count of merged notifications with the same content
    hide_duplicate_count = false

    # Display indicators for URLs (U) and actions (A).
    show_indicators = yes

    ### Icons ###

    # Align icons left/right/off
    icon_position = right

    # Scale larger icons down to this size, set to 0 to disable
    max_icon_size = 150

    # Paths to default icons.
    icon_path = /usr/share/icons/ArchLabs-Light/16x16/status/:/usr/share/icons/ArchLabs-Dark/16x16/devices/

    ### History ###

    # Should a notification popped up from history be sticky or timeout
    # as if it would normally do.
    sticky_history = yes

    # Maximum amount of notifications kept in history
    history_length = 200

    ### Misc/Advanced ###

    # dmenu path.
    dmenu = /usr/bin/dmenu -p dunst:

    # Browser for opening urls in context menu.
    browser = /usr/bin/firefox -new-tab

    # Always run rule-defined scripts, even if the notification is suppressed
    always_run_script = true

    # Define the title of the windows spawned by dunst
    title = Dunst

    # Define the class of the windows spawned by dunst
    class = Dunst

    # Print a notification on startup.
    # This is mainly for error detection, since dbus (re-)starts dunst
    # automatically after a crash.
    startup_notification = false

    # Manage dunst's desire for talking
    # Can be one of the following values:
    #  crit: Critical features. Dunst aborts
    #  warn: Only non-fatal warnings
    #  mesg: Important Messages
    #  info: all unimportant stuff
    # debug: all less than unimportant stuff
    verbosity = mesg

    # Define the corner radius of the notification window
    # in pixel size. If the radius is 0, you have no rounded
    # corners.
    # The radius will be automatically lowered if it exceeds half of the
    # notification height to avoid clipping text and/or icons.
    corner_radius = 0

    ### Legacy

    # Use the Xinerama extension instead of RandR for multi-monitor support.
    # This setting is provided for compatibility with older nVidia drivers that
    # do not support RandR and using it on systems that support RandR is highly
    # discouraged.
    #
    # By enabling this setting dunst will not be able to detect when a monitor
    # is connected or disconnected which might break follow mode if the screen
    # layout changes.
    force_xinerama = false

    ### mouse

    # Defines action of mouse event
    # Possible values are:
    # * none: Don't do anything.
    # * do_action: If the notification has exactly one action, or one is marked as default,
    #              invoke it. If there are multiple and no default, open the context menu.
    # * close_current: Close current notification.
    # * close_all: Close all notifications.
    mouse_left_click = close_current
    mouse_middle_click = do_action
    mouse_right_click = close_all

# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
    # Calculate the dpi to use on a per-monitor basis.
    # If this setting is enabled the Xft.dpi value will be ignored and instead
    # dunst will attempt to calculate an appropriate dpi value for each monitor
    # using the resolution and physical size. This might be useful in setups
    # where there are multiple screens with very different dpi values.
    #per_monitor_dpi = 161

[shortcuts]

    # Shortcuts are specified as [modifier+][modifier+]...key
    # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
    # "mod3" and "mod4" (windows-key).
    # Xev might be helpful to find names for keys.

    # Close notification.
    close = ctrl+alt+space

    # Close all notifications.
    close_all = ctrl+shift+space

    # Redisplay last message(s).
    # On the US keyboard layout "grave" is normally above TAB and left
    # of "1". Make sure this key actually exists on your keyboard layout,
    # e.g. check output of 'xmodmap -pke'
    history = ctrl+grave

   # Context menu.
    context = ctrl+shift+period

[urgency_low]
    # IMPORTANT: colors have to be defined in quotation marks.
    # Otherwise the "#" and following would be interpreted as a comment.
    background = "#252525"
    foreground = "#c0c0c0"
    timeout = 10
    # Icon for notifications with low urgency, uncomment to enable
    #icon = /path/to/icon

[urgency_normal]
    background = "#252525"
    foreground = "#c0c0c0"
    timeout = 10
    # Icon for notifications with normal urgency, uncomment to enable
    #icon = /path/to/icon

[urgency_critical]
    background = "#252525"
    foreground = "#c0c0c0"
    frame_color = "#c0c0c07"
    timeout = 0
    # Icon for notifications with critical urgency, uncomment to enable
    #icon = /path/to/icon

# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "frame_color", "new_icon" and "format", "fullscreen".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
#   script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.

# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
#        If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
#           withdrawn from screen again and will get delayed like a new notification

#[fullscreen_delay_everything]
#    fullscreen = delay
#[fullscreen_show_critical]
#    msg_urgency = critical
#    fullscreen = show

#[espeak]
#    summary = "*"
#    script = dunst_espeak.sh

#[script-test]
#    summary = "*script*"
#    script = dunst_test.sh

#[ignore]
#    # This notification will not be displayed
#    summary = "foobar"
#    format = ""

#[history-ignore]
#    # This notification will not be saved in history
#    summary = "foobar"
#    history_ignore = yes

#[signed_on]
#    appname = Pidgin
#    summary = "*signed on*"
#    urgency = low
#
#[signed_off]
#    appname = Pidgin
#    summary = *signed off*
#    urgency = low
#
#[says]
#    appname = Pidgin
#    summary = *says*
#    urgency = critical
#
#[twitter]
#    appname = Pidgin
#    summary = *twitter.com*
#    urgency = normal
#
# vim: ft=cfg

Edit, thought I better add a image

pic-selected-200407-0743-21

This is Dunst showing what’s playing via a MPD script.

Extra Edit, tidied fonts.

1 Like

[global]
    ### Display ###

    # Which monitor should the notifications be displayed on.
    monitor = 0
    follow = none

    geometry = "512x48-36+36"

    indicate_hidden = yes

    # Shrink window if it's smaller than the width.  Will be ignored if
    # width is 0.
    shrink = yes
    transparency = 20
    notification_height = 0

    # Set to 0 to disable.
    separator_height = 1

    # Padding between text and separator.
    padding = 30

    # Horizontal padding.
    horizontal_padding = 8

    # Set to 0 to disable.
    frame_width = 1

    # Defines color of the frame around the notification window.
    frame_color = "#171717"
    separator_color = frame

    # Sort messages by urgency.
    sort = yes

    idle_threshold = 5

    ### Text ###

    font = Source Sans Pro 12


    # The spacing between lines.  If the height is smaller than the
    # font height, it will get raised to the font height.
    line_height = 0
    markup = full

    # The format of the message.  Possible variables are:
    #   %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
    #   %n  progress value if set without any extra characters
    #   %%  Literal %
    # Markup is allowed
    format = "<b>%s</b>\n%b"

    # Alignment of message text.
    # Possible values are "left", "center" and "right".
    alignment = left

    # Show age of message if message is older than show_age_threshold
    # seconds.
    # Set to -1 to disable.
    show_age_threshold = -1

    # Split notifications into multiple lines if they don't fit into
    # geometry.
    word_wrap = yes

    # When word_wrap is set to no, specify where to make an ellipsis in long lines.
    # Possible values are "start", "middle" and "end".
    ellipsize = middle

    # Ignore newlines '\n' in notifications.
    ignore_newline = no

    # Merge multiple notifications with the same content
    stack_duplicates = true

    # Hide the count of merged notifications with the same content
    hide_duplicate_count = false

    # Display indicators for URLs (U) and actions (A).
    show_indicators = yes

    ### Icons ###

    # Align icons left/right/off
    icon_position = right

    # Scale larger icons down to this size, set to 0 to disable
    max_icon_size = 150

    # Paths to default icons.
    icon_path = /usr/share/icons/ArchLabs-Light/16x16/status/:/usr/share/icons/ArchLabs-Light/16x16/devices/

    ### History ###

    # Should a notification popped up from history be sticky or timeout
    # as if it would normally do.
    sticky_history = yes

    # Maximum amount of notifications kept in history
    history_length = 200

    ### Misc/Advanced ###

    # dmenu path.
    dmenu = /usr/bin/dmenu -p dunst:

    # Browser for opening urls in context menu.
    browser = /usr/bin/firefox -new-tab

    # Always run rule-defined scripts, even if the notification is suppressed
    always_run_script = true

    # Define the title of the windows spawned by dunst
    title = Dunst

    # Define the class of the windows spawned by dunst
    class = Dunst

    # Print a notification on startup.
    # This is mainly for error detection, since dbus (re-)starts dunst
    # automatically after a crash.
    startup_notification = false

    # Manage dunst's desire for talking
    # Can be one of the following values:
    #  crit: Critical features. Dunst aborts
    #  warn: Only non-fatal warnings
    #  mesg: Important Messages
    #  info: all unimportant stuff
    # debug: all less than unimportant stuff
    verbosity = mesg

    # Define the corner radius of the notification window
    # in pixel size. If the radius is 0, you have no rounded
    # corners.
    # The radius will be automatically lowered if it exceeds half of the
    # notification height to avoid clipping text and/or icons.
    corner_radius = 6

    ### Legacy

    # Use the Xinerama extension instead of RandR for multi-monitor support.
    # This setting is provided for compatibility with older nVidia drivers that
    # do not support RandR and using it on systems that support RandR is highly
    # discouraged.
    #
    # By enabling this setting dunst will not be able to detect when a monitor
    # is connected or disconnected which might break follow mode if the screen
    # layout changes.
    force_xinerama = false

    ### mouse

    # Defines action of mouse event
    # Possible values are:
    # * none: Don't do anything.
    # * do_action: If the notification has exactly one action, or one is marked as default,
    #              invoke it. If there are multiple and no default, open the context menu.
    # * close_current: Close current notification.
    # * close_all: Close all notifications.
    mouse_left_click = close_current
    mouse_middle_click = do_action
    mouse_right_click = close_all

# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
# [experimental]
    # Calculate the dpi to use on a per-monitor basis.
    # If this setting is enabled the Xft.dpi value will be ignored and instead
    # dunst will attempt to calculate an appropriate dpi value for each monitor
    # using the resolution and physical size. This might be useful in setups
    # where there are multiple screens with very different dpi values.
    # per_monitor_dpi = 96

[shortcuts]

    # Shortcuts are specified as [modifier+][modifier+]...key
    # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
    # "mod3" and "mod4" (windows-key).
    # Xev might be helpful to find names for keys.

    # Close notification.
    close = ctrl+alt+space

    # Close all notifications.
    close_all = ctrl+shift+space

    # Redisplay last message(s).
    # On the US keyboard layout "grave" is normally above TAB and left
    # of "1". Make sure this key actually exists on your keyboard layout,
    # e.g. check output of 'xmodmap -pke'
    history = ctrl+grave

   # Context menu.
    context = ctrl+shift+period

[urgency_low]
    # IMPORTANT: colors have to be defined in quotation marks.
    # Otherwise the "#" and following would be interpreted as a comment.
    background = "#E7E7E7"
    foreground = "#0F0F0F"
    timeout = 10
    # Icon for notifications with low urgency, uncomment to enable
    #icon = /path/to/icon

[urgency_normal]
    background = "#E7E7E7"
    foreground = "#0F0F0F"
    timeout = 10
    # Icon for notifications with normal urgency, uncomment to enable
    #icon = /path/to/icon

[urgency_critical]
    background = "#E7E7E7"
    foreground = "#0F0F0F"
    frame_color = "#DB2828"
    timeout = 0
    # Icon for notifications with critical urgency, uncomment to enable
    #icon = /path/to/icon

# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "frame_color", "new_icon" and "format", "fullscreen".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
#   script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.

# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
#        If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
#           withdrawn from screen again and will get delayed like a new notification

#[fullscreen_delay_everything]
#    fullscreen = delay
#[fullscreen_show_critical]
#    msg_urgency = critical
#    fullscreen = show

#[espeak]
#    summary = "*"
#    script = dunst_espeak.sh

#[script-test]
#    summary = "*script*"
#    script = dunst_test.sh

#[ignore]
#    # This notification will not be displayed
#    summary = "foobar"
#    format = ""

#[history-ignore]
#    # This notification will not be saved in history
#    summary = "foobar"
#    history_ignore = yes

#[signed_on]
#    appname = Pidgin
#    summary = "*signed on*"
#    urgency = low
#
#[signed_off]
#    appname = Pidgin
#    summary = *signed off*
#    urgency = low
#
#[says]
#    appname = Pidgin
#    summary = *says*
#    urgency = critical
#
#[twitter]
#    appname = Pidgin
#    summary = *twitter.com*
#    urgency = normal
#
# vim: ft=cfg

Nothing special; simple edits to the default config.

Here’s what I’m currently running and what it looks like…

[global]
    # Screenshot: https://i.imgur.com/zlzLMgP.png
    # font = Monospace 10
    font = Ubuntu Mono 11
 
    # allow a small subset of html markup:
    # <b>bold</b>
    # <i>italic</i>
    # <s>strikethrough<s/>
    # <u>underline</u>
    #
    # for a complete reference see http://developer.gnome.org/pango/stable/PangoMarkupFormat.html
    # If markup is not allowed, those tags will be stripped out of the message.
    allow_markup = yes
 
    # The format of the message. Possible variables are:
    #   %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
    # Markup is allowed
    format = "<b>%a</b>\n %s\n%b"
 
    # Sort messages by urgency
    sort = yes
 
    # Show how many messages are currently hidden (because of geometry)
    indicate_hidden = yes
 
    # alignment of message text.
    # Possible values are "left", "center" and "right"
    alignment = center
 
    # The frequency with wich text that is longer than the notification
    # window allows bounces back and forth.
    # This option conflicts with 'word_wrap'.
    # Set to 0 to disable
    bounce_freq = 0
 
    # show age of message if message is older than show_age_threshold seconds.
    # set to -1 to disable
    show_age_threshold = 60
 
    # split notifications into multiple lines if they don't fit into geometry
    word_wrap = yes
 
    # ignore newlines '\n' in notifications
    ignore_newline = no
 
 
    # the geometry of the window
    # geometry [{width}]x{height}][+/-{x}+/-{y}]
    # The geometry of the message window.
    # The height is measured in number of notifications everything else in pixels. If the width
    # is omitted but the height is given ("-geometry x2"), the message window
    # expands over the whole screen (dmenu-like). If width is 0,
    # the window expands to the longest message displayed.
    # A positive x is measured from the left, a negative from the
    # right side of the screen.  Y is measured from the top and down respectevly.
    # The width can be negative. In this case the actual width is the
    # screen width minus the width defined in within the geometry option.
    geometry = "300x10-30+55"
 
    # The transparency of the window. range: [0; 100]
    # This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..)
    transparency = 20
 
    # Don't remove messages, if the user is idle (no mouse or keyboard input)
    # for longer than idle_threshold seconds.
    # Set to 0 to disable.
    idle_threshold = 120
 
    # Which monitor should the notifications be displayed on.
    monitor = 0
 
    # Display notification on focused monitor. Possible modes are:
    # mouse: follow mouse pointer
    # keyboard: follow window with keyboard focus
    # none: don't follow anything
    #
    # "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property.
    # This should be the case for almost all modern windowmanagers.
    #
    # If this option is set to mouse or keyboard, the monitor option will be
    # ignored.
    follow = keyboard
 
    # should a notification popped up from history be sticky or
    # timeout as if it would normally do.
    sticky_history = yes
 
    # The height of a single line. If the height is smaller than the font height,
    # it will get raised to the font height.
    # This adds empty space above and under the text.
    line_height = 0
 
    # Draw a line of 'separatpr_height' pixel height between two notifications.
    # Set to 0 to disable
    separator_height = 2
 
    # padding between text and separator
    padding = 8
 
    # horizontal padding
    horizontal_padding = 8
 
    # Define a color for the separator.
    # possible values are:
    #  * auto: dunst tries to find a color fitting to the background
    #  * foreground: use the same color as the foreground
    #  * frame: use the same color as the frame.
    #  * anything else will be interpreted as a X color
    separator_color = frame
 
    # print a notification on startup
    # This is mainly for error detection, since dbus (re-)starts dunst
    # automatically after a crash.
    startup_notification = true
 
    # dmenu path
    dmenu = /usr/bin/dmenu -p dunst:
 
    # browser for opening urls in context menu
    browser = /usr/bin/firefox -new-tab
 
[frame]
    width = 0
    color = "#000000"
 
[shortcuts]
    # shortcuts are specified as [modifier+][modifier+]...key
    # available modifiers are 'ctrl', 'mod1' (the alt-key), 'mod2', 'mod3'
    # and 'mod4' (windows-key)
    # xev might be helpful to find names for keys
 
    # close notification
    close = mod4+m
 
    # close all notifications
    close_all = mod4+shift+m
 
    # redisplay last message(s)
    history = mod4+n
 
    # context menu
    context = mod4+shift+i
 
[urgency_low]
    # IMPORTANT: colors have to be defined in quotation marks.
    # Otherwise the '#' and following  would be interpreted as a comment.
    background = "#222222"
    foreground = "#888888"
    timeout = 10
 
[urgency_normal]
    background = "#285577"
    foreground = "#ffffff"
    timeout = 10
 
[urgency_critical]
    background = "#900000"
    foreground = "#ffffff"
    timeout = 0
 
 
# Every section that isn't one of the above is interpreted as a rules
# to override settings for certain messages.
# Messages can be matched by 'appname', 'summary', 'body' or 'icon'
# and you can override the 'timeout', 'urgency', 'foreground', 'background'
# and 'format'.
# Shell-like globbing will get expanded.
#
# SCRIPTING
# you can specify a script that gets run when the rule matches by setting
# the 'script' option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format to ""
# NOTE: It might be helpful to run dunst -print in a terminal in order to find
# fitting options for rules.
 
#[espeak]
#    summary = "*"
#    script = dunst_espeak.sh
 
#[script-test]
#    summary = "*script*"
#    script = dunst_test.sh
 
#[ignore]
## This notification will not be displayed
#    summary = "foobar"
#    format = ""
 
[signed_on]
    appname = Skype
    summary = "*signed on*"
    urgency = low
 
#[signed_off]
#   appname = Pidgin
#    summary = *signed off*
 #   urgency = low
 
#[says]
#    appname = Pidgin
#    summary = *says*
#   urgency = critical
#    format  = "%s "%b""
 
#[music]
#    appname = Amarok
#   summary = "Now playing"
#    urgency = low
 
#[twitter]
#    appname = Pidgin
#    summary = *twitter.com*
#    urgency = normal
#
1 Like

@PackRat you image link is broken.

@manyroads very nice, though I am going to move the location of this thread to a new home.

1 Like