Mercurial > emacs
annotate lisp/notifications.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 14e479cda1d2 |
children | 6358797a47cd f215ea324ebd |
rev | line source |
---|---|
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
1 ;;; notifications.el --- Client interface to desktop notifications. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
2 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
3 ;; Copyright (C) 2010 Free Software Foundation, Inc. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
4 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
5 ;; Author: Julien Danjou <julien@danjou.info> |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
6 ;; Keywords: comm desktop notifications |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
7 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
8 ;; This file is part of GNU Emacs. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
9 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
10 ;; GNU Emacs is free software: you can redistribute it and/or modify |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
11 ;; it under the terms of the GNU General Public License as published by |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
12 ;; the Free Software Foundation, either version 3 of the License, or |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
13 ;; (at your option) any later version. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
14 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
15 ;; GNU Emacs is distributed in the hope that it will be useful, |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
18 ;; GNU General Public License for more details. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
19 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
20 ;; You should have received a copy of the GNU General Public License |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
22 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
23 ;;; Commentary: |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
24 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
25 ;; This package provides an implementation of the Desktop Notifications |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
26 ;; <http://www.galago-project.org/specs/notification/>. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
27 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
28 ;; In order to activate this package, you must add the following code |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
29 ;; into your .emacs: |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
30 ;; |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
31 ;; (require 'notifications) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
32 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
33 ;;; Code: |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
34 (eval-when-compile |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
35 (require 'cl)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
36 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
37 ;; Pacify byte-compiler. D-Bus support in the Emacs core can be |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
38 ;; disabled with configuration option "--without-dbus". Declare used |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
39 ;; subroutines and variables of `dbus' therefore. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
40 (declare-function dbus-call-method "dbusbind.c") |
108920
838873812c0a
* net/notifications.el (dbus-register-signal): Declare function.
Juanma Barranquero <lekktu@gmail.com>
parents:
108918
diff
changeset
|
41 (declare-function dbus-register-signal "dbusbind.c") |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
42 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
43 (require 'dbus) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
44 |
110316
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
45 (defconst notifications-specification-version "1.1" |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
46 "The version of the Desktop Notifications Specification implemented.") |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
47 |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
48 (defconst notifications-application-name "Emacs" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
49 "Default application name.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
50 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
51 (defconst notifications-application-icon |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
52 (expand-file-name |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
53 "images/icons/hicolor/scalable/apps/emacs.svg" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
54 data-directory) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
55 "Default application icon.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
56 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
57 (defconst notifications-service "org.freedesktop.Notifications" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
58 "D-Bus notifications service name.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
59 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
60 (defconst notifications-path "/org/freedesktop/Notifications" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
61 "D-Bus notifications service path.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
62 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
63 (defconst notifications-interface "org.freedesktop.Notifications" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
64 "D-Bus notifications service path.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
65 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
66 (defconst notifications-notify-method "Notify" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
67 "D-Bus notifications service path.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
68 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
69 (defconst notifications-close-notification-method "CloseNotification" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
70 "D-Bus notifications service path.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
71 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
72 (defconst notifications-action-signal "ActionInvoked" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
73 "D-Bus notifications action signal.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
74 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
75 (defconst notifications-closed-signal "NotificationClosed" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
76 "D-Bus notifications closed signal.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
77 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
78 (defconst notifications-closed-reason |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
79 '((1 expired) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
80 (2 dismissed) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
81 (3 close-notification) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
82 (4 undefined)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
83 "List of reasons why a notification has been closed.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
84 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
85 (defvar notifications-on-action-map nil |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
86 "Mapping between notification and action callback functions.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
87 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
88 (defvar notifications-on-close-map nil |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
89 "Mapping between notification and close callback functions.") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
90 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
91 (defun notifications-on-action-signal (id action) |
108964
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
92 "Dispatch signals to callback functions from `notifications-on-action-map'." |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
93 (let ((entry (assoc id notifications-on-action-map))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
94 (when entry |
108964
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
95 (funcall (cadr entry) id action) |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
96 (remove entry 'notifications-on-action-map)))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
97 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
98 (dbus-register-signal |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
99 :session |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
100 notifications-service |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
101 notifications-path |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
102 notifications-interface |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
103 notifications-action-signal |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
104 'notifications-on-action-signal) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
105 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
106 (defun notifications-on-closed-signal (id reason) |
108964
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
107 "Dispatch signals to callback functions from `notifications-on-closed-map'." |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
108 (let ((entry (assoc id notifications-on-close-map))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
109 (when entry |
108964
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
110 (funcall (cadr entry) |
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
111 id (cadr (assoc reason notifications-closed-reason))) |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
112 (remove entry 'notifications-on-close-map)))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
113 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
114 (dbus-register-signal |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
115 :session |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
116 notifications-service |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
117 notifications-path |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
118 notifications-interface |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
119 notifications-closed-signal |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
120 'notifications-on-closed-signal) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
121 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
122 (defun notifications-notify (&rest params) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
123 "Send notification via D-Bus using the Freedesktop notification protocol. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
124 Various PARAMS can be set: |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
125 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
126 :title The notification title. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
127 :body The notification body text. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
128 :app-name The name of the application sending the notification. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
129 Default to `notifications-application-name'. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
130 :replaces-id The notification ID that this notification replaces. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
131 :app-icon The notification icon. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
132 Default is `notifications-application-icon'. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
133 Set to nil if you do not want any icon displayed. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
134 :actions A list of actions in the form: |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
135 (KEY TITLE KEY TITLE ...) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
136 where KEY and TITLE are both strings. |
108920
838873812c0a
* net/notifications.el (dbus-register-signal): Declare function.
Juanma Barranquero <lekktu@gmail.com>
parents:
108918
diff
changeset
|
137 The default action (usually invoked by clicking the |
838873812c0a
* net/notifications.el (dbus-register-signal): Declare function.
Juanma Barranquero <lekktu@gmail.com>
parents:
108918
diff
changeset
|
138 notification) should have a key named \"default\". |
108925
515ffffc30e6
* net/notifications.el (notifications-notify): Fix docstring.
Michael Albinus <albinus@detlef>
parents:
108920
diff
changeset
|
139 The title can be anything, though implementations are free |
108920
838873812c0a
* net/notifications.el (dbus-register-signal): Declare function.
Juanma Barranquero <lekktu@gmail.com>
parents:
108918
diff
changeset
|
140 not to display it. |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
141 :timeout The timeout time in milliseconds since the display |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
142 of the notification at which the notification should |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
143 automatically close. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
144 If -1, the notification's expiration time is dependent |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
145 on the notification server's settings, and may vary for |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
146 the type of notification. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
147 If 0, the notification never expires. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
148 Default value is -1. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
149 :urgency The urgency level. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
150 Either `low', `normal' or `critical'. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
151 :category The type of notification this is. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
152 :desktop-entry This specifies the name of the desktop filename representing |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
153 the calling program. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
154 :image-data This is a raw data image format which describes the width, |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
155 height, rowstride, has alpha, bits per sample, channels and |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
156 image data respectively. |
110316
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
157 :image-path This is represented either as a URI (file:// is the |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
158 only URI schema supported right now) or a name |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
159 in a freedesktop.org-compliant icon theme. |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
160 :sound-file The path to a sound file to play when the notification pops up. |
110316
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
161 :sound-name A themeable named sound from the freedesktop.org sound naming |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
162 specification to play when the notification pops up. |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
163 Similar to icon-name,only for sounds. An example would |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
164 be \"message-new-instant\". |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
165 :suppress-sound Causes the server to suppress playing any sounds, if it has |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
166 that ability. |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
167 :x Specifies the X location on the screen that the notification |
108920
838873812c0a
* net/notifications.el (dbus-register-signal): Declare function.
Juanma Barranquero <lekktu@gmail.com>
parents:
108918
diff
changeset
|
168 should point to. The \"y\" hint must also be specified. |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
169 :y Specifies the Y location on the screen that the notification |
108920
838873812c0a
* net/notifications.el (dbus-register-signal): Declare function.
Juanma Barranquero <lekktu@gmail.com>
parents:
108918
diff
changeset
|
170 should point to. The \"x\" hint must also be specified. |
108964
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
171 :on-action Function to call when an action is invoked. |
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
172 The notification id and the key of the action are passed |
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
173 as arguments to the function. |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
174 :on-close Function to call when the notification has been closed |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
175 by timeout or by the user. |
108964
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
176 The function receive the notification id and the closing |
da553d450193
* net/notifications.el (notifications-on-action-signal)
Michael Albinus <michael.albinus@gmx.de>
parents:
108925
diff
changeset
|
177 reason as arguments: |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
178 - `expired' if the notification has expired |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
179 - `dismissed' if the notification was dismissed by the user |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
180 - `close-notification' if the notification was closed |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
181 by a call to CloseNotification |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
182 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
183 This function returns a notification id, an integer, which can be |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
184 used to manipulate the notification item with |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
185 `notifications-close'." |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
186 (let ((title (plist-get params :title)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
187 (body (plist-get params :body)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
188 (app-name (plist-get params :app-name)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
189 (replaces-id (plist-get params :replaces-id)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
190 (app-icon (plist-get params :app-icon)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
191 (actions (plist-get params :actions)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
192 (timeout (plist-get params :timeout)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
193 ;; Hints |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
194 (hints '()) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
195 (urgency (plist-get params :urgency)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
196 (category (plist-get params :category)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
197 (desktop-entry (plist-get params :desktop-entry)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
198 (image-data (plist-get params :image-data)) |
110316
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
199 (image-path (plist-get params :image-path)) |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
200 (sound-file (plist-get params :sound-file)) |
110316
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
201 (sound-name (plist-get params :sound-name)) |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
202 (suppress-sound (plist-get params :suppress-sound)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
203 (x (plist-get params :x)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
204 (y (plist-get params :y)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
205 id) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
206 ;; Build hints array |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
207 (when urgency |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
208 (add-to-list 'hints `(:dict-entry |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
209 "urgency" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
210 (:variant :byte ,(case urgency |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
211 ('low 0) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
212 ('critical 2) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
213 (t 1)))) t)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
214 (when category |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
215 (add-to-list 'hints `(:dict-entry |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
216 "category" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
217 (:variant :string ,category)) t)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
218 (when desktop-entry |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
219 (add-to-list 'hints `(:dict-entry |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
220 "desktop-entry" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
221 (:variant :string ,desktop-entry)) t)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
222 (when image-data |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
223 (add-to-list 'hints `(:dict-entry |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
224 "image_data" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
225 (:variant :struct ,image-data)) t)) |
110316
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
226 (when image-path |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
227 (add-to-list 'hints `(:dict-entry |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
228 "image_path" |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
229 (:variant :string ,image-path)) t)) |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
230 (when sound-file |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
231 (add-to-list 'hints `(:dict-entry |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
232 "sound-file" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
233 (:variant :string ,sound-file)) t)) |
110316
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
234 (when sound-name |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
235 (add-to-list 'hints `(:dict-entry |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
236 "sound-name" |
14e479cda1d2
* notifications.el (notifications-notify): Add support for
Michael Albinus <michael.albinus@gmx.de>
parents:
108965
diff
changeset
|
237 (:variant :string ,sound-name)) t)) |
108916
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
238 (when suppress-sound |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
239 (add-to-list 'hints `(:dict-entry |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
240 "suppress-sound" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
241 (:variant :boolean ,suppress-sound)) t)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
242 (when x |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
243 (add-to-list 'hints `(:dict-entry "x" (:variant :int32 ,x)) t)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
244 (when y |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
245 (add-to-list 'hints `(:dict-entry "y" (:variant :int32 ,y)) t)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
246 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
247 ;; Call Notify method |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
248 (setq id |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
249 (dbus-call-method :session |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
250 notifications-service |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
251 notifications-path |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
252 notifications-interface |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
253 notifications-notify-method |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
254 :string (or app-name |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
255 notifications-application-name) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
256 :uint32 (or replaces-id 0) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
257 :string (if app-icon |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
258 (expand-file-name app-icon) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
259 ;; If app-icon is nil because user |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
260 ;; requested it to be so, send the |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
261 ;; empty string |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
262 (if (plist-member params :app-icon) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
263 "" |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
264 ;; Otherwise send the default icon path |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
265 notifications-application-icon)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
266 :string (or title "") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
267 :string (or body "") |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
268 `(:array ,@actions) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
269 (or hints '(:array :signature "{sv}")) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
270 :int32 (or timeout -1))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
271 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
272 ;; Register close/action callback function |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
273 (let ((on-action (plist-get params :on-action)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
274 (on-close (plist-get params :on-close))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
275 (when on-action |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
276 (add-to-list 'notifications-on-action-map (list id on-action))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
277 (when on-close |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
278 (add-to-list 'notifications-on-close-map (list id on-close)))) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
279 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
280 ;; Return notification id |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
281 id)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
282 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
283 (defun notifications-close-notification (id) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
284 "Close a notification with identifier ID." |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
285 (dbus-call-method :session |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
286 notifications-service |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
287 notifications-path |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
288 notifications-interface |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
289 notifications-close-notification-method |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
290 :int32 id)) |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
291 |
f0e5fbe77b7c
* notifications.el: New file.
Michael Albinus <michael.albinus@gmx.de>
parents:
diff
changeset
|
292 (provide 'notifications) |