【发布时间】:2021-11-24 12:38:40
【问题描述】:
我编写了一个 POSIX shell 脚本来提醒我使用 notify-send 和 cronjob 的电池寿命,但是我遇到了 DBUS 问题
这是脚本的样子
#!/bin/sh
percent=`upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage:
notify-send "battery life" "$percent"
它按预期工作,并在调用时弹出此通知。
我编写脚本是因为我的窗口管理器 i3 缺少电池状态通知系统,所以我发现自己的笔记本电脑电池没电了,即使我就在家里的插座旁边。
当然;拥有这样的脚本是没有意义的,除非它会自动弹出,所以经过一番摆弄后,我设置了一个每 10 分钟运行一次脚本的 Cron 作业。
这是 cron-tab 的样子:*/10 * * * * export DISPLAY=:0 ; export DBUS_SESSION_BUS_ADDRESS=a; batterystatus.sh
它可以工作,除了没有关于 DBUS_SESSION_BUS_ADDRESS 东西的小 sn-p,由于某种原因 notify-status 不起作用。
所以,一切都很酷,直到我重新启动并发现 cron-tab 中使用的这个值:unix:abstract=/tmp/dbus-FOSTebXqX5,guid=a7ad198d91d224b8c056efc6615a3610 在启动时发生变化。
这意味着我每次启动计算机时都必须更改 cron-job,以便脚本能够正常工作。
有什么办法可以解决这个问题吗?
【问题讨论】:
-
您是否尝试过按照this answer 中的说明获取 DBUS_SESSION_BUS_ADDRESS?那个是给 Gnome 的,不是 i3 的,但应该是类似的。
标签: cron posix dbus notify-send