Python

清除/修改以前的 libnotify 通知?

  • May 11, 2013

我寫了一個腳本來生成這樣的通知:

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

引用自:https://unix.stackexchange.com/questions/75386