通知——在窗口下显示发送通知

通知——在窗口下显示发送通知

我编写了一个 shell 脚本,以确保我的女儿在一周内不会在她的 Raspberry Pi 上玩 Minecraft 超过 60 分钟 :)。脚本的一部分用于notify-send弹出通知,警告剩余时间。但是,notify-sendnotify-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。它们可能更有可能正常运行。

相关内容