[Share Experiences] 以root身份发送通知(如使用notify Send)到现在运行的用户上
Tofloor
poster avatar
神末shenmo
Moderator
Spark-App
2022-08-06 02:21
Author

百度只能搜到国内的收费的文档

Stack Overflow抄的

如果你要使用notify-send的脚本,把这个东西放到最前面,你就会发现可以发送到当前启动的用户桌面上了

function notify-send() {
    #Detect the name of the display in use
    local display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -n 1)"

    #Detect the user using such display
    local user=$(who | grep '('$display')' | awk '{print $1}' | head -n 1)

    #Detect the id of the user
    local uid=$(id -u $user)

    sudo -u $user DISPLAY=$display DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus notify-send "$@"
}

来源: https://stackoverflow.com/questions/28195805/running-notify-send-as-root


博客原文

Reply Favorite View the author
All Replies
忘记、过去
Moderator
2022-08-06 08:21
#1

doubt 果然还是绕不过 sudo ......不开开发者模式可太蛋疼了

Reply View the author
神末shenmo
Moderator
Spark-App
2022-08-06 18:06
#2
忘记、过去

doubt 果然还是绕不过 sudo ......不开开发者模式可太蛋疼了

这个是以root权限运行脚本时发送通知用的(

本来就需要开发者模式

Reply View the author
忘记、过去
Moderator
2022-08-07 00:46
#3
神末shenmo

这个是以root权限运行脚本时发送通知用的(

本来就需要开发者模式

我说的是 通过 dbus 拉起的 root 级进程,想用这种方式发通知还是绕不开开发者模式......

想发通知现在还得走 session dbus 转一圈......

Reply View the author
神末shenmo
Moderator
Spark-App
2022-08-07 01:02
#4
忘记、过去

我说的是 通过 dbus 拉起的 root 级进程,想用这种方式发通知还是绕不开开发者模式......

想发通知现在还得走 session dbus 转一圈......

后者这个怎么搞?

Reply View the author
忘记、过去
Moderator
2022-08-07 02:22
#5
神末shenmo

后者这个怎么搞?

root 进程发送 dbus 信号,然后随便找个用户级进程监听信号,并发出通知......

P.S. 反正很挫,尽量别这么玩儿

Reply View the author
神末shenmo
Moderator
Spark-App
2022-08-07 05:58
#6
忘记、过去

root 进程发送 dbus 信号,然后随便找个用户级进程监听信号,并发出通知......

P.S. 反正很挫,尽量别这么玩儿

本质上和写一个txt然后用用户的服务去读一样吧(

用这个实现root下星火的通知有点太挫了.....还是算了

Reply View the author