Có cách nào để hiển thị thông báo từ tập lệnh bash trong Ubuntu không?


103

Hầu hết các ứng dụng có thể hiển thị thông báo được định dạng độc đáo về các sự kiện xuất hiện ở góc trên cùng bên phải của màn hình. Tôi sắp viết một kịch bản bash sẽ xử lý lâu dài trong nền và tôi thực sự muốn biết khi nào nó được hoàn thành. Làm thế nào tôi có thể hiển thị thông báo tốt đẹp đó từ một tập lệnh bash?


Câu trả lời:


124

Nếu bạn đang sử dụng hệ thống thông báo mới trong Jasyy, bạn muốn lệnh gửi thông báo

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
Cảm ơn, chỉ cần tìm thấy nó :) apt-get install libnotify-bin phải được chạy trước để có được nó.
vava

Làm thế nào để người dùng root gửi tin nhắn từ crons, init.d, v.v?
Lance Caraccioli

6
Ví dụ: thông báo-gửi Kiểm tra "Xin chào thế giới"
Thaha kp

3
Tham số - expire-time không hoạt động trên Ubuntu nhờ "tính năng" (lỗi) này. bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

Tôi thấy rằng notify-sendbị ức chế trong quá trình phát lại video / âm thanh. Mặc dù đây là trường hợp sử dụng hợp lệ, nhưng nếu bạn vẫn muốn xem chúng thì phải thêm --urgency = then chốt .
ccpizza

29

Tìm thấy một cách khác, thông qua Zenity

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

(Điều này cũng có lợi ích là đã được cài đặt trên Ubuntu.)


Tôi thích Zenity ở chỗ nó hỗ trợ các tương tác của người dùng cho các hộp thoại (không giống như gửi thông báo)
Waff's Crazy Peanut

12

Ngoài ra còn có xmessage sẽ bật lên một cửa sổ, vì vậy nó sẽ hoạt động trên mọi hệ thống X11.

Pro: Nó cũng cho phép tương tác nhắc nhở người dùng bằng các nút.

Con: Giống như bất kỳ cảnh báo bật lên nào, nó thường nhận được tiêu điểm, vì vậy nếu bạn đang gõ phím, nó có thể biến mất trước khi bạn đọc tin nhắn.


4
Con: Nó trông xấu xí như địa ngục, và cũng là một cửa sổ siêu nhỏ không phải lúc nào cũng rõ ràng đối với người dùng. Dù sao, nó là phổ quát mặc dù. :)
Nik Reiman

xmessage không hoạt động ở Fedora. Nó không được cài đặt theo mặc định.
Abhay Găngal

Nó cũng không có sẵn trong bản cài đặt Xorg mặc định của Arch Linux.
Friederbluemle

Bạn cũng có thể nhận được một cửa sổ bật lên với nút "OK" và "Hủy" thông qua notify-send --expire-time=0 "Hello World"hoặc notify-send -t 0 "Hello world". Tuy nhiên, mặt khác, -ttùy chọn bị bỏ qua do một số "quyết định thiết kế" ngu ngốc: askubfox.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

Tôi không thể lấy nó; Tôi đã phải viết câu trả lời của riêng mình :) superuser.com/a/1310142/425838
Gabriel Staples

11

Đối với người dùng KDE:

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

Có thể đặt biểu tượng cho thông báo không?
Malabarba

5

Thông báo Popup tự động đóng sau 10 giây:

notify-send "Hello world"

Nguồn: https://superuser.com/a/31919/425838

Cửa sổ bật lên với các nút bấm:

[cửa sổ không lấy nét tự động]

notify-send -t 0 "Hello world"

Nguồn: bản thân tôi; lưu ý: -t được bỏ qua cho tất cả các giá trị ngoại trừ 0 - thật ngu ngốc . :


HOẶC
[cửa sổ được lấy nét tự động]

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

Nguồn: https://askubfox.com/a/804475/327339


HOẶC LÀ

[FAVORITE CỦA TÔI, vì cửa sổ tự động đóng sau khi được chỉ định --timeouttrong vài giây]

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

Nguồn: bản thân tôi đang đọc các trang của người đàn ông: man zenity


HOẶC
[siêu xấu xí]

xmessage 'hello world'

Nguồn: http://www.linux-commands-examples.com/xmessage


3

Có tồn tại một giải pháp đa nền tảng được gọi là Yfiton :

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

2

Trong tập lệnh shell, bạn cũng có thể gọi tiện ích osd_cat từ libxosd.


1
Điều này hơi khác một chút vì nó không sử dụng thông báo trên màn hình Ubuntu.
vava

Có, đây là một giải pháp thay thế mà bạn có thể sử dụng với bất kỳ bản phân phối Linux và bất kỳ WM / DE nào.
geek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.