Lesezeichen: Schließen-Button bei notify-osd?
ref:
Die vorab bewährten Konzepte für bash
"deaktivierte" OSD-Popup-Graffiti-Lösungen sind wie folgt konzipiert und schraffiert:
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "member=Notify" | \
sed -u -e 's/.*/killall notify-osd/g' | \
bash
Dies kann in einem Terminal oder als Hintergrundaufgabe ausgeführt werden. Beenden Sie diese Aufgabe, und das Popup-Graffiti wird fortgesetzt.
Das OP sagte "Nein, ich kann es nicht deaktivieren". Wenn dies bedeutet, dass das Benachrichtigungssystem vom Poser NICHT deaktiviert werden soll, dann stimmt diese Lösung damit überein. Das System ist intakt. Wenn dies bedeutet, dass der Poser nicht weiß, wie dies zu tun ist, ist die Lösung ebenfalls relevant.
Details unten erklärt. Das Ultimative wäre, alles in den DBus einzubetten und direkt aufzurufen
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification(uint id)
Eine sehr, sehr, sehr naive rudimentäre Lösung, die eher ein Proof-of-Concept als ein praktischer Ansatz ist und im Wesentlichen "deaktiviert" notify-osd
(oder zumindest deren Auswirkungen). Vergiss nicht, es zu beenden, wenn du mit dem Testen fertig bist! per ETX'ng mit <ctrl> -C oder Schließen des Terminalfensters etc. Es macht seinen Job aber nicht sehr pragmatisch! da leider andere Jobs leiden, die versuchen, ihre zu tun ...
while true; do killall notify-osd; done
(um relevante Aktivitäten zu "hören", möchten Sie vielleicht " grep
raus"
notify-osd: no process found ....
)
Testen Sie es, indem Sie es in einem Terminalfenster ausführen und in einem anderen Terminalfenster versuchen:
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"
Beenden Sie den ersten Prozess und wiederholen Sie die Nachrichten.
Vielleicht könnte ein notify-osd
Indikator für die unity-panel-service
aufrufen killall notify-osd
. Der Hot-Spot-Schließen-Button wäre im Benachrichtigungsfenster nicht vorhanden (& kann nicht!), Wäre aber im Anzeigefeld verfügbar. Dies ist völlig analog zu dem Konzept, das Unity für Windows hat. Die Verwendung der oberen Leiste zum Schließen von Benachrichtigungen ähnelt der Art und Weise, wie Unity Fenstermenüs mit geschlossenen Mini-Maxi-Feldern in die obere Menüleiste verschiebt.
Bei einer wirklich eleganten Lösung wird der Indikator angezeigt, wenn die DBus-Aktivität für die notify-osd
Manifeste aktiv ist, und wird ausgeblendet, wenn keine Benachrichtigungen ausstehen.
Möglicherweise wird auch das Problem der gestapelten Benachrichtigungen behoben. Es wird immer nur eine Benachrichtigung angezeigt. Wenn mehrere Benachrichtigungen anstehen, muss eine Benachrichtigung verflogen sein, bevor die nächste angezeigt wird. In der Regel können sie nicht gleichzeitig angezeigt werden.
DBus-monitor
Über die notify-osd
Benachrichtigungsschnittstelle werden ausstehende Benachrichtigungen jedoch sofort bestätigt, auch wenn bereits eine angezeigt wird. (UND wenn killall notify-osd
sofort ausgestellt - Presto Poof!)
Wählen Sie Alle, ziehen Sie die folgenden Tests per Drag & Drop in ein Terminalfenster:
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"
mache jetzt dasselbe mit 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"
Das killall notify-osd
in der vorgeschlagenen Lösung wird ausgelöst, wenn DBus monitor
OSD-Popup-Graffiti-Aktivität erkannt wird.