Большинство приложений могут отображать красиво отформатированные уведомления о событиях, которые появляются в верхнем правом углу экрана. Я собираюсь написать сценарий bash, который будет долго обрабатываться в фоновом режиме, и я действительно хочу знать, когда он закончится. Как я могу показать это приятное уведомление от bash-скрипта?
7 ответов
Если вы используете новую систему уведомлений в 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.
Нашел другой путь, через Zenity
echo 'message:hi' | zenity --notification --listen
(Это также имеет то преимущество, что уже установлено в Ubuntu.)
Также есть xmessage, которое откроет окно, поэтому оно должно работать на любой системе X11.
Pro: также позволяет интерактивно подсказывать пользователю кнопки.
Con: Как и любое всплывающее предупреждение, оно обычно получает фокус, поэтому, если вы набираете текст, оно может исчезнуть, прежде чем прочитать сообщение.
Для пользователей KDE:
$ kdialog --title "Long process completed!" --passivepopup "This popup will disappear in 5 seconds" 5 &
Существует кроссплатформенное решение под названием Yfiton:
$ yfiton -n desktop -Pmessage="Lunch time!" -Pposition=TOP_RIGHT
Всплывающее уведомление, которое автоматически закрывается через 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'
В сценарии оболочки вы также можете вызвать утилиту osd_cat из libxosd.