是否可以取消或清除使用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

答案1

或者,如果您不想让通知显示在通知中历史, 你可以试试:

notify-send --hint int:transient:1 "Title" "Body"

答案2

您正在寻找的进程是notify-osd。您可以使用以下命令之一终止它:

pkill notify-osd

或者通过它的 pid:

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

或者,甚至更好,按照@kos(谢谢!)的建议,使用pgrep

kill $(pgrep ^notify-osd$)

答案3

我正在使用 Mint MATE 17 列出的进程(示例)15107 ? Sl 0:00 /usr/lib/mate-notification-daemon/mate-notification-daemon

我尝试了 pkill as $ pkill mate-notification-daemon 甚至 $ pkill mate-notification And 都没有用。但是,如果我截断“通知”一词,它就起作用了: $ pkill mate-notificati 在该词中添加“on”会使它不起作用。不知道为什么。我想这也适用于 Ubuntu MATE 版本。

答案4

对于 xfce 桌面(Lubuntu 18.04)通知发送:

pkill xfce4-notifyd

相关内容