web-dev-qa-db-ja.com

1つのアプリケーションでNotifyOSDをブロックすることは可能ですか?

NotifyOSD(またはXFCE-Notify)が特定のアプリケーションからの通知を表示しないようにする方法はありますか?

1
Borsook

はい。ただし、注意が必要です... killall notify-osdは積極的です...これを適切に行うには、問題の通知がkillall notify-osdをトリガーする前に保留中の通知を保存してから、時系列の整合性を維持しながら通知を復元する必要があります。

参照:
notify-osdの閉じるボタン?
次の場合は便利です: org.freedesktop.Notifications.CloseNotification(uint id)をDBus経由でトリガーおよび呼び出すことができますか?

D-Busを監視して、選択したアプリケーションから発信された削除の通知を見つけます。このスクリプトをターミナルで、またはバックグラウンドタスクとして実行し、ap_name_to_silenceをスロットリング用に選択したapの名前に変更します。

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

dbus-monitor "interface='org.freedesktop.Notifications'"の基本的なNotify構造は

メソッド呼び出しsender =:1.278-> dest =:1.151 serial = 7 path =/org/freedesktop/Notifications; interface = org.freedesktop.Notifications; member = Notification 
    文字列 "notify-send"                          これは app_name
 uint320これは replaces_id
文字列 ""これは app_icon
文字列「テスト」これは 概要
文字列 ""これは 
配列[これは 行動 ペアリスト
 
配列[これは ヒント 辞書
 dict entry(
 string "urgency" 
バリアントバイト1 
)
 
 int32-1これは expire_timeout

"silenced notification"が存在しないことを示す次のメッセージを使用してサイレンサーをテストします。

 notify-「sumairy」「ephemeralcorporatecontent」を送信します。睡眠5; 
 
 gdbus call --session\
-d org.freedesktop.Notifications\
-o/org/freedesktop/Notifications\
-m org.freedesktop.Notifications.Notify\
 ap_name_to_silence                      \
 42\
 gtk-dialog-info\
 "ターゲット"\
 "無音通知"\
 []\
 {}\
 5000 
 
 notify-「augendairy」「ephemeralcorporatecontent-ie。whitemoojuice\!」 
 
 gdbus call --session\
-d org.freedesktop.Notifications\
-o/org/freedesktop/Notifications\
-m org.freedesktop.Notifications.Notify\
 my_app_name\
 42\
 gtk-dialog-info\
 "Summary"\
 "しかし今は冬ではなく秋です」\ 
 []\
 {}\
 5000 

ブックマーク:
1つのアプリケーションでNotifyOSDをブロックすることは可能ですか?

2
George Rowell