![如何在 emacs 中设置下午茶时间以使用 gnome 中的本机通知系统](https://linux22.com/image/2327/%E5%A6%82%E4%BD%95%E5%9C%A8%20emacs%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%E4%B8%8B%E5%8D%88%E8%8C%B6%E6%97%B6%E9%97%B4%E4%BB%A5%E4%BD%BF%E7%94%A8%20gnome%20%E4%B8%AD%E7%9A%84%E6%9C%AC%E6%9C%BA%E9%80%9A%E7%9F%A5%E7%B3%BB%E7%BB%9F.png)
有没有一种简单的方法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!"))))