98

Большинство приложений могут отображать красиво отформатированные уведомления о событиях, которые появляются в верхнем правом углу экрана. Я собираюсь написать сценарий bash, который будет долго обрабатываться в фоновом режиме, и я действительно хочу знать, когда он закончится. Как я могу показать это приятное уведомление от bash-скрипта?

7 ответов7

113

Если вы используете новую систему уведомлений в 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.
26

Нашел другой путь, через Zenity

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

(Это также имеет то преимущество, что уже установлено в Ubuntu.)

12

Также есть xmessage, которое откроет окно, поэтому оно должно работать на любой системе X11.

Pro: также позволяет интерактивно подсказывать пользователю кнопки.

Con: Как и любое всплывающее предупреждение, оно обычно получает фокус, поэтому, если вы набираете текст, оно может исчезнуть, прежде чем прочитать сообщение.

10

Для пользователей KDE:

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

Существует кроссплатформенное решение под названием Yfiton:

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

Всплывающее уведомление, которое автоматически закрывается через 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

2

В сценарии оболочки вы также можете вызвать утилиту osd_cat из libxosd.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .