61

Either GUI message boxes, or message boxes that show inside the terminal.

It would also be interesting to be able to get simple input back from the user, e.g. yes / no or radio buttons.

  • 8
    What do you mean by "message box"? A graphic alert box, a popup message box? Something else? – polym Jul 16 '14 at 18:44
105

For a standard "box around a message", use boxes:

echo 'This is a test' | boxes

boxes will look like this (First one. Second one is a custom like cowsay):

Screenshot of an asterix box and an ASCII-art dog holding a sign of text


If you mean an alert box, use notify-send:

notify-send 'title' 'message'

notify-send looks like this:

Pop-up message reading "Hello Ashframe..."


You also can use zenity for a popup window:

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

Zenity is more graphical and has more options, like having the window appear as a question, using:

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

or even progress bars, using:

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

zenity looks like this:

error, question, info, and warning dialog boxes with buttons


Or use dialog, for a command-line only message box:

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

dialog looks like this:

dialog TUI with 4 options


Another option is whiptail:

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

whiptail looks like this:

whiptail pop-up box with two text buttons


And if you are truly crazy, use toilet:

toilet -F border -F gay "CRAZY"

toilet looks like this:

colorful text box reading "CRAZY"

  • 2
    Really complete answer, it's useful! Thank you! – user129371 Mar 21 '17 at 0:46
24

xmessage

This is the granddaddy of GUI alerts:

xmessage -center "Hello, World!"

Pure retro goodness.

I also bet that it should be widely available on X11 systems.

SO thread: How to show a GUI message box from a bash script in linux? | Stack Overflow

Tested in Ubuntu 18.04.

  • Worked out of the box on my Openbox install. Thanks! – aexl Nov 20 '18 at 18:52
  • xmessage is even installed on Ubuntu Server by default. So I can use ssh -Y <host> to log into the machine while forwarding x connections and then run some-command; xmessage "some-command is done" to pop up a notification on my desktop when the long running command is finished. – Stephen Ostermiller May 3 at 20:30
  • @StephenOstermiller yes, that is a good tip! – Ciro Santilli 新疆改造中心996ICU六四事件 May 3 at 21:27
8

And then just because @polym's completely over the top answer missed the classic messaging:

write <username> [<terminal>] - send a message to another user. Either interactively or as part of a pipe with echo "message" | write username

write


And the complement to write, wall to send a message to all users

wall

1

If you are willing to pipe the text to a Python wrapper, you can use terminaltables:

pip3 install colorclass
pip3 install terminaltables

Then in the GitHub Repo, you can use one of the examples to write a python wrapper.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.