标签: libnotify

将通知发送与 cron 一起使用

我正在使用带有 KDE/Awesome WM 的 Arch Linux。我正在尝试 notify-sendcron.

我试过设置DISPLAY/XAUTHORITY变量,并notify-send使用“sudo -u”运行,但都没有结果。

我能够从会话中以交互方式调用通知发送并获取通知。

FWIW,cron 作业运行良好,我通过将内容回显到临时文件进行了验证。只是“通知发送”不起作用。

代码:

[matrix@morpheus ~]$ crontab -l
* * * * *  /home/matrix/scripts/notify.sh

[matrix@morpheus ~]$ cat /home/matrix/scripts/notify.sh
#!/bin/bash
export DISPLAY=127.0.0.1:0.0
export XAUTHORITY=/home/matrix/.Xauthority
echo "testing cron" >/tmp/crontest
sudo -u matrix /usr/bin/notify-send "hello"
echo "now tested notify-send" >>/tmp/crontest

[matrix@morpheus ~]$ cat /tmp/crontest
testing cron
now tested notify-send

[matrix@morpheus ~]$ 
Run Code Online (Sandbox Code Playgroud)

如您所见,通知发送之前和之后的回声有效。
我也试过设置DISPLAY=:0.0

更新:我搜索了一些,发现需要设置DBUS_SESSION_BUS_ADDRESS。在使用我从交互式会话中获得的值对其进行硬编码后,屏幕上每分钟都会弹出一个小小的“你好”消息!

但问题是这个变量不是永久的,所以我会尝试那里建议的命名管道解决方案。

[matrix@morpheus ~]$ cat scripts/notify.sh
#!/bin/bash …
Run Code Online (Sandbox Code Playgroud)

shell scripting cron libnotify

40
推荐指数
5
解决办法
3万
查看次数

通知发送通知类别、提示和版本参数是什么意思?

notify-send命令手册说

Usage:
  notify-send [OPTION...] <SUMMARY> [BODY] - create a notification

Help Options:
  -?, --help                        Show help options

Application Options:
  -u, --urgency=LEVEL               Specifies the urgency level (low, normal, critical).
  -t, --expire-time=TIME            Specifies the timeout in milliseconds at which to expire the notification.
  -i, --icon=ICON[,ICON...]         Specifies an icon filename or stock icon to display.
  -c, --category=TYPE[,TYPE...]     Specifies the notification category.
  -h, --hint=TYPE:NAME:VALUE        Specifies basic extra data to pass. Valid types are int, double, string and byte.
  -v, --version                     Version of …
Run Code Online (Sandbox Code Playgroud)

libnotify notify-send

23
推荐指数
1
解决办法
8602
查看次数

通知和通知守护进程在窗口管理器上不起作用

通知不适用于 Linux 独立窗口管理器(Openbox、Awesome WM 等)。我尝试安装notification-daemon和dunst,但发送时notify-send "something"没有弹出任何窗口。

我试图运行 polkit-gnome-agent 并直接运行通知守护进程,但它没有帮助(之前我用这种方式解决了类似的问题,但现在它什么也不做)。

除非我用 python 发送微不足道的通知,否则没有任何错误迹象,然后我只收到模糊的错误消息:

File "/usr/lib/python3.3/site-packages/gi/types.py", line 113, in function
    return info.invoke(*args, **kwargs)
gi._glib.GError: Could not connect: Connection refused
Run Code Online (Sandbox Code Playgroud)

琐碎的 C 程序不输出任何内容(例如没有错误)。

我正在将 Archlinux 与 systemd 和 d-bus 一起使用,我怀疑是 polkit 或某种守护程序没有在窗口管理器启动时运行的问题,但不知道我可以尝试什么或如何获得更有意义的错误消息。

编辑:我从那里获取了示例代码:https : //wiki.archlinux.org/index.php/Libnotify#Python

Dbus 应该正在运行,因为 systemd 将其作为依赖项。我已经libnotify安装 - 它是提供notify-send. 此外,通知守护程序应根据需要启动(仅当通知到达时),通过以下桌面文件/usr/share/dbus-1/services/org.freedesktop.Notifications.service

