您可以使用脚本来在打开消息后立即将其关闭(延迟0.5秒,打开消息窗口会花费一些时间)。这不是完美的,因为它关闭了窗口堆栈中的最后一个通知窗口。因此,如果错误通知与消息摘要“ Mouse battery low”的错误通知几乎同时出现,则几乎没有机会关闭该错误通知。
相关性:
sudo apt install python-dbus wmctrl -y
这个是给xfce的。如果要使用它,则必须对其进行微调以使其成为gnome。对于xfce,下一个命令关闭最后一个通知窗口:
wmctrl -i -c $(wmctrl -lx | awk '/xfce4-notifyd\.Xfce4-notifyd/{print $1}' | tail -n 1)
awk使用窗口类xfce4-notifyd过滤窗口。
对于mate-desktop窗口类是mate-notification-daemon,我不确定Gnome。
在脚本中为您的DE更改该行。
保存下一个脚本,使其可执行并设置为在启动时运行。
#!/usr/bin/env python
import glib
import dbus
import os
import time
from dbus.mainloop.glib import DBusGMainLoop
def close_notification(bus, message):
keys = ["app_name", "replaces_id", "app_icon", "summary",
"body", "actions", "hints", "expire_timeout"]
args = message.get_args_list()
if len(args) == 8:
notification = dict([(keys[i], args[i]) for i in range(8)])
if notification["summary"] == "Mouse battery low":
time.sleep(.5)
# Adapt next command for your DE
os.system("wmctrl -i -c $(wmctrl -lx | awk '/xfce4-notifyd\.Xfce4-notifyd/{print $1}' | tail -n 1)")
loop = DBusGMainLoop(set_as_default=True)
session_bus = dbus.SessionBus()
session_bus.add_match_string_non_blocking("type='method_call',interface='org.freedesktop.Notifications',member='Notify',eavesdrop=true")
session_bus.add_message_filter(close_notification)
glib.MainLoop().run()