Як створити вікно повідомлення з командного рядка?


65

Або поля графічних повідомлень GUI, або поля повідомлень, які відображаються всередині терміналу.

Також було б цікаво отримати можливість простого введення даних від користувача, наприклад, так / ні або кнопки радіо.


8
Що ви маєте на увазі під "полем повідомлень"? Графічне поле попередження, спливаюче вікно повідомлення? Щось ще?
полім

Відповіді:


110

Для стандартного "поля навколо повідомлення" використовуйте boxes:

echo 'This is a test' | boxes

boxesбуде виглядати приблизно так (Перший. Другий - такий, як на замовлення cowsay):

Знімок екрана зірочки та собаки мистецтва ASCII, що тримає знак тексту


Якщо ви маєте на увазі вікно попередження, використовуйте notify-send:

notify-send 'title' 'message'

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

Спливаюче повідомлення з надписом "Здрастуйте, попелястий кадр ..."


Ви також можете використовувати zenityдля спливаючого вікна:

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

Зеніт є більш графічним і має більше варіантів, як, наприклад, вікно з’являється як питання, використовуючи:

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 виглядає так:

спливаюче вікно whiptail з двома текстовими кнопками


А якщо ви справді божевільний, використовуйте toilet:

toilet -F border -F gay "CRAZY"

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

барвисте текстове поле з написом "CRAZY"


3
Дійсно повна відповідь, це корисно! Дякую!

Відмінна підписка, @polym - я буду використовуватись zenityна власні нерви раз на місяць у відділі оновлень та оновлень ...
Frank Nocke

27

xmessage

Це сповіщення прадіда GUI:

xmessage -center "Hello, World!"

Чисте ретро добро.

Я також думаю, що він повинен бути широко доступним у системах X11.

Так нитка: Як показати вікно повідомлення графічного інтерфейсу зі скрипту bash в Linux? | Переповнення стеку

Тестовано в Ubuntu 18.04.


Працював з коробки на моїй установці Openbox. Дякую!
aexl

xmessageнавіть встановлено на сервері Ubuntu за замовчуванням. Тож я можу використовувати ssh -Y <host> для входу в машину під час пересилання x з'єднань, а потім запустити, some-command; xmessage "some-command is done"щоб спливати сповіщення на робочому столі, коли команда тривалої роботи закінчена.
Стівен Остерміллер

@StephenOstermiller так, це гарна порада!
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
Класна команда. Для автоматичного видалення повідомлення через кілька секунд: xmessage -timeout 10 "Goodbye in 10s!".
AlainD

8

І тоді лише тому, що повністю у верхній відповіді @ polym пропущено класичне повідомлення:

write <username> [<terminal>]- надіслати повідомлення іншому користувачеві. Або інтерактивно, або як частина труби зecho "message" | write username

писати


І додаток написати, wallвідправити повідомлення всім користувачам

стіна


1

Якщо ви готові передати текст на обгортку Python, ви можете використовувати terminaltables:

pip3 install colorclass
pip3 install terminaltables

Потім в GitHub Repo ви можете використовувати один із прикладів для написання обгортки пітона.

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

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