如何在 emacs 中设置下午茶时间以使用 gnome 中的本机通知系统

如何在 emacs 中设置下午茶时间以使用 gnome 中的本机通知系统

有没有一种简单的方法tea-time通过 gnome 的本机通知系统显示消息?

tea-time.el 中当前的“通知函数”是:

(defun show-notification (notification)
  "Show notification. Use mumbles."
 (if (program-exists "mumbles-send")
    (start-process "tea-time-mumble-notification" nil "mumbles-send" notification)
  (message notification)
 ))

我尝试编辑它来代替notify-send,但没有任何成功:专门使用类似(shell-command (concat "notify-send " notification))in 的东西(start-process "tea-time-mumble-notification" nil "mumbles-send" notification)似乎不起作用(当然,我也摆脱了 if 语句)。

建议?

答案1

是的,只需致电notify-send来自警报挂钩的命令(如果有的话,否则您可能需要修补 tea-time 才能获得该命令。)

答案2

在 Emacs 24 中,您可以notifications.el直接从 elisp 代码发送 D-Bus 通知。重写@yhager 的钩子,上面:

(add-hook 'tea-time-notification-hook
  (lambda ()
    (notifications-notify :title "Time is up!"
                          :body "I know you're busy, but it's TEA TIME!!"
                          :app-name "Tea Time"
                          :sound-name "alarm-clock-elapsed)))

上有更多有用的参数描述通知页面Emacs Lisp 参考手册(包括:sound-file选项,而不是:sound-name,它需要一个XDG声音主题实现)。

答案3

通过反复试验,我发现以下重新定义有效:

(defun show-notification (notification)
"Show notification. Use notify-send."
(start-process "tea-time-notify-notification" nil "notify-send" notification)
)

也可以做更奇特的事情:使用

(start-process "tea-time-notify-notification" nil "notify-send" "-i" (expand-file-name "~/path/to/your/icon/YourIconName.png") "Emacs Tea Timer" notification)

告诉通知守护进程使用图标(这个是合适的)在通知弹出窗口中,并使用加粗的“摘要”文本(“Emacs Tea Timer”)。

答案4

有了最新的 tea-time.el,您就有了一个可以用来实现这一点的钩子。
添加到您的 Emacs 初始化中:

(add-hook 'tea-time-notification-hook 
  (function (lambda() 
    (start-process "tea-timer-notification" nil "notify-send" "Time is up!"))))

相关内容