emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v4] notifications: Allow to use Icon Naming Specification for app


From: Andrew Tropin
Subject: [PATCH v4] notifications: Allow to use Icon Naming Specification for app-icon
Date: Thu, 27 Jul 2023 12:03:22 +0400

Icon is not always a file name, but can be just an icon name.
https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html

* lisp/notifications.el (notifications-notify): Allow to use Icon
Naming Specification for app-icon.
---
 doc/lispref/os.texi   |  7 +++++++
 etc/NEWS              | 10 ++++++++++
 lisp/notifications.el | 11 ++++++++++-
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 4bcc9d5fea6..ebedfe82087 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -2885,6 +2885,13 @@ Desktop Notifications
 @item :app-icon @var{icon-file}
 The file name of the notification icon.  If set to @code{nil}, no icon
 is displayed.  The default is @code{notifications-application-icon}.
+If the value is a string, the function interprets it as a file name
+and converts to absolute by using @code{expand-file-name}; if it is a
+symbol, the function will use its name (which is useful when using the
+Icon Naming Specification @footnote{For more information about icon
+naming convention see
+@uref{https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html,
+Icon Naming Specification}}).
 
 @item :actions (@var{key} @var{title} @var{key} @var{title} ...)
 A list of actions to be applied.  @var{key} and @var{title} are both
diff --git a/etc/NEWS b/etc/NEWS
index 5883b4df2a7..51c7fe6a363 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -548,6 +548,16 @@ Similarly to buffer restoration by Desktop, 'recentf-mode' 
checking
 of the accessibility of remote files can now time out if
 'remote-file-name-access-timeout' is set to a positive number.
 
+** Notifications
+
++++
+*** Allow to use Icon Naming Specification for app-icon
+You can use a symbol as the value for ':app-icon' to provide icon name
+without specifying a file, like this:
+
+  (notifications-notify
+    :title "I am playing music" :app-icon 'multimedia-player)
+
 
 * New Modes and Packages in Emacs 30.1
 
diff --git a/lisp/notifications.el b/lisp/notifications.el
index 984ddbec5e9..a694b38e52e 100644
--- a/lisp/notifications.el
+++ b/lisp/notifications.el
@@ -137,6 +137,12 @@ notifications-notify
  :app-icon       The notification icon.
                  Default is `notifications-application-icon'.
                  Set to nil if you do not want any icon displayed.
+                 If the value is a string, the function
+                 interprets it as a file name and converts to
+                 absolute by using `expand-file-name'; if it is a
+                 symbol, the function will use its name (which is
+                 useful when using the Icon Naming
+                 Specification).
  :actions        A list of actions in the form:
                    (KEY TITLE KEY TITLE ...)
                  where KEY and TITLE are both strings.
@@ -304,7 +310,10 @@ notifications-notify
                                          notifications-application-name)
                              :uint32 (or replaces-id 0)
                              :string (if app-icon
-                                         (expand-file-name app-icon)
+                                         (if (stringp app-icon)
+                                              (expand-file-name app-icon)
+                                            ;; Convert symbol to string
+                                            (symbol-name app-icon))
                                        ;; If app-icon is nil because user
                                        ;; requested it to be so, send the
                                        ;; empty string
-- 
2.41.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]