Re: dunst - a dmenu-ish notification daemon

progandy wrote:

knopwob wrote:

progandy wrote:

The U is AFAIK a bug. It should only show when the notification has associated URLs.Edit: It is a bug in the URL detection. x.y is recognized as a link.

exactly. an A would indicate an Action btw. and the url detection gets a lot of false positives. But I prefer this to wrongly not detected urls. patches that improve url detection are welcome. see menu.c

I use it instead of notify-send because with this script if there is a notification showing, it gets replaced by the new one (it doesn't wait for timeouts). Useful for volume/brightness shortcuts . In the git version I don't see anything when I use this script.

Yes, I know. The problem is that I now use glib for dbus which checks the types of the parameters to method calls. Your script doesn't work anymore because the interface specifies that the hints are a dictionary of strings and variants but dbus-send doesn't support this type. And I currently don't know of a way to disable this typechecking within glib.

As a workaround you can replace your script with this python script, which should work the same way:

Re: dunst - a dmenu-ish notification daemon

knopwob wrote:

As a workaround you can replace your script with this python script, which should work the same way

It works, but being a python script there is a significant lag between the execution and the notification, whereas with notify-send or dbus-send the notification is immediate. It gets a bit annoying when changing volume/brightness.

I've been trying to patch notify-send but there doesn't seem to be an interface to libnotify C to set the notification id (I don't know how dbus-send or python do it).

Re: dunst - a dmenu-ish notification daemon

@zequav Have a look at RELEASE_NOTES.next in the git repository. Especially the section about dunstify. It's a replacement for notify-send that I've written since notify-send lacks some features that I needed for testing. But since it uses private parts of libnotify it may break on any update on libnotify. That's why I regard it as unofficial and don't want to promote it much.

Re: dunst - a dmenu-ish notification daemon

knopwob wrote:

@zequav Have a look at RELEASE_NOTES.next in the git repository. Especially the section about dunstify. It's a replacement for notify-send that I've written since notify-send lacks some features that I needed for testing. But since it uses private parts of libnotify it may break on any update on libnotify. That's why I regard it as unofficial and don't want to promote it much.

Here is an example script that stores the first notification id and reuses it:

Re: dunst - a dmenu-ish notification daemon

knopwob wrote:

@zequav Have a look at RELEASE_NOTES.next in the git repository. Especially the section about dunstify. It's a replacement for notify-send that I've written since notify-send lacks some features that I needed for testing. But since it uses private parts of libnotify it may break on any update on libnotify. That's why I regard it as unofficial and don't want to promote it much.

progandy wrote:

Here is an example script that stores the first notification id and reuses it

But... it flickers. I see you close the old notification and create a new one, instead of replacing its contents. I've had to patch notification.c to fix it (it also removes the dup count; I don't like it):

Re: dunst - a dmenu-ish notification daemon

If I allow anyone from localhost to connect to X server with "xhost +localhost" and export DISPLAY=:0 as root, notification sent via notify-send is shown.

I have added DISPLAY=:0 as Environment variable in service file which calls the script sending notifications, but dunst segfaults instead of showing notification on event that triggers notify-send (plugging phone in and out).

Re: dunst - a dmenu-ish notification daemon

it looks like it tries to start a new instance of dunst. And I assume, when you've got it "working" with root, that there are in fact two instances of dunst running, one for root and one for your user.

It might be easier to let your root-script write to a temporary file and watch that file with a script running as your user.

Re: dunst - a dmenu-ish notification daemon

Script works great, thanks.

I have been playing with notify-send some more to confirm your theory, but it doesn't add up.Notifications get shown only if notification has already been sent from root via notify-send.If I kill both root and user instances of dunst and logout from root, notifications still appear, but this doesn't survive X restart.

Re: dunst - a dmenu-ish notification daemon

Dunst works great, its the Notification Daemon that works well for me.

I had a question though, is it possible to change the background on a per app basis? Like for instance on a Bitlbee notification I want a blue background and for Facebook. and for say Irssi Notification I want a brown Background for IRC and maybe a purple one for twitter, and red for RemoteDesktopNotifier.

Obs for 3 varients u could use low, crit and urget... but I have 4-5 apps that notify and would like individual background colors for each. Is this possible?

Re: dunst - a dmenu-ish notification daemon

Re: dunst - a dmenu-ish notification daemon

kanazky wrote:

Dunst works great, its the Notification Daemon that works well for me.

I had a question though, is it possible to change the background on a per app basis? Like for instance on a Bitlbee notification I want a blue background and for Facebook. and for say Irssi Notification I want a brown Background for IRC and maybe a purple one for twitter, and red for RemoteDesktopNotifier.

Obs for 3 varients u could use low, crit and urget... but I have 4-5 apps that notify and would like individual background colors for each. Is this possible?

You can use notify-send for this. I for example use `notify-send -t 50 -h string:fgcolor:red' for audio-notifications. Just look up the respective option on the notify-send manpage.

Re: dunst - a dmenu-ish notification daemon

To change the color of a notification not sent with notify-send, use the rules in dunstrc. You can change timeout, urgency, foreground, background, format, and script. Match the notification with appname, summary, body, and/or icon using shell wildcard patterns.Use e.g. appname to match the notification and then set "foreground" and "background".

Re: dunst - a dmenu-ish notification daemon

fixed, sans-serif, serif are font families. You should use e.g. "Arial,sans-serif". Then pango will first try arial, then search for the character in another sans-serif font.

PS: I use font = "fontawesome,unifont 16px" (font for icons and a universal font for most characters)

That didn't seem to work.

Your syntax doesn't get picked up by dunst for some reason. Trying "fixed 10px" seems to just go to some fallback sans font.Trying just "fixed" picks some random fixed font that can't display Asian fonts well (I see gibberish instead of boxes).Trying fixed-10 gives me an ugly sans-serif font that can display Asian fonts well.Trying arial,fixed-10 just uses arial and I still see boxes.

I guess dunst and dunst-git handles fonts differently. Works fine in dunst-git.

Re: dunst - a dmenu-ish notification daemon

For some reason dunst doesn't seem to respect my timeouts consistently. Could my configuration be wrong?I have the file stored in ~/.config/dunst/dunstrc

Here it is..

[global]
font = droid sans 12
# 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>%s</b>\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 = left
# 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 = "400x5-15+30"
# 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 = none
# should a notification popped up from history be sticky or
# timeout as if it would normally do.
sticky_history = no
# 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 = foreground
# print a notification on startup
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
# dmenu path
dmenu = /usr/bin/dmenu -p dunst:
# browser for opening urls in context menu
browser = /usr/bin/chromium
[frame]
width = 3
color = "#acacac"
[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+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'.
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 = "#000000"
foreground = "#cccccc"
timeout = 3
[urgency_normal]
background = "#000000"
foreground = "#cccccc"
timeout = 3
[urgency_critical]
background = "#000000"
foreground = "#cccccc"
timeout = 3
# 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 = 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
#