Notify-Send
防止“通知發送”堆疊
我寫了這個腳本,當按下增加音量按鈕以顯示帶有“通知發送”的桌面通知時。
按下按鈕時:
notify-send "Current volume 'pamixer --get-volume'"
有沒有辦法防止通知堆疊並只顯示最新通知?
通知 api 有一種方法可以指定目前通知的 id,該通知應該更新而不是創建新的彈出視窗,但
notify-send
不提供此功能。如果你願意使用少量的python,你可以在製作通知時檢索它的id,然後再嘗試更新那個id。將以下 python2 程式碼放入 PATH 中的目錄中的文件中,saymynotify-send
and dochmod +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
,程序列印的,您將不得不在以後的消息中使用它。因此,基本上在 shell 腳本中,您只需記住程序的輸出並每次都重用它。