如何设置基于计时器的通知?


9

作为一个强迫性的计算机用户,我整天都在它面前。当我制作伴奏时,有时会失去时间。我需要通知服务,以弹出通知或正在播放的声音或两者同时提醒我当前时间。

对于弹出窗口,我找到了使用DBus API的免费桌面通知标准。

我能够使用图形化DBUS资源管理器DFeet创建通知。我使用了以下参数:

"wakeup", 1234, "", "The time is", "9PM", [], [], 1

到目前为止,它仍然可以正常工作,但是我如何才能从这里进一步发展呢?

  • 如何从命令行调用它?
  • 如何自动执行此命令?是cron仍然自动基于时间行动的建议呢?
  • 如何在弹出窗口中播放声音?通过FreeDesktop API还是通过媒体播放器?

一个完整的解决方案将不胜感激,也许对其他人也很有用。


1
关于第1点,第2点,dbus-send可能是要使用的应用程序,是cron推荐的方法。
enzotib

dbus-send无法使用,因为它不支持此API所需的某些参数。我正在调查pynotify
HRJ

+1欣赏你的电脑向您通知当前时间:)(但严重的是-这是一个很好的问题)
拉法尔Cieślak

Answers:


7

由于我无法使用,dbus-send所以我改写了python脚本。pynotify模块在内部使用dbusAPI。为了获得更多收益,我在消息中添加了一个幸运饼干。奇迹般有效:

#!/usr/bin/env python
"""python 2.7 script that creates a notification using pynotify. It shows the current time and a small fortune cookie"""
try:
  import pynotify
  import time
  import subprocess
  if pynotify.init("Wakeup service"):
    subprocess.Popen(["paplay", "/usr/share/sounds/ubuntu/stereo/message.ogg"])

    # You can get more stock icons from here: http://stackoverflow.com/questions/3894763/what-icons-are-available-to-use-when-displaying-a-notification-with-libnotify
    timeStr = time.strftime("%I:%M %p %d %b")
    cookie = subprocess.check_output(["/usr/games/fortune", "-s"])
    n = pynotify.Notification(timeStr, cookie, "/usr/share/app-install/icons/ktimer.png")
    n.set_timeout(1)
    n.show()
  else:
    print "problem initializing the pynotify module"
except Exception as exc:
  print "Exception", exc

然后,我使用安排了此时间cron。该crontab条目如下所示:

0,30 * * * * DISPLAY=:0 ./local/bin/notify_new.py

更新:添加了一种使用脉冲音频播放声音的方法


4

您可以使用简单的Python脚本,如下所示:

#!/usr/bin/python
import dbus
import sys

bus = dbus.SessionBus()

notify = bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications')
method = notify.get_dbus_method('Notify', 'org.freedesktop.Notifications')

method("wakeup", 1234, "", "The time is", "9PM", [], [], 1)

3

您可以使用dbus-send命令发送消息。有关更多详细信息,请参见man:dbus-send


3
感谢您指向的指针dbus-send。不幸的是,在这种情况下它不起作用,因为dbus-send无法创建具有API所需变体的字典
HRJ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.