Làm cách nào để thiết lập thông báo dựa trên bộ đếm thời gian?


9

Là một người sử dụng máy tính bắt buộc, tôi đứng trước nó cả ngày. Đôi khi tôi mất dấu thời gian khi tôi đang làm việc trên comp của mình. Tôi cần một dịch vụ thông báo để thông báo cho tôi về thời điểm hiện tại, bằng thông báo bật lên hoặc âm thanh đang được phát hoặc cả hai.

Đối với cửa sổ bật lên, tôi đã tìm thấy tiêu chuẩn thông báo Máy tính để bàn miễn phí sử dụng API DBus .

Tôi đã có thể tạo một thông báo bằng DFeet , một trình thám hiểm DBUS đồ họa. Tôi đã sử dụng các đối số sau đây:

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

Nó hoạt động tốt cho đến nay, nhưng làm thế nào tôi có thể đưa nó đi xa hơn từ đây?

  • Làm thế nào để tôi gọi điều này từ dòng lệnh?
  • Làm thế nào để tôi tự động hóa lệnh này? Là cronvẫn là cách khuyến khích của việc tự động hóa các hoạt động dựa trên thời gian?
  • Làm cách nào để phát âm thanh cùng với cửa sổ bật lên? Hoặc thông qua API FreeDesktop hoặc thông qua trình phát đa phương tiện?

Một giải pháp hoàn chỉnh sẽ được đánh giá cao và có lẽ cũng hữu ích cho những người khác.


1
Về các điểm 1, 2, dbus-sendcó thể là ứng dụng để sử dụng và có cronlà cách được đề xuất.
enzotib

dbus-sendkhông hoạt động vì nó không hỗ trợ một số tham số theo yêu cầu của API này. Tôi đang nhìn vào pynotify.
HRJ

+1 vì cần máy tính của bạn thông báo cho bạn về thời gian hiện tại :) (nhưng nghiêm túc - đó là một câu hỏi hay)
Rafał Cieślak

Câu trả lời:


7

Vì tôi không thể sử dụng dbus-sendnên tôi đã viết một kịch bản python. Mô-đun pynotify bên trong sử dụng dbusAPI. Đối với những cú đá thêm tôi đã thêm một cookie may mắn trong tin nhắn. Hoạt động như một lá bùa:

#!/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

Sau đó tôi đã lên lịch này bằng cách sử dụng cron. Các crontabhình entry thích:

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

Cập nhật : Đã thêm phương thức phát âm thanh bằng âm thanh xung


4

Bạn có thể sử dụng một tập lệnh Python đơn giản, như thế này:

#!/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

Bạn có thể gửi tin nhắn bằng lệnh dbus-send. Xem người đàn ông: dbus-send để biết thêm chi tiết về điều đó.


3
Cảm ơn con trỏ đến dbus-send. Thật không may, nó không hoạt động trong trường hợp này vì dbus-sendkhông thể tạo từ điển với các biến thể mà API yêu cầu
HRJ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.