Harden Emacs notification startup

This commit is contained in:
2026-05-04 22:13:56 -07:00
parent a573176200
commit c6536b76cd
2 changed files with 35 additions and 3 deletions

View File

@@ -986,7 +986,12 @@ I keep it around just in case I need it.
(shell-command (format "grownotify -t %s -m %s" title message))) (shell-command (format "grownotify -t %s -m %s" title message)))
(defun notify-send (title message) (defun notify-send (title message)
(shell-command (format "notify-send -u critical %s %s" title message))) (when-let ((program (executable-find "notify-send")))
(let ((process-connection-type nil))
(start-process "notify-send" nil program
"-u" "critical"
(or title "No title")
(or message "No message")))))
(defvar notify-function (defvar notify-function
(cond ((eq system-type 'darwin) 'notification-center) (cond ((eq system-type 'darwin) 'notification-center)
@@ -3836,13 +3841,36 @@ This is useful with server mode when editing gmail messages. I think that it is
(use-package alert (use-package alert
:defer t :defer t
:preface :preface
(defun imalison:linux-notifications-available-p ()
(and (eq system-type 'gnu/linux)
(executable-find "notify-send")))
(defun imalison:notify-send-urgency (severity)
(pcase severity
((or 'urgent 'high) "critical")
('low "low")
(_ "normal")))
(defun imalison:alert-notify-send (info)
(when-let ((program (executable-find "notify-send")))
(let ((process-connection-type nil))
(start-process "alert-notify-send" nil program
"-u" (imalison:notify-send-urgency
(plist-get info :severity))
(or (plist-get info :title) "Emacs")
(or (plist-get info :message) "")))))
(defun imalison:windows-toast-notify (info) (defun imalison:windows-toast-notify (info)
(let ((message (plist-get info :message)) (let ((message (plist-get info :message))
(title (plist-get info :title))) (title (plist-get info :title)))
(shell-command (format "windows_toast '%s' '%s'" (or title "No title") (or message "No message"))))) (shell-command (format "windows_toast '%s' '%s'" (or title "No title") (or message "No message")))))
:config :config
(progn (progn
(setq alert-default-style 'libnotify) (alert-define-style
'notify-send
:title "notify-send"
:notifier 'imalison:alert-notify-send)
(setq alert-default-style
(if (imalison:linux-notifications-available-p)
'notify-send
'message))
(when (not (string-empty-p (shell-command-to-string "grep -i microsoft /proc/version"))) (when (not (string-empty-p (shell-command-to-string "grep -i microsoft /proc/version")))
(alert-define-style (alert-define-style
'windows-toast 'windows-toast

View File

@@ -1117,7 +1117,11 @@ alphanumeric characters only."
(org-wild-notifier--apply-whitelist) (org-wild-notifier--apply-whitelist)
(org-wild-notifier--apply-blacklist) (org-wild-notifier--apply-blacklist)
(-map 'org-wild-notifier--gather-info)))) (-map 'org-wild-notifier--gather-info))))
(org-wild-notifier-mode +1) (condition-case err
(org-wild-notifier-mode +1)
(error
(message "org-wild-notifier disabled during startup: %s"
(error-message-string err))))
(defun org-wild-notify-check-at-time () (defun org-wild-notify-check-at-time ()
(interactive) (interactive)
(imalison:org-at-time (imalison:org-at-time