Jak utworzyć okno komunikatu z wiersza poleceń?

65

Albo okna komunikatów GUI, albo okna komunikatów wyświetlane w terminalu.

Interesujące byłoby również uzyskanie prostego wejścia z powrotem od użytkownika, np. Tak / nie lub przycisków opcji.

użytkownik62511
źródło
8
Co rozumiesz przez „okno komunikatu”? Graficzne ostrzeżenie, wyskakujące okno komunikatu? Coś innego?
polim

Odpowiedzi:

110

W przypadku standardowego „pola wokół wiadomości” użyj boxes:

echo 'This is a test' | boxes

boxesbędzie wyglądać tak (Pierwszy. Drugi jest niestandardowy jak cowsay):

Zrzut ekranu przedstawiający gwiazdkę i psa ASCII-art trzymającego znak tekstu


Jeśli masz na myśli pole ostrzeżenia, użyj notify-send:

notify-send 'title' 'message'

notify-send wygląda tak:

Komunikat wyskakujący z komunikatem „Hello Ashframe ...”


Możesz także użyć zenityokna wyskakującego:

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

Zenity jest bardziej graficzny i ma więcej opcji, takich jak wyświetlanie okna jako pytania, przy użyciu:

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

a nawet paski postępu, używając:

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

zenity wygląda tak:

okna dialogowe błędów, pytań, informacji i ostrzeżeń z przyciskami


Lub użyj dialog, aby wyświetlić okno komunikatu tylko z wiersza poleceń:

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

dialog wygląda tak:

okno dialogowe TUI z 4 opcjami


Inną opcją jest whiptail:

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

whiptail wygląda tak:

wyskakujące okienko z dwoma przyciskami tekstowymi


A jeśli jesteś naprawdę szalony, użyj toilet:

toilet -F border -F gay "CRAZY"

toilet wygląda tak:

kolorowe pole tekstowe z napisem „SZALONY”

polim
źródło
3
Naprawdę pełna odpowiedź, jest przydatna! Dziękuję Ci!
Doskonałe napisanie, @polym - Będę zenitysię denerwować raz w miesiącu w dziale aktualizacji i aktualizacji ...
Frank Nocke,
27

xmessage

Oto dziadek alertów GUI:

xmessage -center "Hello, World!"

Dobroć w stylu retro.

Założę się również, że powinien być szeroko dostępny na systemach X11.

Wątek SO: Jak wyświetlić okno komunikatu GUI ze skryptu bash w systemie Linux? | Przepełnienie stosu

Testowane w Ubuntu 18.04.

Ciro Santilli
źródło
Wyszło z pudełka na mojej instalacji Openbox. Dzięki!
aexl
xmessagejest nawet domyślnie instalowany na Ubuntu Server. Więc mogę użyć ssh -Y <host> do zalogowania się na maszynie podczas przekazywania x połączeń, a następnie uruchomić, some-command; xmessage "some-command is done"aby wyświetlić powiadomienie na pulpicie, gdy zakończy się długo działające polecenie.
Stephen Ostermiller
@StephenOstermiller tak, to dobra wskazówka!
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Fajne polecenie. Aby automatycznie usunąć komunikat po kilku sekundach: xmessage -timeout 10 "Goodbye in 10s!".
AlainD
8

A potem tylko dlatego, że @ polym jest całkowicie ponad odpowiedzią, pomija klasyczny komunikat:

write <username> [<terminal>]- wysłać wiadomość do innego użytkownika. Interaktywnie lub jako część potoku zecho "message" | write username

pisać


I uzupełnienie do napisania, wallaby wysłać wiadomość do wszystkich użytkowników

Ściana

HBruijn
źródło
1

Jeśli chcesz przesłać tekst do otoki Pythona, możesz użyć terminaltables:

pip3 install colorclass
pip3 install terminaltables

Następnie w repozytorium GitHub możesz użyć jednego z przykładów, aby napisać opakowanie w języku Python.

wprowadź opis zdjęcia tutaj

not2qubit
źródło