Bookmark: Nút đóng trên notify-osd?
tham chiếu:
Các khái niệm đã được chứng minh, bash
giải pháp "vô hiệu hóa" pop-up OSD được hình thành và nở ra như sau:
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "member=Notify" | \
sed -u -e 's/.*/killall notify-osd/g' | \
bash
Điều này có thể được chạy trong một thiết bị đầu cuối hoặc như một nhiệm vụ nền - dừng nó và tiếp tục bật lên graffiti.
OP tuyên bố "Không, tôi không thể vô hiệu hóa nó". Nếu điều này có nghĩa là hệ thống thông báo KHÔNG bị vô hiệu hóa bởi trình đặt tên, thì giải pháp này phù hợp với điều đó. Hệ thống còn nguyên vẹn. Nếu nó có nghĩa là người đặt ra không biết làm thế nào, thì một lần nữa giải pháp thích hợp.
Chi tiết giải thích dòng dưới đây. Điều cuối cùng sẽ là nhúng mọi thứ vào (trong?) DBus, để gọi trực tiếp
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification(uint id)
Một giải pháp thô sơ rất, rất, rất ngây thơ, đó là bằng chứng của khái niệm hơn là thực tế, về cơ bản là "vô hiệu hóa" notify-osd
(hoặc ít nhất là tác dụng của nó). Đừng quên chấm dứt khi hoàn thành thử nghiệm! bởi ETX'ng với <ctrl> -C hoặc đóng cửa sổ đầu cuối, v.v. Nó thực hiện công việc của mình nhưng không thực tế lắm! vì không may, các công việc khác phải chịu đựng việc cố gắng làm ...
while true; do killall notify-osd; done
(để "nghe" hoạt động liên quan mà bạn có thể muốn " grep
ra"
notify-osd: no process found ....
)
Kiểm tra nó bằng cách chạy nó trong một cửa sổ đầu cuối và từ một cửa sổ đầu cuối khác thử làm:
notify-send "test 1" "now you see it not"
notify-send "test 2" "you see it not after test 1 evaporates"
notify-send "test 3" "finally after test 2 evaporates"
Dừng quá trình đầu tiên và sau đó thử lại các tin nhắn.
Có lẽ một notify-osd
chỉ số cho unity-panel-service
có thể gọi killall notify-osd
. Nút đóng phát hiện nóng sẽ không (& không thể!) Nằm trong cửa sổ thông báo nhưng nó sẽ có sẵn trên bảng chỉ báo. Điều này hoàn toàn không phù hợp với khái niệm tương tự mà Unity dành cho windows. Việc sử dụng thanh trên cùng để đóng thông báo tương tự như cách Unity lưu các menu cửa sổ với các hộp maxi, mini, maxi vào thanh menu trên cùng.
Một giải pháp thực sự tao nhã sẽ có chỉ báo xuất hiện khi DBus hoạt động cho các bảng notify-osd
kê khai và biến mất khi không có thông báo đang chờ xử lý.
Nó cũng có thể giải quyết vấn đề về thông báo xếp chồng - mỗi lần chỉ có thể nhìn thấy một thông báo và nếu nhiều thông báo đang chờ xử lý thì mỗi thông báo phải bốc hơi trước khi xuất hiện tiếp theo - chúng thường không thể được nhìn thấy đồng thời.
DBus-monitor
'ng của notify-osd
giao diện thông báo tuy nhiên sẽ cung cấp ghi nhận trực tiếp của cấp phát thông báo ngay cả khi có một đã hiển thị. (VÀ nếu killall notify-osd
được ban hành ngay lập tức - poof poof!)
Chọn tất cả, kéo và thả vào cửa sổ đầu cuối các bài kiểm tra sau:
notify-send "test 1" "now you see it"
notify-send "test 2" "you see it after test 1 evaporates"
notify-send "test 3" "finally after test 2 evaporates"
bây giờ làm tương tự với p {r} oof:
notify-send "test 1" "now you don't"
notify-send "test 2" "you see it not! after test 1 evaporates"
notify-send "test 3" "NOT finally after test 2 evaporates"
killall notify-osd
notify-send "gonzo" "gone nada zip zilch"
Các killall notify-osd
giải pháp được đề xuất sẽ được kích hoạt khi DBus monitor
phát hiện hoạt động graffiti pop-up OSD.