有没有办法在Ubuntu中显示来自bash脚本的通知?


Answers:


124

如果您在Jaunty中使用新的通知系统,则需要notify-send命令

notify-send - a program to send desktop notifications

SYNOPSIS

With notify-send you can sends desktop notifications to the user via
a notification daemon from the command line.  These notifications can be
used to inform the user about an event or display some form of information
without getting in the user's way.

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.

4
谢谢,我自己才发现它:)必须先运行apt-get install libnotify-bin才能得到它。
vava

root用户如何从crons,init.d等发送消息?
Lance Caraccioli

6
例如:通知发送测试“ Hello World”
Thaha kp

3
由于此“功能”(错误),-expire-time参数在Ubuntu上不起作用。 bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

我发现这notify-send在视频/音频播放期间被禁止。尽管这是一个有效的用例,但是如果您仍然希望看到它们,则 必须添加--urgency = critical
ccpizza

29

通过Zenity找到了另一种方式

echo 'message:hi' | zenity --notification --listen

(这也具有已经在Ubuntu上安装的好处。)


我喜欢Zenity,因为它支持对话框的用户交互(不同于通知发送)
Waffle的Crazy Peanut,

12

还有xmessage会弹出一个窗口,因此它可以在任何X11系统上运行。

优点:还可以通过按钮交互式地提示用户。

缺点:像任何弹出警报一样,它通常会获得焦点,因此,如果您正在打字,它可能会在阅读消息之前消失。


4
缺点:看起来像地狱一样丑陋,也是一个超小窗口,对用户而言并不总是显而易见的。无论如何,它是普遍的。:)
Nik Reiman

xmessage在Fedora中不起作用。默认情况下未安装。
Abhay Mittal 2014年

Arch Linux的默认Xorg安装中也不提供此功能。
friederbluemle

您也可以通过notify-send --expire-time=0 "Hello World"或来获得带有“确定”和“取消”按钮的弹出窗口notify-send -t 0 "Hello world"。否则,-t由于一些愚蠢的“设计决策” ,该选项将被忽略:askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

我不能接受 我不得不写下自己的答案:)superuser.com/a/1310142/425838
加布里埃尔·史泰博

11

对于KDE用户:

$ kdialog --title "Long process completed!" --passivepopup "This popup will disappear in 5 seconds" 5 &

可以为通知设置图标吗?
马拉巴(Malabarba)

5

10秒后自动关闭的弹出通知:

notify-send "Hello world"

资料来源:https : //superuser.com/a/31919/425838

带有单击按钮的弹出窗口:

[窗口无法自动对焦]

notify-send -t 0 "Hello world"

资料来源:我自己;注意:-t 除0之外的所有值都会被忽略-多么愚蠢。:(



[窗口自动对焦]

zenity --info --title "Hello" --text "World"

资料来源:https : //askubuntu.com/a/804475/327339


要么

[我的最爱,因为窗口在指定--timeout的秒数后自动关闭]

zenity --info --title "Hello" --text "World" --timeout=2

资料来源:我自己阅读手册页: man zenity



[外观超丑]

xmessage 'hello world'

来源:http//www.linux-commands-examples.com/xmessage


3

存在一个名为Yfiton的跨平台解决方案:

$ yfiton -n desktop -Pmessage="Lunch time!" -Pposition=TOP_RIGHT

2

在Shell脚本中,您还可以从libxosd调用osd_cat实用程序。


1
这有点不同,因为它不使用ubuntu桌面通知。
vava

是的,这是可以与任何Linux发行版和任何WM / DE一起使用的替代方法。
极客,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.