[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/bin/dunst
Run Code Online (Sandbox Code Playgroud)

我什至尝试过直接运行守护进程(只是执行)并尝试发送通知。如果有人知道我如何才能获得更多信息,请不要犹豫,提出建议。

编辑 2:我尝试使用 sudo: sudo notification-daemon_name &(在我的情况下sudo dunst &)和运行通知守护程序sudo notify-send something,然后通知工作。但是,当我尝试以非特权用户身份执行之前的任何操作(这很重要,大多数程序以非特权用户身份发送通知)时,没有任何显示。 …

arch-linux notifications libnotify

14
推荐指数
1
解决办法
2万
查看次数

通知发送在 ssh 下不起作用

也许这是在其他地方回答的,但我没有看到。

我正在运行 Ubuntu 14.04。例如,当我通过 SSH 连接到我的机器时:

ssh <user>@<machineip> notify-send "Hello"
Run Code Online (Sandbox Code Playgroud)

我在登录到机器的监视器上没有看到任何内容。如果我前缀notify-sendDISPLAY=:0.0DISPLAY=:0没有不同情况。我只是从未在当前会话中看到任何通知。

是否有一些技巧/开关可以让这个工作?

如果不清楚,请允许我重申:从计算机 A,我通过 SSH 连接到计算机 B。在 SSH 会话中,我希望执行 notify-send 以在计算机 B 上运行。我希望出现咆哮类型的通知在计算机 B 的显示器上。

ssh libnotify

11
推荐指数
1
解决办法
1万
查看次数

清除/修改以前的 libnotify 通知?

我写了一个脚本来生成这样的通知:

notify-send -i audio-card "Transferring audio playback to speakers." \
    "Audio playback has been transferred to the analog output speaker system."
Run Code Online (Sandbox Code Playgroud)

有什么方法可以从命令行或 Python 清除或替换这些通知?本质上,我有一个脚本可以在两个 PulseAudio 接收器之间切换,如果用户快速切换,我想清除以前的此类通知以将它们替换为更新的文本。

python notifications libnotify

8
推荐指数
1
解决办法
3073
查看次数

通知发送/通知守护程序:禁用托盘图标

当我notify-send用来发送一条简单的消息到notification-daemon

notify-send "hello"
Run Code Online (Sandbox Code Playgroud)

它不仅会显示消息,还会创建一个系统托盘图标,如下面的屏幕截图所示:

在此处输入图片说明

此图标将保留在系统托盘中,直到我单击它并选择“清除所有通知”。这个图标完全违背了notify-send作为不显眼的通知的目的。我notify-send几年前使用过,我确信它没有任何托盘图标。不用说,这绝对令人讨厌。

我发现我可以使用transient选项

notify-send --hint=int:transient:1 hello
Run Code Online (Sandbox Code Playgroud)

这使得图标在一段时间后消失。这更好,但仍然不能接受。

有没有办法完全摆脱托盘图标?

我在 Debian Wheezy 上使用 LXDE

一些答案表明,这是由我的桌面环境 (LXDE) 引起的。

我觉得很难相信。我仍然怀疑这是由通知守护程序引起的。我已经下载了notification-daemon包的源代码CHANGELOG,其中包括:

  • 添加了对将上下文通知附加到系统托盘上的图标的更好支持,即使它移动时也是如此。科林沃尔特斯的补丁。

这似乎是我抱怨的“功能”。

有人可以建议如何禁用系统托盘通知notification-daemon吗?当我 greptray或的来源时systray,我什么也没找到。我不知道从哪里开始。

openbox notifications lxde panel libnotify

7
推荐指数
1
解决办法
8470
查看次数

notify-send - 当消息超过一行时如何显示完整消息?

假设我使用notify-send这些长消息:

notify-send 'd: title, up/down: zoom, w: win_to_img, </>: rotate, *: orig, Enter/0: blah blah blah'
Run Code Online (Sandbox Code Playgroud)

但它会截断消息,只显示其中的一部分,而没有查看完整消息的选项:

在此处输入图片说明

使用 Fedora 21,我能够查看完整消息(在底部弹出滚动条),但使用 Fedora 24 则无法查看。

版本notify-send是 libnotify-0.7.6-8.fc24.i686。

无论如何要在 Fedora 24 中显示完整消息吗?

notifications gnome-shell libnotify notify-send

7
推荐指数
1
解决办法
4650
查看次数

记录 dbus 桌面通知

有时我会在桌面通知中收到错误消息,例如:

VBoxClient:VirtualBox 内核服务没有运行。 退出。

不幸的是,很难调试它。我无法xprop查看发送它的进程 ID。它声称来自 VBoxClient,但我不能确定。我什至无法复制通知气泡中的文本。我能做的最好的就是截图。

是否有某种方法可以将桌面通知记录到/var/log/messages或以其他方式获取有关发送它的进程的信息,或者至少是通知本身的文本?

d-bus freedesktop libnotify

5
推荐指数
0
解决办法
1840
查看次数

通知发送不适用于 Debian Wheezy

我已经libnotify-bin安装了,但是当我输入时

notify-send "hello"
Run Code Online (Sandbox Code Playgroud)

没发生什么事。没有错误,没有消息我有必要的包:

# dpkg -l | grep notify
ii  libnotify-bin
ii  libnotify4:amd64
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

我在 Debian Wheezy 上使用 LXDE

更新:

虽然@Anthon 建议的解决方案有效(安装notification-daemon),但我不确定这是否是“最佳”解决方案。我期待,这是足有libnotify-binlibnotify4dbus安装。Inedeed,在我的另一台机器上,notify-send 没有notification-daemon.

有人可以澄清是否notification-daemon有必要吗?

debian lxde libnotify

2
推荐指数
1
解决办法
6866
查看次数

当最近的进程是“notify-send”时,为什么我不能在 Bash 中使用带参数扩展的 `kill $!`?

根据 Bash:特殊参数

($!) 扩展到最近放入后台的作业的进程 ID,无论是作为异步命令执行还是使用 bg 内置

我可以按如下方式使用它:

$ leafpad &
[2] 3962
$ kill $!
Run Code Online (Sandbox Code Playgroud)

这有效并杀死最近的进程(例如leafpad),但notify-send它似乎不起作用:

$ notify-send Hello &
[2] 4052
$ kill $!
bash: kill: (4052) - No such process
Run Code Online (Sandbox Code Playgroud)

我必须使用killall notify-osd才能杀死它。

所以,我想知道为什么kill $!不起作用notify-send?杀死这样一个进程的正确方法是什么?

注意:我知道我可以指定超时,但这是一个不同的问题。

bash kill libnotify notify-send

2
推荐指数
1
解决办法
274
查看次数

libotify / notify-send:如果正文包含“&lt;”或“&gt;”,则不打印正文

我使用的是 Linux Mint 18.1,MATE。

我正在使用 notify-send 命令来可视化键的名称(例如<enter>),同时通过 python 脚本将它们发送到当前窗口。大约两周以来,notify-send 显示出一种奇怪的行为。我知道 bash 的基本语法是notify-send [OPTIONS] <summary> [body].

基本问题

执行时notify-send -t 0 '<enter>' 'text body',一切看起来都很好: 在此处输入图片说明

但是,当尝试使用 打印消息正文中的密钥名称时notify-send -t 0 'Summary' '<enter>',我得到:

在此处输入图片说明

同样的情况发生在notify-send -t 0 'Summary' '<', notify-send -t 0 'Summary' '>'notify-send -t 0 'Summary' \<

如果正文包含 < 或 > ,为什么正文打印为空白有什么想法吗?


解决方法(失败)

我尝试使用 python 模块代替:

from gi.repository import Notify
Notify.init("App Name")
Notify.Notification.new("Summary","<enter>").show()
Run Code Online (Sandbox Code Playgroud)

但结果与上图 2 中的结果相同。


附加信息:

zenity --info --title='Summary' --text='<enter>'在 bash …

libnotify notify-send

2
推荐指数
1
解决办法
1678
查看次数

Arch linux:通知在 i3wm 中不起作用 - Dunst:严重:无法打开 X11 显示

我使用 arch linux 和 i3wm。我的通知不起作用。当我dunst在命令行中输入时,它会响应:

警告:未找到 dunstrc。

当我输入时notify-send --icon=gtk-info Test "This is a test",它会一直运行,直到我用crt+cdunstify --action="replyAction,reply" "Message received"杀死它,而没有任何通知显示。

/etc/X11/xinit/xinitrc.d/30-dbus.sh文件的内容:

#!/bin/bash

# launches a session dbus instance
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && type dbus-launch >/dev/null; then
    eval $(dbus-launch --sh-syntax --exit-with-session)
fi
Run Code Online (Sandbox Code Playgroud)

这是我的journalctl

18:57:43 arch-thinkpad systemd[562]: Starting Dunst notification daemon...
18:57:43 arch-thinkpad dunst[49939]: CRITICAL: Cannot open X11 display.
18:57:43 arch-thinkpad systemd[562]: dunst.service: Main process exited, code=exited, status=1/FAILURE
18:57:43 arch-thinkpad systemd[562]: dunst.service: …
Run Code Online (Sandbox Code Playgroud)

xorg notifications x-server i3 libnotify

2
推荐指数
1
解决办法
5739
查看次数