notify-pythonでpynotify.Notificationオブジェクトのメンバ関数attach_to_status_icon()が使えない問題とその対処
cpufreqd-manual-systrayというツールを作成中、
[id:conc7996:20080109:1199884267]
を参考に、システムトレイのアイコンからバルーン通知が出るようにするのを試すため、書かれているコードをコピペして実行してみた。すると
n.attach_to_status_icon(tray) AttributeError: 'pynotify.Notification' object has no attribute 'attach_to_status_icon'
と出て正常に処理されなかった。
調べたところ、この問題の対処は、ビルド前にファイルsrc/pynotify.cを一度削除することで正しいファイルを再生成させるという、非常にシンプルなものだった。
2008/8/21現在、Gentoo Linuxのパッケージ(dev-python/notify-python-0.1.1)でもこの現象が起こるものの、上記URLの修正をebuildファイルに対して行ったものをローカルOverlayに配置してインストールを行うことでこの問題は解決し、無事にアイコンからのバルーンが出るようになった。
cpufreqd-manual-systrayの中では
(先頭) try: import pynotify pynotify.init("cpufreqd-manual-systray") have_pynotify = True except: have_pynotify = False (実行部分) try: n.attach_to_status_icon(self.tray) n.set_timeout(5000) n.show() except AttributeError: have_pynotify = False
のようにして、notify-pythonの検出に成功した場合でも、この不具合を含んだ状態で使用したときには(例外が出た時点で)バルーンを使用しないように真偽値have_pynotifyをFalseにして、検出失敗時と同じ扱いにしてしまっている。
(2008/9/10)この不具合は、公式Portageツリー上のnotify-python-0.1.1-r1にて修正された。
関連URL:
使用したバージョン:
- notify-python 0.1.1