타이머 기반 알림은 어떻게 설정합니까?


9

강박적인 컴퓨터 사용자이기 때문에 하루 종일 그 앞에 있습니다. 내 광고 작업을 할 때 때때로 시간을 잃어 버립니다. 팝업 알림이나 재생중인 사운드 또는 둘 다를 통해 현재 시간을 알려주는 알림 서비스가 필요합니다.

팝업의 경우 DBus API 를 사용하는 Free Desktop 알림 표준을 찾았습니다 .

그래픽 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 :) (하지만 진지하게-좋은 질문입니다)
Rafał Cieślak

답변:


7

사용할 수 없었기 때문에 dbus-send대신 파이썬 스크립트를 작성했습니다. 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.