* notifications.el (notifications-specification-version): Change to "1.2".

(notifications-notify): Add :action-items, :resident and
:transient hints.  Change "image_data" to "image-data" and
"image_path" to "image-path".
(notifications-get-capabilities): Return a list of keywords.

* os.texi (Notifications): Extend possible notification hints.
This commit is contained in:
Michael Albinus 2012-04-24 19:56:30 +02:00
parent 1ec00a232a
commit e43042fe33
4 changed files with 89 additions and 37 deletions

View file

@ -1,6 +1,7 @@
2012-04-24 Michael Albinus <michael.albinus@gmx.de>
* os.texi: (Notifications): Add notifications-get-capabilities.
* os.texi (Notifications): Extend possible notification hints.
Add notifications-get-capabilities.
2012-04-20 Chong Yidong <cyd@gnu.org>

View file

@ -2271,7 +2271,7 @@ The notification title.
@item :body @var{text}
The notification body text. Depending on the implementation of the
notification server, the text could contain HTML markups, like
@samp{"<b>bold text</b>"}, or hyperlinks.
@samp{"<b>bold text</b>"}, hyperlinks, or images.
@item :app-name @var{name}
The name of the application sending the notification. The default is
@ -2301,6 +2301,10 @@ the notification never expires. Default value is -1.
@item :urgency @var{urgency}
The urgency level. It can be @code{low}, @code{normal}, or @code{critical}.
@item :action-items
When this keyword is given, the @var{title} string of the actions is
interpreted as icon name.
@item :category @var{category}
The type of notification this is, a string.
@ -2331,6 +2335,17 @@ example would be @samp{"message-new-instant"}.
Causes the server to suppress playing any sounds, if it has that
ability.
@item :resident
When 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
@code{:persistence} capability.
@item :transient
When set the server will treat the notification as transient and
by-pass the server's persistence capability, if it should exist.
@item :x @var{position}
@itemx :y @var{position}
Specifies the X, Y location on the screen that the
@ -2402,35 +2417,39 @@ This function closes a notification with identifier @var{id}.
Returns the capabilities of the notification server, a list of strings.
The following capabilities can be expected:
@table @asis
@item "actions"
@table @code
@item :actions
The server will provide the specified actions to the user.
@item "body"
@item :body
Supports body text.
@item "body-hyperlinks"
@item :body-hyperlinks
The server supports hyperlinks in the notifications.
@item "body-images"
@item :body-images
The server supports images in the notifications.
@item "body-markup"
@item :body-markup
Supports markup in the body text.
@item "icon-multi"
@item :icon-multi
The server will render an animation of all the frames in a given image
array.
@item "icon-static"
@item :icon-static
Supports display of exactly 1 frame of any given image array. This
value is mutually exclusive with "icon-multi".
value is mutually exclusive with @code{:icon-multi}.
@item "sound"
@item :persistence
The server supports persistence of notifications.
@item :sound
The server supports sounds on notifications.
@end table
Further vendor-specific caps start with "x-vendor", like "x-gnome-foo-cap".
Further vendor-specific caps start with @code{:x-vendor}, like
@code{:x-gnome-foo-cap}.
@end defun

View file

@ -22,10 +22,14 @@
2012-04-24 Michael Albinus <michael.albinus@gmx.de>
* notifications.el (notifications-interface)
(notifications-notify-method, notifications-notify)
* notifications.el (notifications-specification-version): Change
to "1.2".
(notifications-interface, notifications-notify-method)
(notifications-close-notification-method): Fix docstring.
(notifications-get-capabilities-method): New defconst.
(notifications-notify): Add :action-items, :resident and
:transient hints. Change "image_data" to "image-data" and
"image_path" to "image-path".
(notifications-get-capabilities): New defun.
2012-04-24 Leo Liu <sdl.web@gmail.com>

View file

