Bagaimana cara mengatur notifikasi berbasis timer?

9

Menjadi pengguna komputer yang kompulsif, saya berada di depannya sepanjang hari. Saya kadang-kadang lupa waktu ketika saya mengerjakan comp. Saya memerlukan layanan notifikasi untuk mengingatkan saya tentang waktu sekarang, baik dengan notifikasi popup atau suara yang sedang diputar atau keduanya.

Untuk munculan, saya menemukan standar pemberitahuan Desktop Gratis yang menggunakan DBus API .

Saya dapat membuat pemberitahuan menggunakan DFeet , penjelajah DBUS grafis. Saya menggunakan argumen berikut:

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

Sejauh ini berfungsi dengan baik, tetapi bagaimana saya bisa mengambilnya lebih jauh dari sini?

  • Bagaimana saya memohon ini dari baris perintah?
  • Bagaimana cara mengotomatiskan perintah ini? Apakah cronmasih cara yang disarankan untuk mengotomatisasi tindakan berbasis waktu?
  • Bagaimana cara memainkan suara bersama dengan popup? Baik melalui API FreeDesktop atau melalui media player?

Solusi lengkap akan dihargai dan mungkin bermanfaat bagi orang lain juga.

HRJ
sumber
1
Mengenai poin 1, 2, dbus-sendbisa menjadi aplikasi untuk digunakan, dan ya cronadalah cara yang disarankan.
enzotib
dbus-sendtidak berfungsi karena tidak mendukung beberapa parameter yang diperlukan oleh API ini. Saya melihat ke dalam pynotify.
HRJ
+1 karena membutuhkan komputer untuk memberi tahu Anda tentang waktu saat ini :) (tapi serius - itu pertanyaan yang bagus)
Rafał Cieślak

Jawaban:

7

Karena saya tidak bisa menggunakan, dbus-sendsaya menulis skrip python. Modul pynotify secara internal menggunakan dbusAPI. Untuk tendangan tambahan saya menambahkan kue keberuntungan dalam pesan. Bekerja seperti pesona:

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

Saya kemudian menjadwalkan ini menggunakan cron. The crontabentri terlihat seperti:

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

Pembaruan : Menambahkan metode untuk memutar suara menggunakan audio pulsa

HRJ
sumber
4

Anda dapat menggunakan skrip Python sederhana, seperti ini:

#!/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)
mspanc
sumber
3

Anda dapat mengirim pesan menggunakan perintah dbus-send. Lihat man: dbus-kirim untuk detail lebih lanjut tentang itu.

Jo-Erlend Schinstad
sumber
3
Terima kasih atas penunjuknya dbus-send. Sayangnya, ini tidak berfungsi dalam kasus ini karena dbus-sendtidak dapat membuat kamus dengan varian yang dibutuhkan oleh API
HRJ