メッセージを開くとすぐに閉じるスクリプトを使用できます(0.5秒の遅延で、メッセージウィンドウが開くのに時間がかかります)。これは、ウィンドウスタックの最後の通知ウィンドウを閉じるため、完全ではありません。そのため、「マウスのバッテリー残量が少なくなっています」というメッセージの概要とほぼ同時に表示される場合、誤った通知を閉じる可能性がわずかにあります。
依存関係:
sudo apt install python-dbus wmctrl -y
これはxfce用です。それがあなたが使用するものであるならば、あなたはノームのためにそれを微調整する必要があるでしょう。xfceの場合、nextコマンドは最後の通知ウィンドウを閉じます。
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()