... mais cela ressemble à beaucoup de travail ...
Ce n'est pas vraiment trop mal, du moins pour une solution générique brute.
Voici une copie des détails de ma réponse au poste de l'an dernier (septembre 2012) dans
Comment désactiver la notification du gestionnaire de réseau .
dbus-monitor "interface='org.freedesktop.Notifications'" \
| grep --line-buffered 'string "NetworkManager"' \
| sed -u -e 's/.*/killall notify-osd/g' \
| bash
Remplacez string "NetworkManager"
par le RE souhaité pour déterminer le blocage.
Pour avoir une idée de la correspondance du modèle RE à rechercher pour l'exécution:
dbus-monitor "interface='org.freedesktop.Notifications'"
et regardez la sortie pendant que les notifications apparaissent.
c'est à dire. pour supprimer notify-send
également les messages, utilisez grep
plutôt cette ligne:
| grep --line-buffered 'string "NetworkManager"\|string "notify-send"' \
Avertissement :
killall notify-osd
est non discriminatoire et efface complètement la pile de notification de tous les messages en attente, que l'agent notifiant soit NetworkManager
ou notify-send
non.
Une solution «honnête» doit tenir compte des conditions de concurrence possibles entre la détermination d'une purge de notification et sa réalisation, une autre notification doit apparaître et ne pas être purgée avec le reste.
De plus, si des notifications sont en attente lorsque la personne à bloquer bloquée arrive, elles seront toutes purgées. Cette situation peut au moins être résolue en effectuant une copie des dbus
notifications en attente, puis en réémettant celles souhaitées avec notify-send
après la purge.
C'est un peu de travail à forte intensité de main d'œuvre!
Idéalement, l'utilisation directe de dbus
method void org.freedesktop.Notifications.CloseNotification(uint id) [1]
cibler uniquement les notifications souhaitées, ce n'est malheureusement pas évident ... mais ...
Une autre réponse:
org.freedesktop.Notifications.CloseNotification (uint id) peut-il être déclenché et appelé via DBus?
montre comment utiliser [1]
, au moins avec notify-send
, mais malheureusement pas pour notifier des aps arbitraires. bien que quelques aps. ont des interfaces personnalisées pour contrôler les notifications contextuelles.
références croisées: