How to display GUI dialog in bash script using Zenity

How to display GUI dialog in bash script using Zenity

We all know that Linux bash scripts are the real advantage of Linux. Usually, we want to display a graphical user interface (GUI) in the script to simplify the interaction with the user. The GUI makes any script more user-friendly and beautiful.

For GTK in Shell scripts, many options and tools are provided in Linux.

In this article, we will show you how to use Zenity to display GUI dialogs in Bash scripts.

Zenity is an open source application for displaying simple GUI in shell script. By displaying the GTK+ dialog box, it makes the script more user-friendly. Zenity is a convenient command line tool for modern shell scripting. Zenity is easy to use and is a cross-platform application.


A sudo user with root privileges.

Install Zenity

Zenity is part of the GNOME desktop, and by default, it is installed in most Linux distributions. You can verify the Zenity installation on the system by executing the following command in the terminal.

zenity --version

If Zenity is not installed on your system, you can use Easy, dnf or Pac-Man For Ubuntu/Debian based systems:

sudo apt-get install zenity

For RedHat-based systems:

dnf install zenity

For Arch-based systems:

pacman -S zenity

Zenity general options

Zenity can use some general options alone. The general options are –title, –window-icon, –width, –height, –timeout

You can use the — title option to specify a title for the dialog window.

You can use the –window-icon option to specify an icon that will be used as the icon for the “Zenity” dialog box.

Not only that, but you can also set the width and height of the Zenity dialog box by setting the –width and –height options in the Zenity command.

By using the –timeout option, you can set the timeout period of the dialog box, and the dialog box will automatically close.

Zenity message box

You can use simple Zenity commands from the terminal to create some basic and nice GUI message dialogs. There are four message dialogs provided in Zenity.

  • information
  • error
  • problem
  • caveat

1. Information dialog

You can create an information dialog box by running the following command in the terminal:

zenity --info --text="Software Update Available." --width=500

2. Error dialog

Execute the following command to display the error dialog

zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200

Use bash script to display error dialog

3. A question dialog

You can easily ask “Yes, yes” by executing the following command:

zenity --question --text="Do you want to reboot pc?" --width=200

Dialog in bashYou can use the Zenity Question dialog box in a shell script as follows:

#/bin/bashtouch demo.txtif zenity --question --title="Confirm deletion" --text="Are you sure you want to demo.txt file?" --no-wrap    then    rm demo.txt    zenity --info --title="Success" --text="demo.text was removed" --no-wrapfi

4. Warning dialog

zenity --warning --title="Update Available" --text="OS Update required" --width=200

Bash displays a warning dialog


You can use Zenity to display notifications.

zenity --notification --text "Good Morning"

Use bash script to display desktop notifications in GNOME

Zenity input box

With Zenity, you can create simple dialogs that take input from the user and display it as standard output.

Here are some input boxes:


The “Calendar” dialog box displays the calendar and returns the date selected by the user as standard output.

zenity --calendar

Calendar input from bash script

Text input dialog

You can use the –entry option to create a text input dialog. This feature is very useful when you want to ask the user to enter some text.

zenity --entry --title "User Info" --text "Please enter your name"

List dialog

You can use the –list option to create a multi-column dialog box, where you need to enter the data in the list dialog box column by column and row by row. You can use checkboxes or redo boxes with the list dialog box as shown below:

zenity --list  --title "Choose Processor" --radiolist  --column "ID" --column="Name" 1 AMD 2 Intel

List dialog

You can also add the –list option to the checkbox to make multiple selections.

Checkbox options for bash

zenity --list --title "Packages" --list  --text "select packages you want to install" --checklist --column "id"  --column "Name" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
OutputGoogle Chrome|VLC|Firefox

Color selection dialog

You can use the –color-selection option to get the color selection value from the user.

zenity --color-selection --show-palette

Bash script color picker

File selection dialog

You can use the –file-selection option to capture the selected file or directory as standard output. You can also save the file using the –file-selection option.

zenity --file-selection --multiple --filename "/"

Open file selection box from bash

Progress dialog

You can use the –progress option to create a nice progress bar. This is very useful in many situations where you can show the user an application or script completion progress bar. Below the command with a display download progress bar.

(wget -r  --no-parent patch -A.tar.gz -P /tmp 2>&1 ) | sed -u 's/.* ([0-9]+%) +([0-9.]+.) (.*)/1n# Downloading at 2/s, ETA 3/' | zenity --progress --title="Downloading File..." --percentage=1 --pulsate

To get more progress options, run the following command in the terminal

zenity --help-progress

For more Zenity options, you can use Man’s enthusiasm with Zenity-Help.

in conclusion

In the above guide, you learned how to write a bash script to display GUI dialogs using Zenity and make Bash scripts more user-friendly. If you have any questions, please feel free to ask me.


Related Posts