@ -23,7 +23,7 @@
;;; Commentary:
;; This package provides an implementation of the Desktop Notifications
;; <http://www.galago-project.org/specs/notification/>.
;; <http://developer.gnome.org/notification-spec/>.
;; In order to activate this package, you must add the following code
;; into your .emacs:
@ -45,7 +45,7 @@
(require 'dbus)
(defconst notifications-specification-version "1.1"
(defconst notifications-specification-version "1.2"
"The version of the Desktop Notifications Specification implemented.")
(defconst notifications-application-name "Emacs"
@ -157,6 +157,8 @@ Various PARAMS can be set:
Default value is -1.
:urgency The urgency level.
Either `low', `normal' or `critical'.
:action-items Whether the TITLE of the actions is interpreted as
a named icon.
:category The type of notification this is.
:desktop-entry This specifies the name of the desktop filename representing
the calling program.
@ -173,6 +175,11 @@ Various PARAMS can be set:
be \"message-new-instant\".
:suppress-sound Causes the server to suppress playing any sounds, if it has
that ability.
:resident When set the server will not automatically remove the
notification when an action has been invoked.
:transient When set the server will treat the notification as transient
and by-pass the server's persistence capability, if it
should exist.
:x Specifies the X location on the screen that the notification
should point to. The \"y\" hint must also be specified.
:y Specifies the Y location on the screen that the notification
@ -212,9 +219,12 @@ of another `notifications-notify' call."
(desktop-entry (plist-get params :desktop-entry))
(image-data (plist-get params :image-data))
(image-path (plist-get params :image-path))
(action-items (plist-get params :action-items))
(sound-file (plist-get params :sound-file))
(sound-name (plist-get params :sound-name))
(suppress-sound (plist-get params :suppress-sound))
(resident (plist-get params :resident))
(transient (plist-get params :transient))
(x (plist-get params :x))
(y (plist-get params :y))
id)
@ -236,12 +246,16 @@ of another `notifications-notify' call."
(:variant :string ,desktop-entry)) t))
(when image-data
(add-to-list 'hints `(:dict-entry
"image_data"
"image-data"
(:variant :struct ,image-data)) t))
(when image-path
(add-to-list 'hints `(:dict-entry
"image_path"
"image-path"
(:variant :string ,image-path)) t))
(when action-items
(add-to-list 'hints `(:dict-entry
"action-items"
(:variant :boolean ,action-items)) t))
(when sound-file
(add-to-list 'hints `(:dict-entry
"sound-file"
@ -254,6 +268,14 @@ of another `notifications-notify' call."
(add-to-list 'hints `(:dict-entry
"suppress-sound"
(:variant :boolean ,suppress-sound)) t))
(when resident
(add-to-list 'hints `(:dict-entry
"resident"
(:variant :boolean ,resident)) t))
(when transient
(add-to-list 'hints `(:dict-entry
"transient"
(:variant :boolean ,transient)) t))
(when x
(add-to-list 'hints `(:dict-entry "x" (:variant :int32 ,x)) t))
(when y
@ -332,24 +354,30 @@ of another `notifications-notify' call."
"Return the capabilities of the notification server, a list of strings.
The following capabilities can be expected:
\"actions\" The server will provide the specified actions
to the user.
\"body\" Supports body text.
\"body-hyperlinks\" The server supports hyperlinks in the notifications.
\"body-images\" The server supports images in the notifications.
\"body-markup\" Supports markup in the body text.
\"icon-multi\" The server will render an animation of all the
frames in a given image array.
\"icon-static\" Supports display of exactly 1 frame of any
given image array. This value is mutually exclusive
with \"icon-multi\".
\"sound\" The server supports sounds on notifications.
`:actions' The server will provide the specified actions
to the user.
`:action-icons' Supports using icons instead of text for
displaying actions.
`:body' Supports body text.
`:body-hyperlinks' The server supports hyperlinks in the notifications.
`:body-images' The server supports images in the notifications.
`:body-markup' Supports markup in the body text.
`:icon-multi' The server will render an animation of all the
frames in a given image array.
`:icon-static' Supports display of exactly 1 frame of any
given image array. This value is mutually exclusive
with `:icon-multi'.
`:persistence' The server supports persistence of notifications.
`:sound' The server supports sounds on notifications.
Further vendor-specific caps start with \"x-vendor\", like \"x-gnome-foo-cap\"."
(dbus-call-method :session
notifications-service
notifications-path
notifications-interface
notifications-get-capabilities-method))
Further vendor-specific caps start with `:x-vendor', like `:x-gnome-foo-cap'."
(dbus-ignore-errors
(mapcar
(lambda (x) (intern (concat ":" x)))
(dbus-call-method :session
notifications-service
notifications-path
notifications-interface
notifications-get-capabilities-method))))
(provide 'notifications)