将列表中的上一个通知标记为已读?

将列表中的上一个通知标记为已读?

我正在运行一项服务,该服务将根据情况每 5 分钟通知一次。

这些通知很重要,但除了每个弹出窗口之外,我只想看到通知列表中最新的通知,所以我尝试使用notify-send和zenity的唯一标识符来替换之前的通知。

我能做的最好的事情就是更换当前的弹出窗口通知,如果尚未超时,但它们仍然堆叠在通知列表中。

在此处输入图片描述

或者,我可以让通知仅以弹出窗口的形式出现,而不会出现在列表中,但我希望在我离开后返回时可以使用此功能。

新的通知是否可以删除或者替换列表中的先前的通知?

notify () {
  local message="$1"
  local id="999123"

  # Check if a notification exists to cancel:
  if notify-send --query "$id"; then
    notify-send --cancel "$id"
  fi

  notify-send "$id" "$message"
  #notify-send --hint int:transient:1 "$message"
}

message="New notification"
notify "$message"

我曾短暂涉猎过 dbus,但由于某种原因,还无法生成基本的测试通知。

dbus-send --dest=org.freedesktop.ExampleName               \
            /org/freedesktop/sample/object/name              \
            org.freedesktop.ExampleInterface.ExampleMethod   \
            int32:47 string:'hello world' double:65.32       \
            array:string:"1st item","next item","last item"  \
            dict:string:int32:"one",1,"two",2,"three",3      \
            variant:int32:-8                                 \
            objpath:/org/freedesktop/sample/object/name

Ubuntu 22.04 和 23.10。

相关内容