我正在尝试在插入USB设备时收到通知,为此我使用udev规则来跟踪它被插入的时刻,然后从那里启动脚本.脚本的想法是使用链接中解释的内容.
但是在尝试这个时:
pids=`pgrep -u $user gnome-panel`
Run Code Online (Sandbox Code Playgroud)
我发现gnome-panel不在那里.用Google搜索这项工作,我发现很少有人抱怨这项工作不再有效.所以我对这个主题进行了一些研究,并想出了这个(notify-plugin2.sh):
#!/bin/bash
DBUS_SESSION_BUS_ADDRESS=$(cat /home/user/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0 | grep DBUS_SESSION_BUS_ADDRESS= | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//')
su user Test.sh $DBUS_SESSION_BUS_ADDRESS
Run Code Online (Sandbox Code Playgroud)
DBUS_SESSION_BUS_ADDRESS在将用户切换到非root用户之前获取.这句话,如果我没有错误的作品,那么基于上面链接的代码我做了这个其他的脚本(Test.sh)
#!/bin/sh
user=`whoami`
title="Test"
timeout=30000
icon="~/Pictures/PicturesForPwrPoint/Pluged.jpg"
DBUS_SESSION_BUS_ADDRESS=$1
echo $DBUS_SESSION_BUS_ADDRESS
DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \ notify-send -u low -t $timeout -i "$icon" "$title"
Run Code Online (Sandbox Code Playgroud)
对于我在其他代码上可以看到的,唯一的问题是获得DBUS_SESSION_BUS_ADDRESS,如果我没有错,我可以拥有它.
所以我的问题是,为什么启动时屏幕上没有花哨的弹出消息?
sudo sh notify-plugin2.sh
Run Code Online (Sandbox Code Playgroud)