Ste*_*fan 19 command-line xorg notifications tty console
使用命令行,我想在每个正在运行的 X 显示器上显示通知。(和运行控制台)
就像是:
notify-send-all 'Warning' 'Nuclear launch in 5 minutes, please evacuate'
Run Code Online (Sandbox Code Playgroud)
有没有程序可以做到这一点?如果没有,这可以用bash实现吗?
fsc*_*itt 17
您可以使用命令墙向所有控制台发送消息。
为了在 X 下发送通知,可以使用 notify-send 向当前显示器上的当前用户发送通知。(根据您的问题,我猜您已经知道了这个。)您可以使用一些 bash 脚本在此基础上进行构建。基本上,您必须找出哪些用户使用哪些 X-Display。获得此信息后,您可以像这样使用通知发送:
DISPLAY=:0 sudo -u fschmitt notify-send "Message"
Run Code Online (Sandbox Code Playgroud)
其中 fschmitt 是显示 0 处的用户。您可以解析“who”命令的输出以查找所有用户及其显示。输出看起来像这样
[edinburgh:~]$ who
markmerk3 tty7 2010-09-23 10:59 (:0)
markmerk3 pts/1 2010-09-30 13:30 (:0.0)
fschmitt pts/2 2010-10-08 11:44 (ip-77-25-137-234.web.vodafone.de)
markmerk3 pts/0 2010-09-29 18:51 (:0.0)
seamonkey pts/6 2010-09-27 15:50 (:1.0)
markmerk3 pts/5 2010-09-27 14:04 (:0.0)
seamonkey tty8 2010-09-27 15:49 (:1)
markmerk3 pts/13 2010-09-28 17:23 (:0.0)
markmerk3 pts/3 2010-10-05 10:40 (:0.0)
Run Code Online (Sandbox Code Playgroud)
你看,有两个用户在运行 X 会话,markmerk3 在显示 0 和 seamonkey 在显示 1。我认为你需要 grep for tty[0-9]* 然后确保在行尾有 (:[0 -9.]*) 以摆脱控制台登录并从括号之间的字符串中提取显示 ID。
小智 13
这个帖子有点旧,抱歉,但我希望我仍然可以为该主题添加一些有用的内容。(Josef Kufner 也写了一个不错的脚本,它对我的口味来说有点太长了,并且它使用了 PHP)。
我还需要一个原始问题中描述的工具(向所有活动的 X 用户发送消息)。根据这里的答案,我编写了这个仅 bash 的小脚本,它搜索活跃的 X 用户(使用who),然后notify-send为每个活跃用户运行。
最棒的是:您可以像“通知发送”一样使用我的脚本及其所有参数!;-)
通知发送所有:
#!/bin/bash
PATH=/usr/bin:/bin
XUSERS=($(who|grep -E "\(:[0-9](\.[0-9])*\)"|awk '{print $1$NF}'|sort -u))
for XUSER in "${XUSERS[@]}"; do
NAME=(${XUSER/(/ })
DISPLAY=${NAME[1]/)/}
DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus
sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \
DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \
PATH=${PATH} \
notify-send "$@"
done
Run Code Online (Sandbox Code Playgroud)
将上述代码复制到名为 的文件中notify-send-all,使其可执行并将其复制到/usr/local/bin或/usr/bin(根据需要)。然后在控制台会话中以 root 身份运行它,如下所示:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Run Code Online (Sandbox Code Playgroud)
我已经在不同的机器上使用它几个月了,到目前为止没有任何问题,我已经在 MATE 和 Cinnamon 桌面上对其进行了测试。也在 cron 和 anacron 中成功运行它。
我为/在 Arch Linux 下编写了这个脚本,所以如果您在其他 Linux 发行版或桌面上遇到问题,请告诉我。
| 归档时间: |
|
| 查看次数: |
23431 次 |
| 最近记录: |