我编写了一个 shell 脚本,以确保我的女儿在一周内不会在她的 Raspberry Pi 上玩 Minecraft 超过 60 分钟 :)。脚本的一部分用于notify-send
弹出通知,警告剩余时间。但是,notify-send
和notify-send --urgency=critical
通知都出现在 Minecraft 窗口下方,因此窗口标题栏上只能看到一小块灰色。为什么会发生这种情况,我还能做些什么来发出可见的警告(如果有替代方案notify-send
)?
答案1
当你使用“notify-send”时,通知的外观由两个因素决定其他成分:
- 这通知服务器创建具有特定外观的弹出窗口(例如notification-daemon、notify-osd、xfce4-notifyd、dunst、dzenify、lxqt-notificationd);
- 窗口管理器最终决定每个窗口在桌面上的位置和 z 顺序。
- (“notify-send” 本身并不显示任何内容,它只是提交“显示通知”请求。)
因此,要么是当前通知服务器没有尽力使弹出窗口始终位于顶部,要么是窗口管理器已决定全屏窗口无论如何都具有优先权,要么是窗口管理器(或 Xorg 本身)存在一些错误。
您可以通过更改通知服务器进行实验 - 首先终止当前进程(并将其从桌面环境的“自动启动”中删除),然后安装并启动一个新的进程(例如通过运行/usr/lib/notify-osd/notify-osd &
)。
要确定哪个进程 ID 当前充当通知服务器,请使用:
gdbus call -e -d org.freedesktop.DBus \
-o /org/freedesktop/DBus \
-m org.freedesktop.DBus.GetConnectionUnixProcessID \
"'org.freedesktop.Notifications'"
作为一般通知发送的替代方案,您可以使用创建带有一些文本的常规窗口的程序 - 例如 xmessage、gxmessage 或 zenity。它们可能更有可能正常运行。