* notifications.el (notifications-interface)
[bpt/emacs.git] / lisp / notifications.el
index b825eb6..9dad2a9 100644 (file)
   "D-Bus notifications service path.")
 
 (defconst notifications-interface "org.freedesktop.Notifications"
-  "D-Bus notifications service path.")
+  "D-Bus notifications service interface.")
 
 (defconst notifications-notify-method "Notify"
-  "D-Bus notifications service path.")
+  "D-Bus notifications notify method.")
 
 (defconst notifications-close-notification-method "CloseNotification"
-  "D-Bus notifications service path.")
+  "D-Bus notifications close notification method.")
+
+(defconst notifications-get-capabilities-method "GetCapabilities"
+  "D-Bus notifications get capabilities method.")
 
 (defconst notifications-action-signal "ActionInvoked"
   "D-Bus notifications action signal.")
@@ -188,6 +191,9 @@ Various PARAMS can be set:
                    - `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
@@ -322,4 +328,28 @@ of another `notifications-notify' call."
                     notifications-close-notification-method
                     :int32 id))
 
+(defun notifications-get-capabilities ()
+  "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.
+
+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))
+
 (provide 'notifications)