Wie kann ich bestimmte Benachrichtigungsblasen aus bestimmten Quellen vorübergehend herausfiltern?

12

Ich habe mein System so konfiguriert, dass auf meinem Bildschirm eine Sprechblase angezeigt wird, wenn ich neue E-Mails erhalte. Dies ist manchmal praktisch und zu anderen Zeiten ablenkend. Gibt es eine Möglichkeit, zentral umzuschalten, ob bestimmte Arten von Benachrichtigungen angezeigt werden, ohne die von mir verwendete Google Mail-Integration deinstallieren zu müssen?

Mit anderen Worten, ich suche nach einer Anwendung (oder API), mit der ich entweder eine Liste der "registrierten" Apps anzeigen kann, die den Benachrichtigungsdienst verwenden, und diese als aktiviert / deaktiviert umschalte. Oder etwas, mit dem ich einen oder mehrere reguläre Ausdrücke erstellen kann, die verwendet werden können, um den Namen der Quellanwendung oder den Inhalt der Benachrichtigungsblase abzugleichen, und wenn eine Übereinstimmung auftritt, um die Benachrichtigung zu blockieren.

Kennzeichen
quelle
1
Im Gegensatz zur Gnome-Shell-Benachrichtigung ist die On Ubuntu-Anwendung nicht im Benachrichtigungsdienst registriert. Es verwendet libnotify für Benachrichtigungen, die in Anwendungen fest codiert sind. Sie können versuchen, die Benachrichtigung von der Anwendungseinstellung auszuschalten, wenn eine Benachrichtigungseinstellung vorliegt (z. B. gwibber, evolution, thunderbird usw.).
Khurshid Alam
@orschiro Dies ist kein Duplikat der (kürzlich veröffentlichten) Frage, auf die Sie sich bezogen haben. Bei dieser Frage geht es darum, dass Sie nur bestimmte Arten von Benachrichtigungen programmgesteuert filtern können, während andere durchgelassen werden. Bei der anderen Frage geht es speziell um das Stummschalten aller Benachrichtigungen.
Mark
Oh, du hast Recht. Das habe ich auf den ersten Blick verpasst. Vielen Dank!
Orschiro

Antworten:

2

Sie können dies möglicherweise auf der D-Bus-Ebene filtern, aber es sieht nach viel Arbeit aus. Sehen Sie sich zuerst diesen Beitrag an, um einen Einblick in die Funktionsweise von osd zu erhalten

Starten Sie dbus-monitor, bevor Sie den Lauf 'notify-send' auf einer separaten Konsole senden.

Methodenaufruf sender =: 1.2450 -> dest = org.freedesktop.DBus serial = 5 path = / org / freedesktop / DBus; interface = org.freedesktop.DBus; member = GetNameOwner
   Zeichenfolge "org.freedesktop.Notifications"
Methodenaufruf sender =: 1.2450 -> dest =: 1.41 serial = 6 path = / org / freedesktop / Notifications; interface = org.freedesktop.Notifications; member = GetServerInformation
Methode return sender =: 1.41 -> dest =: 1.2450 reply_serial = 6
   Zeichenfolge "notify-osd"
   Zeichenfolge "Canonical Ltd"
   Zeichenfolge "1.0"
   Zeichenfolge "1.1"
Methodenaufruf sender =: 1.2450 -> dest =: 1.41 serial = 7 path = / org / freedesktop / Notifications; interface = org.freedesktop.Notifications; member = Benachrichtigen
   Zeichenfolge "benachrichtigen-senden"
   uint32 0
   Zeichenfolge "/usr/share/pixmaps/debian-logo.png"
   Zeichenfolge "Mein Titel"
   Zeichenfolge "Textkörper"
   Array [
   ]
   Array [
      dict entry (
         Zeichenfolge "Dringlichkeit"
         Variantenbyte 1
      )
   ]
   int32 -1

notify-osd lebt auf dbus

dpkg -L benachrichtige-osd
/usr/share/dbus-1/services/org.freedesktop.Notifications.service

Es gibt jedoch keine zusätzlichen Einschränkungen für diesen Dienst in /etc/dbus-1/system.d

So können Sie möglicherweise eine Konfigurationsdatei erstellen, mit der Sie Benachrichtigungsereignisse basierend auf ihrer Quelle herausfiltern und die gewünschte Steuerung erreichen können. Das ist das Beste, was ich tun kann, ohne mich mit dem Problem und der dbus-Spezifikation auseinanderzusetzen. Ich hoffe, das hilft, was Sie suchen, sollte zunächst einfacher zu konfigurieren sein.

ppetraki
quelle
2

... aber es sieht nach viel Arbeit aus ...

Es ist nicht wirklich schlecht, zumindest für eine grobe generische Lösung.

Hier ist eine Kopie der Details meiner Antwort auf den Post vom letzten Jahr (September 2012)

So deaktivieren Sie die Benachrichtigung vom Netzwerkmanager .

dbus-monitor "interface='org.freedesktop.Notifications'"                \
| grep --line-buffered  'string "NetworkManager"'                       \
| sed -u -e  's/.*/killall notify-osd/g'                                \
| bash

Ersetzen string "NetworkManager"mit dem gewünschten RE Blockierung zu bestimmen.

So erhalten Sie eine Vorstellung davon, welche RE-Musterübereinstimmung ausgeführt werden soll:
dbus-monitor "interface='org.freedesktop.Notifications'"
und sehen Sie sich die Ausgabe an, während die Benachrichtigungen angezeigt werden.

dh notify-sendVerwenden Sie grepstattdessen diese Zeile , um auch Nachrichten zu entfernen :

| grep --line-buffered  'string "NetworkManager"\|string "notify-send"'  \

Nachteil :
killall notify-osdnicht-Diskriminieren und vollständig wischt die Benachrichtigungs Stapel aller ausstehenden Nachrichten unabhängig davon , ob NetworkManageroder notify-sendist der anmeldenden Agenten.

Eine "ehrliche" Lösung muss mögliche Rennbedingungen berücksichtigen, wenn zwischen der Bestimmung einer Benachrichtigungsbereinigung und dem anschließenden Ausführen eine weitere Benachrichtigung eingeht, die eingeblendet und nicht mit dem Rest bereinigt werden soll.

Wenn Benachrichtigungen anstehen, wenn die zu blockierende Benachrichtigung eingeht, werden alle Benachrichtigungen gelöscht. Diese Situation kann zumindest dadurch gelöst werden, dass eine Kopie der dbusausstehenden Benachrichtigungen erstellt wird und die gewünschten Benachrichtigungen notify-sendnach der Bereinigung erneut ausgestellt werden.

Dies ist ein bisschen manuell arbeitsintensive Arbeit!

Ideal ist der direkte Einsatz von dbus

method void org.freedesktop.Notifications.CloseNotification(uint id)     [1]

es ist leider nicht selbstverständlich, genau auf die gewünschten Benachrichtigungen abzuzielen ... aber ...

Eine andere Antwort
Kann org.freedesktop.Notifications.CloseNotification (uint id) über DBus ausgelöst und aufgerufen werden?
zeigt, wie man [1]zumindest mit notify-send, aber leider nicht mit willkürlich benachrichtigenden aps umgeht. obwohl einige aps. Benutzerdefinierte Schnittstellen zur Steuerung von Popup-Benachrichtigungen.

Querverweis:

troll la la la
quelle