web-dev-qa-db-ja.com

notify-sendを使用して作成された通知をキャンセルまたはクリアできますか?

そのため、特定のユーザーがログオンするときにラップトップを接続することを確認する小さなスクリプトを作成しました(そうしないと無効になります)。スクリプトは、notify-sendを使用して、プラグインするよう指示します。プラグインすると、スクリプトは終了します。彼がそれを接続したときに通知を自動的にクリアすることは可能ですか?何らかの方法で、notify-sendによってプロセスIDを生成し、そのPIDを強制終了する必要があると考えていますが、これを行う方法はわかりません。

現在のスクリプトは次のとおりです。

#!/bin/bash 

cat /sys/class/power_supply/BAT0/status
OUTPUT="$(cat /sys/class/power_supply/BAT0/status)"
echo "${OUTPUT}"
if [ "${OUTPUT}" = "Charging" ] || [ "${OUTPUT}" = "Unknown" ]; then
    echo charging or full
Elif [ "${OUTPUT}" = "Discharging" ]; then
    notify-send -i /home/evamvid/Documents/Programming/OokiNoUse/power25.png "Hey there brother" "plug it in"
    COUNTER=0
while [ "$COUNTER" -le 12 ]
do
    cat /sys/class/power_supply/BAT0/status
    OUTPUT="$(cat /sys/class/power_supply/BAT0/status)"
    echo "${OUTPUT}"
    if [ "${OUTPUT}" = "Charging" ] || [ "${OUTPUT}" = "Unknown" ]; then
        exit
    Elif [ "${OUTPUT}" = "Discharging" ]; then
        COUNTER=$(($COUNTER+1))
        echo $COUNTER
        sleep 1
    fi
done
fi
5
evamvid

探しているプロセスはnotify-osdです。次のいずれかのコマンドでそれを殺すことができます:

pkill notify-osd

またはそのpidによって:

kill $(ps -e | grep notify-osd | awk '{ print $1 }')

あるいは、@ kosが示唆するように(ありがとう!)、pgrepを使用して:

kill $(pgrep ^notify-osd$)
6
Jacob Vlijm

Mint MATEを使用しています17プロセスはリストされています(例)15107? Sl 0:00/usr/lib/mate-notification-daemon/mate-notification-daemon

$ pkill mate-notification-daemon、さらには$ pkill mate-notificationとしてpkillを試しましたが、うまくいきませんでした。ただし、「通知」Wordを切り捨てると、機能しました:$ pkill mate-notificati Wordに「on」を追加すると機能しなくなります。理由がわかりません。これは、Ubuntu MATEエディションにも当てはまると思います。

0
Ramon Gandia