Python
清除/修改以前的 libnotify 通知?
我寫了一個腳本來生成這樣的通知:
notify-send -i audio-card "Transferring audio playback to speakers." \ "Audio playback has been transferred to the analog output speaker system."
有沒有辦法從命令行或 Python 清除或替換這些通知?本質上,我有一個在兩個 PulseAudio 接收器之間切換的腳本,如果使用者快速切換,我想清除以前的這種類型的通知,用更新的文本替換它們。
gdbus
在 CLI 中,您可以通過/顯示和關閉通知彈出視窗qdbus
。這是如何使用的
gdbus
:gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.Notify my_app_name 42 audio-card "Message" "Body" [] {} 20
這將輸出如下內容:
(uint32 72,)
72
作為通知ID
。現在您知道了,ID
您可以使用以下命令關閉彈出視窗:gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.CloseNotification 72
現在,如果您需要
ID
稍後,只需在呼叫時將其寫入文件Notify
:gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.Notify my_app_name 42 audio-card "Message" "Body" [] {} 20 | sed 's/[^ ]* //; s/,.//' > /tmp/last_id
並在您想關閉彈出視窗時從那裡獲取它:
gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.CloseNotification $(cat /tmp/last_id)
PS 我在 Gnome 3 上,通過,
notify-send
等發送的通知僅持續 5 秒,無論選項如何(這是 Gnome 3 中的預設行為,不要問我為什麼)。此外,它們不會疊加:Gnome 一次只顯示一個通知。所以我不能用幾個彈出視窗進行測試,但它應該可以工作。pynotify``libnotify``time