Чи є спосіб показати сповіщення від bash script в Ubuntu?


103

Більшість додатків може відображати добре відформатоване сповіщення про події, які з’являються у верхньому правому куті екрана. Я збираюся написати сценарій bash, який буде робити обробку казкової тривалості у фоновому режимі, і мені дуже хочеться знати, коли вона закінчиться. Як я можу показати це приємне сповіщення від bash-скрипту?


Відповіді:


124

Якщо ви використовуєте нову систему повідомлень в бойком, ви хочете сповістити-відправити команду

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

Як кореневий користувач надсилає повідомлення від кронів, init.d тощо?
Ленс Караччолі

6
Напр.:
Сповістіть

3
Параметр --expire-time не працює на Ubuntu завдяки цій "функції" (помилка). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

Я виявив, що notify-sendце заборонено під час відтворення відео / аудіо. Хоча це дійсний випадок використання, якщо ви все ще хочете їх побачити, тоді потрібно додати - urgency = критичний .
ccpizza

29

Знайшов інший шлях, через Зеніт

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

(Це також має перевагу від того, що вже встановлено на Ubuntu.)


Мені подобається Zenity за те, що він підтримує взаємодію користувачів для діалогів (на відміну від notify-send)
Божевільний арахіс Waffle

12

Існує також xmessage, що спливе вікно, тому воно має працювати в будь-якій системі X11.

Про: Він також дозволяє інтерактивно підказувати користувачеві кнопки.

Con: Як і будь-яке спливаюче сповіщення, воно, як правило, отримує фокус, тому якщо ви в середині введення, воно може зникнути, перш ніж прочитати повідомлення.


4
Кон: Це виглядає некрасиво, як пекло, а також це надзвичайно крихітне вікно, яке не завжди очевидно для користувача. У будь-якому разі, він є універсальним. :)
Нік Рейман

xmessage, однак, не працює у Fedora. Його не встановлено за замовчуванням.
Абхай Міттал

Він також недоступний для встановлення Xorg за замовчуванням Arch Linux.
friederbluemle

Ви також можете отримати спливаюче вікно за допомогою кнопки "ОК" та "Скасувати" через notify-send --expire-time=0 "Hello World"або notify-send -t 0 "Hello world". Інакше, однак, -tваріант ігнорується через деякі дурні "дизайнерські рішення": askubuntu.com/questions/110969/notify-send-ignores-timeout
Габріель

Я не міг його прийняти; Мені довелося написати власну відповідь :) superuser.com/a/1310142/425838
Габріель Степлес

11

Для користувачів KDE:

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

Чи можна встановити значок для сповіщення?
Малабарба

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

У скрипті оболонки ви також можете викликати утиліту osd_cat від libxosd.


1
Це дещо інакше, оскільки він не використовує сповіщення на робочому столі ubuntu.
vava

Так, це альтернатива, яку ви можете використовувати з будь-яким дистрибутивом Linux та будь-яким WM / DE.
вигук
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.