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?


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.

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.)


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.


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 &

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


3

Ada solusi lintas platform yang disebut Yfiton :

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

2

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.