查看最近的 GNOME 通知

查看最近的 GNOME 通知

是否有一个应用程序/命令可以让我查看最近的通知?

最好是基于文本的。

我还想查看每个通知的通知超时时间。;)

答案1

没有任何命令可以检索之前发送的消息桌面通知规范所以我的猜测是它们在检索后被丢弃了。

但是您可以使用dbus-monitor命令来观察这些,如下所示:

$ dbus-monitor "interface='org.freedesktop.Notifications'"

发送简单通知:

$ notify-send "Hello there"

结果包含以下信息:

method call time=1555095758.597788 sender=:1.385 -> destination=:1.386 serial=6 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1555095758.601101 sender=:1.385 -> destination=:1.386 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "notify-send"
   uint32 0
   string ""
   string "Hello there"
   string ""
   array [
   ]
   array [
      dict entry(
         string "urgency"
         variant             byte 1
      )
   ]
   int32 -1
signal time=1555095765.734845 sender=:1.386 -> destination=:1.385 serial=15 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=NotificationClosed
   uint32 1
   uint32 1

时间字段是UNIX时间戳,可以这样翻译:

$ date -d @1555095765
Fri Apr 12 21:02:45 CEST 2019

答案2

答案3

如果您想对这些数据进行处理,您可能需要一些编码,而不仅仅是命令行 stdout,因此我在这里使用 python,您可以根据需要进行修改。这里已经有一个类似的主题:使用 DBus 监听传入的 libnotify 通知

我正在复制一些Python从那里获取代码并进行一些(python3)更新:

import dbus
from dbus.mainloop.glib import DBusGMainLoop

def notifications(bus, message):
    print(message.get_args_list())
    
DBusGMainLoop(set_as_default=True)

bus = dbus.SessionBus()
bus.add_match_string_non_blocking("eavesdrop=true, interface='org.freedesktop.Notifications', member='Notify'")
bus.add_message_filter(notifications)

mainloop = glib.MainLoop()
mainloop.run()

相关内容