... แต่ดูเหมือนว่าจะทำงานมาก ...
มันไม่ได้เลวร้ายนักอย่างน้อยสำหรับวิธีแก้ปัญหาทั่วไปแบบหยาบ
นี่คือสำเนาของรายละเอียดจากคำตอบของฉันไปยังโพสต์ของปีที่แล้ว (กันยายน 2555)
วิธีการปิดการใช้งานการแจ้งเตือนจากเครือข่ายผู้จัดการ
dbus-monitor "interface='org.freedesktop.Notifications'" \
| grep --line-buffered 'string "NetworkManager"' \
| sed -u -e 's/.*/killall notify-osd/g' \
| bash
แทนที่string "NetworkManager"
ด้วย RE ที่ต้องการเพื่อกำหนดการบล็อก
หากต้องการทราบว่ารูปแบบ RE ใดที่ตรงกับการค้นหา:
dbus-monitor "interface='org.freedesktop.Notifications'"
และดูผลลัพธ์ในขณะที่การแจ้งเตือนปรากฏขึ้น
กล่าวคือ หากต้องการลบnotify-send
ข้อความให้ใช้grep
บรรทัดนี้แทน:
| grep --line-buffered 'string "NetworkManager"\|string "notify-send"' \
Caveat :
killall notify-osd
เป็นการไม่แบ่งแยกและจะลบการแจ้งเตือนทั้งหมดของข้อความที่รอดำเนินการอย่างสมบูรณ์โดยไม่คำนึงว่าตัวแทนนั้นจะแจ้งNetworkManager
หรือไม่notify-send
ก็ตาม
วิธีแก้ปัญหาที่ "ซื่อสัตย์" จำเป็นต้องคำนึงถึงสภาพการแข่งขันที่เป็นไปได้เมื่อจำเป็นต้องทำการล้างการแจ้งเตือนระหว่างนั้นและทำการแก้ไขการแจ้งเตือนอื่นจะปรากฏขึ้นที่ควรจะปรากฏขึ้นและไม่ได้ถูกกำจัดส่วนที่เหลือ
นอกจากนี้หากการแจ้งเตือนอยู่ระหว่างดำเนินการเมื่อมีการละเมิดที่จะถูกบล็อกเข้ามาพวกเขาทั้งหมดจะถูกกำจัด อย่างน้อยสถานการณ์นี้สามารถแก้ไขได้โดยการทำสำเนาการdbus
แจ้งเตือนที่รอดำเนินการจากนั้นออกรายการที่ต้องการอีกครั้งnotify-send
หลังจากการล้างข้อมูล
นี่เป็นงานที่ต้องใช้แรงงานคนมาก!
เป็นการดีที่การใช้ dbus โดยตรงของ
method void org.freedesktop.Notifications.CloseNotification(uint id) [1]
หากต้องการกำหนดเป้าหมายเฉพาะการแจ้งเตือนที่ต้องการเป็นที่น่าเสียดายที่ไม่ชัดเจน ... อย่างไรก็ตาม ...
คำตอบอื่น
สามารถ org.freedesktop.Notifications.CloseNotification (uint id) สามารถเรียกใช้และเรียกใช้ผ่าน DBus ได้หรือไม่
แสดงวิธีใช้[1]
อย่างน้อยด้วยnotify-send
แต่น่าเสียดายที่ไม่ได้แจ้งให้ aps โดยพลการ แม้ว่าบางแอป มีอินเทอร์เฟซแบบกำหนดเองเพื่อควบคุมการแจ้งเตือนแบบผุดขึ้น
ข้าม refs: