Belirli kaynaklardan gelen belirli bildirim balonlarını geçici olarak nasıl filtreleyebilirim?


12

Sistemimi yeni posta aldığımda, ekranımda bir bildirim balonu görünecek şekilde yapılandırdım. Bu bazen uygun ve diğer zamanlarda dikkat dağıtıcı. Kullandığım gmail entegrasyonunu kaldırmadan, belirli bildirimlerin görüntülenip görüntülenmeyeceğini merkezi olarak değiştirmenin bir yolu var mı?

Başka bir deyişle, bildirim hizmetini kullanan "kayıtlı" uygulamaların bir listesini görmemi ve bunları etkin / devre dışı olarak değiştirmemi sağlayan bir uygulama (veya API) arıyorum. Veya, kaynak-uygulama-adı veya bildirim-kabarcık-içeriği ile eşleşmek ve bir eşleşme meydana gelirse, bildirimi engellemek için kullanılabilecek bir veya daha fazla düzenli ifade oluşturmamı sağlayan bir şey.


1
Gnome-Shell bildiriminin aksine, Ubuntu uygulamasında bildirim hizmetine kayıtlı değildir. Uygulamalarda sabit kodlanmış bildirim için libnotify kullanır. Bir bildirim tercihi varsa (gwibber, evrim, yıldırım vb.) Bildirimi uygulama tercihinden kapatmayı deneyebilirsiniz.
Khurshid Alam


@orschiro Bu, bahsettiğiniz (yakın zamanda gönderilmiş) sorunun bir kopyası değil - bu soru, diğerlerine izin verirken yalnızca belirli türdeki bildirimleri programlı olarak filtreleyebilmekle ilgilidir. Diğer soru özellikle tüm bildirimlerin sesini kısmakla ilgilidir.
Mark

Oh, haklısın. Bunu ilk bakışta kaçırdım. Teşekkür ederim!
orschiro

Yanıtlar:


2

Bunu d-bus seviyesinde filtreleyebilirsiniz, ancak çok fazla iş gibi görünüyor. OSD'nin nasıl çalıştığına dair fikir edinmek için önce bu gönderiye bakın

'Notify-send' komutunu ayrı bir konsolda göndermeden önce dbus-monitor'ü başlatın.

yöntem çağrısı göndereni =: 1.2450 -> dest = org.freedesktop.DBus seri = 5 yol = / org / freedesktop / DBus; arayüzü = org.freedesktop.DBus; elemanı = GetNameOwner
   string "org.freedesktop.Notifications"
yöntem çağrısı gönderen =: 1.2450 -> dest =: 1.41 seri = 6 yol = / org / freedesktop / Bildirimler; arayüzü = org.freedesktop.Notifications; elemanı = GetServerInformation
yöntem dönüş göndereni =: 1.41 -> dest =: 1.2450 answer_serial = 6
   dize "notify-osd"
   dize "Kanonik Ltd"
   dize "1.0"
   dize "1.1"
yöntem çağrısı gönderen =: 1.2450 -> dest =: 1.41 seri = 7 yol = / org / freedesktop / Bildirimler; arayüzü = org.freedesktop.Notifications; Üye = haberdar
   dize "bildir-gönder"
   uint32 0
   dize "/usr/share/pixmaps/debian-logo.png"
   string "Başlığım"
   string "Bazı metin gövdeleri"
   dizi [
   ]
   dizi [
      dict girişi (
         dize "aciliyet"
         değişken bayt 1
      )
   ]
   int32 -1

notify-osd dbus'ta yaşıyor

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

ancak /etc/dbus-1/system.d adresinde bu hizmet için ek bir kısıtlama yoktur.

Böylece, Bildirim olaylarını kaynaklarına göre filtreleyebilecek ve peşinde olduğunuz kontrole erişebilecek bir yapılandırma dosyası oluşturabilirsiniz. Soruna ve dbus spesifikasyonuna girmeden yapabileceğim en iyi şey bu. Umarım bu yardımcı olur, sonra ne yapacağınızı yapılandırmak daha kolay olmalıdır.


2

... ama çok fazla iş gibi görünüyor ...

En azından kaba bir genel çözüm için gerçekten çok kötü değil.

İşte cevabımdan geçen yılın (Eylül 2012) gönderisine kadar olan detayların bir kopyası

Ağ yöneticisinden bildirim nasıl devre dışı bırakılır .

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

string "NetworkManager"Engellemeyi belirlemek için istenen RE ile değiştirin .

Hangi RE kalıbının hangi aramanın eşleşeceğine dair bir fikir edinmek için:
dbus-monitor "interface='org.freedesktop.Notifications'"
ve bildirimler açılırken çıktıya bakın.

yani. notify-sendiletileri kaldırmak için grepbunun yerine bu satırı kullanın:

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

Uyarı :
killall notify-osdolmayan ayırt tamamen bekleyen mesaj bildirim yığını olup olmadığını önüne almadan temizlik bezi NetworkManagerveya notify-sendbildiren bir ajandır.

"Dürüst" bir çözümün, bir bildirim tasfiyesinin belirlenmesi ile daha sonra yapılması arasında olası yarış koşullarını hesaba katması gerekir.

Ayrıca, engellenecek rahatsız edici kişi geldiğinde bildirimler beklenirse, tümü temizlenir. Bu durum, en azından dbusbeklemedeki bildirimlerin bir kopyasını alarak ve daha notify-sendsonra tasfiyeden sonra istenenleri yeniden göndererek çözülebilir .

Bu biraz emek yoğun bir iş!

İdeal olarak, doğrudan dbus kullanımı

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

sadece istenen bildirimleri özel olarak hedeflemek, ne yazık ki belli değil ...

Başka bir cevap
org.freedesktop.Notifications.CloseNotification (uint id) DBus üzerinden tetiklenebilir ve çağrılabilir mi?
" aps" [1]ile en azından nasıl kullanılacağını notify-sendfakat ne yazık ki keyfi bildirimde bulunmadığını gösterir. bazı aps rağmen. pop-up bildirimleri kontrol etmek için özel arayüzlere sahip.

çapraz referanslar .:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.