タイマーベースの通知を設定するにはどうすればよいですか?


9

強迫的なコンピューターユーザーである私は、一日中目の前にいます。コンプで作業していると、時間の追跡ができなくなることがあります。ポップアップ通知またはサウンドの再生、あるいはその両方によって、現在の時刻を通知する通知サービスが必要です。

ポップアップについては、DBus APIを使用する無料デスクトップ通知標準を見つけました。

グラフィカルなDBUSエクスプローラーであるDFeetを使用して通知を作成することができました。次の引数を使用しました。

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

これまでのところ問題なく動作しますが、ここからさらに遠くへ移動するにはどうすればよいですか?

  • これをコマンドラインから呼び出すにはどうすればよいですか?
  • このコマンドを自動化するにはどうすればよいですか?cron時間ベースのアクションを自動化する推奨方法はまだありますか?
  • ポップアップと一緒にサウンドを再生するにはどうすればよいですか?FreeDesktop APIまたはメディアプレーヤーのどちらを使用しますか?

完全な解決策は高く評価され、おそらく他の人にも役立つでしょう。


1
ポイント1、2に関しては、dbus-send使用するアプリである可能性があり、はいcronが推奨される方法です。
enzotib 2011

dbus-sendこのAPIに必要な一部のパラメーターをサポートしていないため、機能していません。調べていpynotifyます。
HRJ、2011

現在の時刻についてあなたに通知するために、あなたのコンピュータを必要とするための1 :)(真剣に-良い質問をだ)
ラファウCieślak

回答:


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

次に、を使用してこれをスケジュールしましたcroncrontabエントリのルックスが好き:

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-sendAPIが必要とするバリアントを含む辞書を作成できないため、この場合は機能しません
HRJ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.