Как создать окно сообщения из командной строки?

65

Либо окна сообщений графического интерфейса, либо окна сообщений, которые отображаются внутри терминала.

Также было бы интересно иметь возможность получить простой ввод от пользователя, например, да / нет или переключатели.

user62511
источник
8
Что вы подразумеваете под «окном сообщения»? Графическое окно предупреждения, всплывающее окно сообщения? Что-то другое?
полим

Ответы:

110

Для стандартного «окна вокруг сообщения» используйте boxes:

echo 'This is a test' | boxes

boxesбудет выглядеть так (Первый. Второй - как cowsay):

Скриншот коробки со звездочкой и собаки ASCII-art с табличкой с текстом


Если вы имеете в виду окно предупреждения, используйте notify-send:

notify-send 'title' 'message'

notify-send выглядит так:

Всплывающее сообщение с надписью "Hello Ashframe ..."


Вы также можете использовать zenityдля всплывающего окна:

zenity --error --text="An error occurred\!" --title="Warning\!"

Zenity более графичен и имеет больше опций, таких как отображение окна в виде вопроса, используя:

zenity --question --text="Do you wish to continue/?"

или даже индикаторы выполнения, используя:

find /usr | zenity --progress --pulsate --auto-close --auto-kill --text="Working..."

zenity выглядит так:

диалоговые окна с ошибками, вопросами, информацией и предупреждениями с кнопками


Или используйте dialogдля окна сообщения только для командной строки:

dialog --checklist "Choose OS:" 15 40 5 \
1 Linux off \
2 Solaris on \
3 'HP UX' off \
4 AIX off

dialog выглядит так:

диалоговый TUI с 4 вариантами


Другой вариант whiptail:

whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78

whiptail выглядит так:

всплывающее окно с двумя текстовыми кнопками


И если вы действительно сумасшедший, используйте toilet:

toilet -F border -F gay "CRAZY"

toilet выглядит так:

красочное текстовое поле с надписью "CRAZY"

Polym
источник
3
Действительно полный ответ, это полезно! Спасибо!
Отличная рецензия, @polym - я буду использовать zenityсвои собственные нервы раз в месяц в отделе обновлений и обновлений ...
Фрэнк Ноке,
27

xmessage

Это дедушка оповещений GUI:

xmessage -center "Hello, World!"

Чистое ретро совершенство.

Могу поспорить, что он должен быть широко доступен в системах X11.

SO thread: Как показать окно сообщения GUI из скрипта bash в linux? | Переполнение стека

Проверено в Ubuntu 18.04.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
Работал из коробки на моей установке Openbox. Спасибо!
aexl
xmessageпо умолчанию даже установлен на Ubuntu Server. Таким образом, я могу ssh -Y <host> войти в систему на машине, переадресовывая x-соединения, а затем запустить ее, some-command; xmessage "some-command is done"чтобы вызвать уведомление на моем рабочем столе, когда длинная команда будет завершена.
Стивен Остермиллер
@ StefhenOstermiller да, это хороший совет!
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
1
Классная команда. Для автоматического удаления сообщения через несколько секунд: xmessage -timeout 10 "Goodbye in 10s!".
AlainD
8

И тогда просто потому, что @ polym полностью перебил ответ, пропустив классический обмен сообщениями:

write <username> [<terminal>]- отправить сообщение другому пользователю. В интерактивном режиме или как часть трубы сecho "message" | write username

записывать


И дополнение, чтобы написать, wallчтобы отправить сообщение всем пользователям

стена

HBruijn
источник
1

Если вы хотите передать текст в оболочку Python, вы можете использовать terminaltables:

pip3 install colorclass
pip3 install terminaltables

Затем в GitHub Repo вы можете использовать один из примеров для написания оболочки Python.

введите описание изображения здесь

not2qubit
источник