Open main menu

CDOT Wiki β

How to Use Zenity

Definition of Zenity

Zenity is a Linux / Unix command that uses dialog boxes to make shell script more graphical to end-users.

Here is a link to the Wikipedia definition of the Zenity command:

Features of Zenity

There are many different types of dialog boxes that the Zenity command can create. The following is a table that uses options (starting with -- symbol immediately followed by a word to indicate the type dialog box to generate. You are encouraged to use the online man pages to refer to all options, but here are a couple of options:

--calendar Display calendar dialog
--entry Display text entry dialog
--error Display error dialog
--file-selection Display file selection dialog
--info Display info dialog
--list Display list dialog
--notification Display notification icon
--progress Display progress indication dialog
--question Display question dialog
--text-info Display text information dialog
--warning Display warning dialog
--scale Display scale dialog

Adding the --text option provides the dialog box to contain text to provide information for the user (output, or helping guide the user when prompting for a question).

Don't Make it Complicated

Using Zenity is easy - don't make it complicated!

For example, think of Zenity as a replacement for the echo command to display output. You can use --info to display standard input, and --error to display standard error messages.

To obtain input, think of Zenity as a replacement for the read command. You can use --entry to prompt the user for input. When the user enters text and clicks the OK button, or presses the <ENTER> key, zenity will return the value of that entered text.

All of the zenity dialog boxes that prompt users for information, return that information as standard output (stdout). Therefore, to store it into a variable to be used later in the program, you can use command substitution (enough said, since this is being used for an assignment! You figure it out :) ... ).

To obtain more options with this command, you should use the man pages... (eg. man zenity).

Simple Examples

Displaying Output

zenity --info --text "Here is an example of using zenity command to display text in a dialog box instead instead of using echo to display in a shell..."
Here is output from above command:

Prompting User for Input

zenity --entry --text "Please enter your full name"
Here is input dialog box for user to enter input:

Prompting User (Menu Selection)

zenity --list --radiolist --text "<b>Please</b> make a selection:" --hide-header --column "Buy" --column "Item" FALSE "Door 1" FALSE "Door 2" FALSE "Door 3" FALSE Quit
Here is input dialog box for user to make a selection from a menu:

Piping Command Output to a Graphical Display

cal | zenity --text-info
Here is input dialog box to display stdout from a command graphically as opposed to in a shell:

Displaying Text Over Several Lines

zenity --info --text "Sentence1\n\nSentence2\n\nSentence3"
Here is output from above command. Notice how each sentence appears on a separate line. The "\n" character represents a new-line:

Have fun :)

Murray Saul