ベストアンサー1
通知APIには、新しいポップアップを生成する代わりに更新する必要がある現在の通知のIDを指定する方法がありますが、notify-send
この方法は提供されません。少しPythonを使用したい場合は、通知を生成するときに通知IDを取得してから、後でそのIDを更新してみることができます。次のpython2コードをPATHディレクトリのファイルに入れて、次のように話してmynotify-send
実行しますchmod +x mynotify-send
。
#!/usr/bin/python
import argparse, gi
#gi.require_version('Notify', '0.7')
from gi.repository import Notify
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('-m', '--message', default="body")
parser.add_argument('-i', '--id', type=int)
return parser.parse_args()
def run(myid,message):
Notify.init("mynote")
obj = Notify.Notification.new("my summary", message)
obj.set_timeout(60*1000)
if myid:
obj.set_property('id', myid)
obj.show()
newid = obj.get_property('id')
print newid
else:
obj.show()
myid = obj.get_property('id')
print myid
def main():
options = parse_args()
run(options.id, options.message)
main()
インストールpython-gobject
も必要です。走るとき
mynotify-send -m 'message 1'
通知はポップアップとして表示されますが、標準出力にIDも印刷する必要があります。通常、これは通知の数の一部です6
。その後、次のIDを追加して既存のポップアップのメッセージを変更できます。
mynotify-send --id 6 -m 'message 2'
ポップアップが存在する限り、これを行うことができます。ポップアップが消えた後、次のメッセージは新しいIDを持ちます。たとえば、7
プログラムはそのIDを印刷するため、将来のメッセージでそれを使用する必要があります。したがって、デフォルトでは、シェルスクリプトはプログラムの出力を覚えて毎回再利用できます。