Apakah ada cara untuk menampilkan notifikasi dari skrip bash di Ubuntu?

103

Sebagian besar aplikasi dapat menampilkan notifikasi yang diformat dengan baik pada acara yang muncul di sudut kanan atas layar. Saya akan menulis skrip bash yang akan melakukan proses peri panjang di latar belakang dan saya benar-benar ingin tahu kapan itu selesai. Bagaimana saya bisa menampilkan notifikasi yang bagus dari skrip bash?

vava
sumber

Jawaban:

124

Jika Anda menggunakan sistem notifikasi baru dalam lela, Anda ingin memberitahu-mengirim perintah

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.
Nagul
sumber
4
Terima kasih, baru saja menemukannya sendiri :) apt-get install libnotify-bin harus dijalankan sebelumnya untuk mendapatkannya.
vava
Bagaimana pengguna root mengirim pesan dari crons, init.d, dll?
Lance Caraccioli
6
Contoh: notify-send Test "Hello World"
Thaha kp
3
Parameter --expire-time tidak berfungsi di Ubuntu berkat "fitur" ini (bug). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty
Saya menemukan bahwa notify-sendterhambat selama pemutaran video / audio. Meskipun ini adalah use case yang valid, jika Anda masih ingin melihatnya maka --urgency = critical harus ditambahkan.
ccpizza
29

Menemukan cara lain, melalui Zenity

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

(Ini juga bermanfaat karena sudah diinstal di Ubuntu.)

vava
sumber
Saya suka Zenity karena mendukung interaksi pengguna untuk dialog (tidak seperti beri tahu-kirim)
Waffle's Crazy Peanut
12

Ada juga xmessage yang akan memunculkan jendela, jadi itu akan berfungsi pada sistem X11.

Pro: Ini juga memungkinkan secara interaktif mendorong pengguna dengan tombol.

Con: Seperti lansiran sembulan, itu biasanya menerima fokus, jadi jika Anda sedang mengetiknya bisa hilang sebelum Anda membaca pesan.

NVRAM
sumber
4
Con: Itu terlihat jelek sekali, dan juga merupakan jendela super kecil yang tidak selalu jelas bagi pengguna. Bagaimanapun, ini bersifat universal. :)
Nik Reiman
xmessage tidak berfungsi di Fedora. Ini tidak diinstal secara default.
Abhay Mittal
Itu juga tidak tersedia di instalasi Xorg default dari Arch Linux.
friederbluemle
Anda juga bisa mendapatkan jendela sembulan dengan tombol "OK" dan "Batal" melalui notify-send --expire-time=0 "Hello World"atau notify-send -t 0 "Hello world". Namun, jika tidak, -topsi ini diabaikan karena beberapa "keputusan desain" bodoh: askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples
Saya tidak bisa menerimanya; Saya harus menulis jawaban saya sendiri :) superuser.com/a/1310142/425838
Gabriel Staples
11

Untuk pengguna KDE:

$ kdialog --title "Long process completed!" --passivepopup "This popup will disappear in 5 seconds" 5 &
kolypto
sumber
Apakah mungkin untuk mengatur ikon untuk notifikasi?
Malabarba
5

Pemberitahuan munculan yang ditutup secara otomatis setelah 10 detik:

notify-send "Hello world"

Sumber: https://superuser.com/a/31919/425838

Jendela sembulan dengan tombol untuk mengklik:

[jendela tidak mendapatkan fokus otomatis]

notify-send -t 0 "Hello world"

Sumber: diriku; catatan: -t diabaikan untuk semua nilai kecuali 0 - betapa bodohnya . :(


ATAU
[jendela mendapat fokus otomatis]

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

Sumber: https://askubuntu.com/a/804475/327339


ATAU

[MY FAVORITE, karena jendela ditutup secara otomatis setelah ditentukan --timeoutdalam detik]

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

Sumber: saya membaca halaman manual: man zenity


ATAU
[terlihat sangat jelek]

xmessage 'hello world'

Sumber: http://www.linux-commands-examples.com/xmessage

Gabriel Staples
sumber
3

Ada solusi lintas platform yang disebut Yfiton :

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

Dalam skrip shell, Anda juga dapat memanggil utilitas osd_cat dari libxosd.

kutu buku
sumber
1
Ini sedikit berbeda karena tidak menggunakan notifikasi desktop ubuntu.
vava
Ya, ini adalah alternatif yang dapat Anda gunakan dengan distribusi Linux dan WM / DE.
geek