Next: File Notifications, Previous: Session Management, Up: System Interface [Contents][Index]
Emacs is able to send notifications on systems that support the
freedesktop.org Desktop Notifications Specification. In order to use
this functionality, Emacs must have been compiled with D-Bus support,
and the notifications library must be loaded. See D-Bus in D-Bus integration in Emacs.
This function sends a notification to the desktop via D-Bus, consisting of the parameters specified by the params arguments. These arguments should consist of alternating keyword and value pairs. The supported keywords and values are as follows:
:bus busThe D-Bus bus. This argument is needed only if a bus other than
:session shall be used.
:title titleThe notification title.
:body textThe notification body text. Depending on the implementation of the notification server, the text could contain HTML markups, like ‘"<b>bold text</b>"’, hyperlinks, or images. Special HTML characters must be encoded, as ‘"Contact <postmaster@localhost>!"’.
:app-name nameThe name of the application sending the notification. The default is
notifications-application-name.
:replaces-id idThe notification id that this notification replaces. id
must be the result of a previous notifications-notify call.
:app-icon icon-fileThe file name of the notification icon. If set to nil, no icon
is displayed. The default is notifications-application-icon.
:actions (key title key title ...)A list of actions to be applied. key and title are both strings. The default action (usually invoked by clicking the notification) should have a key named ‘"default"’. The title can be anything, though implementations are free not to display it.
:timeout timeoutThe timeout time in milliseconds since the display of the notification at which the notification should automatically close. If -1, the notification’s expiration time is dependent on the notification server’s settings, and may vary for the type of notification. If 0, the notification never expires. Default value is -1.
:urgency urgencyThe urgency level. It can be low, normal, or critical.
:action-itemsWhen this keyword is given, the title string of the actions is interpreted as icon name.
:category categoryThe type of notification this is, a string. See the Desktop Notifications Specification for a list of standard categories.
:desktop-entry filenameThis specifies the name of the desktop filename representing the calling program, like ‘"emacs"’.
:image-data (width height rowstride has-alpha bits channels data)This is a raw data image format that describes the width, height, rowstride, whether there is an alpha channel, bits per sample, channels and image data, respectively.
:image-path pathThis is represented either as a URI (‘file://’ is the only URI schema supported right now) or a name in a freedesktop.org-compliant icon theme from ‘$XDG_DATA_DIRS/icons’.
:sound-file filenameThe path to a sound file to play when the notification pops up.
:sound-name nameA themable named sound from the freedesktop.org sound naming specification from ‘$XDG_DATA_DIRS/sounds’, to play when the notification pops up. Similar to the icon name, only for sounds. An example would be ‘"message-new-instant"’.
:suppress-soundCauses the server to suppress playing any sounds, if it has that ability.
:residentWhen set the server will not automatically remove the notification
when an action has been invoked. The notification will remain resident
in the server until it is explicitly removed by the user or by the
sender. This hint is likely only useful when the server has the
:persistence capability.
:transientWhen set the server will treat the notification as transient and by-pass the server’s persistence capability, if it should exist.
:x position:y positionSpecifies the X, Y location on the screen that the notification should point to. Both arguments must be used together.
:on-action functionFunction to call when an action is invoked. The notification id and the key of the action are passed as arguments to the function.
:on-close functionFunction to call when the notification has been closed by timeout or by the user. The function receive the notification id and the closing reason as arguments:
expired if the notification has expired
dismissed if the notification was dismissed by the user
close-notification if the notification was closed by a call to
notifications-close-notification
undefined if the notification server hasn’t provided a reason
Which parameters are accepted by the notification server can be
checked via notifications-get-capabilities.
This function returns a notification id, an integer, which can be used
to manipulate the notification item with
notifications-close-notification or the :replaces-id
argument of another notifications-notify call. For example:
(defun my-on-action-function (id key)
(message "Message %d, key \"%s\" pressed" id key))
⇒ my-on-action-function
(defun my-on-close-function (id reason)
(message "Message %d, closed due to \"%s\"" id reason))
⇒ my-on-close-function
(notifications-notify
:title "Title"
:body "This is <b>important</b>."
:actions '("Confirm" "I agree" "Refuse" "I disagree")
:on-action 'my-on-action-function
:on-close 'my-on-close-function)
⇒ 22
A message window opens on the desktop. Press "I agree"
⇒ Message 22, key "Confirm" pressed
Message 22, closed due to "dismissed"
This function closes a notification with identifier id.
bus can be a string denoting a D-Bus connection, the default is
:session.
Returns the capabilities of the notification server, a list of
symbols. bus can be a string denoting a D-Bus connection, the
default is :session. The following capabilities can be
expected:
:actionsThe server will provide the specified actions to the user.
:bodySupports body text.
:body-hyperlinksThe server supports hyperlinks in the notifications.
:body-imagesThe server supports images in the notifications.
:body-markupSupports markup in the body text.
:icon-multiThe server will render an animation of all the frames in a given image array.
:icon-staticSupports display of exactly 1 frame of any given image array. This
value is mutually exclusive with :icon-multi.
:persistenceThe server supports persistence of notifications.
:soundThe server supports sounds on notifications.
Further vendor-specific caps start with :x-vendor, like
:x-gnome-foo-cap.
Return information on the notification server, a list of strings.
bus can be a string denoting a D-Bus connection, the default is
:session. The returned list is (name vendor
version spec-version).
The product name of the server.
The vendor name. For example, ‘"KDE"’, ‘"GNOME"’.
The server’s version number.
The specification version the server is compliant with.
If spec_version is nil, the server supports a
specification prior to ‘"1.0"’.
Next: File Notifications, Previous: Session Management, Up: System Interface [Contents][Index]