Yer imi: notify-osd üzerindeki Kapat düğmesi?
ref:
Kanıtlanmış kavramlar, bash
'd OSD pop-up grafiti “devre dışı” çözümü olarak tasarlandı ve şöyle tasarlandı:
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "member=Notify" | \
sed -u -e 's/.*/killall notify-osd/g' | \
bash
Bu bir terminalde veya arka plan görevi olarak çalıştırılabilir - durdurun ve grafiti devam ettirilir.
OP "Hayır, devre dışı bırakamıyorum" dedi. Bu, bildirim sisteminin gönderici tarafından devre dışı bırakılmayacağı anlamına geliyorsa, bu çözüm bununla tutarlıdır. Sistem sağlam. Eğer postacı nasıl yapılacağını bilmiyorsa, o zaman yine çözüm uygundur.
Ayrıntılar satırın altında açıklanmıştır. Nihai nokta, her şeyi DBus'a (in?) Yerleştirmek, doğrudan çağırmak olacaktır.
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification(uint id)
Çok, çok, çok saf bir ilkel çözüm, pratikten daha temel bir kavram kanıtıdır, esasen “engelli” notify-osd
(veya en azından etkilerini). Test bittiğinde sonlandırmayı unutmayın! ETX'ng tarafından <ctrl> -C ile veya terminal penceresinin kapatılması vb. ile yapılır. İşini çok pratik yapmaz! maalesef diğer işler kendi işlerini yapmaya çalışırken acı çekiyorlar ...
while true; do killall notify-osd; done
(ilgili faaliyeti "duymak" için " grep
çıkmak" isteyebilirsiniz
notify-osd: no process found ....
)
Bir terminal penceresinde çalıştırarak test edin ve başka bir terminal penceresinden yapmayı deneyin:
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"
İlk işlemi durdurun ve mesajları tekrar deneyin.
Belki de bunun notify-osd
için bir gösterge unity-panel-service
çağırabilir killall notify-osd
. Sıcak benekli kapatma düğmesi bildirim penceresinde bulunmaz (& olamaz!), Ancak gösterge panelinde bulunur. Bu, Unity'nin pencereler için sahip olduğu konseptin aynısıdır. Bildirimin kapatılması için üst çubuğun kullanılması, Unity'nin yakın, mini, maxi kutularını içeren pencere menülerini üst menü çubuğuna göndermesine benzer.
Gerçekten şık bir çözüm, gösterge için DBus aktivitesi notify-osd
tezahür ettiğinde ve bekleyen bildirim olmadığında ortadan kalktığında göstergenin görünmesini sağlayacaktır .
Ayrıca , yığınlanmış bildirimler sorununu da ele alabilir - bir seferde yalnızca biri görülebilir ve birden fazla bildirim beklemede ise, her biri bir sonraki görünmeden önce buharlaşmalıdır - genellikle aynı anda görülemezler.
DBus-monitor
notify-osd
Bununla birlikte , bildirim ara yüzünün halihazırda gösterilmiş olsa bile, bekleyen bildirimlerin derhal onaylanmasını sağlayacaktır. (VE killall notify-osd
derhal verilirse - poof pres!)
Bir terminal penceresine Tümü, Sürükle ve Bırak komutunu seçin ve aşağıdaki testleri yapın:
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"
şimdi p {r} oof ile aynı şeyi yapın:
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"
killall notify-osd
Önerilen çözümde tetiklenir olacağını DBus monitor
algılar OSD açılır grafiti aktiviteyi.