Dialog: An Introductory Tutorial

 in
Linux is based on the Unix operating system, but also features a number of unique and useful kernel features and application programs that often go beyond what is available under Unix. One little-known gem is “dialog”, a utility for creating professional-looking dialog boxes from within shell scripts. This article presents a tutorial introduction to the dialog utility, and shows examples of how an
Advanced Features

There are several more things that dialog can do. You can create and use a dialogrc file to customize the color and appearance of the dialog boxes. Dialog also supports displays that do not provide color or graphics characters. The details are given in the man page.

Dialog is “8-bit clean”, meaning that that international character sets other than the standard US ASCII are supported.

More Applications

For some longer examples of using dialog you can look at the sample scripts included with the dialog source code. Under Slackware Linux, the system configuration scripts can be found in /usr/lib/setup.

There are undoubtedly many possible uses for dialog. You could, for example, create a fully menu-driven interface for Linux users not familiar with shell commands. This could even be expanded into a simple bulletin board system that allowed users to read mail and Usenet news, edit files, etc.

The example sound driver script could be expanded into a tool for configuring all of the kernel compile options.

Incidently, dialog is reasonably portable and should run with minimal changes on any Unix-compatible system that has a curses library. It can also be used from any shell script language.

Listing 1. Sound Driver Configuration Utility

Conclusions

Dialog is a simple yet powerful utility, true to the Unix tradition of making each tool do one thing well. It can add a polished look to your applications and make them easier to use.

Thank you to Savio Lam, the author of the dialog package, Stuart Herbert, who updated dialog to version 0.4, and Patrick Volkerding, who wrote the dialog-based setup scripts in the Slackware Linux distribution.

(Jeff_Tranter@mitel.com) is a software designer for a high-tech telecommunications company in Kanata, Canada. He bought a PC just over 18 months ago in order to run Linux and has not looked back since. He is the author of Linux Sound and CD-ROM HOWTO documents.

______________________

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Dialog Not displaying correctly

artee_83's picture

Hi Guys,

I'm writing an application using dialog for a production machine that does not have any window managers or desktops installed. My development environment has a gnome desktop and the terminal window seems to display dialogs correctly, but when I copy the script to the production environment, the display is misaligned and does not look as neat as what I see in the development environment.

I've tested the application on the production machine in a telnet session from my development machine, and then it displays correctly, so I can only assume that something is wrong with the terminal settings on the actual production environment.

Both operating systems are exactly the same. Do I need to change any terminal settings or configurations to make the dialogs display correctly?

Thanks

using dialog in Red hat Linux or SUSE linux

Anonymous's picture

How do i use the dialog facility on Red Hat Linux and/or SUSe Linux. can you give a link where one can download the package

Standard Package Manger

Mitch Frazier's picture

You should be able to find them in the standard repositories using the standard package managers. On SuSE use zypper (or yast). On Red Hat use yum. From a shell prompt do:

  suse$ zypper install dialog
  redhat$ yum install dialog

Mitch Frazier is an Associate Editor for Linux Journal.

corrections

cosmolee's picture

The lines:

dialog --title "Message" --yesno "Are you having\ fun?" 6 25
dialog --menu "Choose one:" 10 30 3 1 red 2 green\ 3 blue

should read:

dialog --title "Message" --yesno "Are you having fun?" 6 25
dialog --menu "Choose one:" 10 30 3 1 red 2 green 3 blue

the backslash is only needed to escape a new-line character for commands written over multiple shell command-lines. There are other occurences of this type of error in the article. This may have occured because of the web content software used on this site causing lines to be concatenated.

Check out the `Xdialog` package (http://xdialog.dyns.net/), which is a drop-in replacement for `dialog`, but does the same thing for an X Window GUI environment. Also, newer versions of `dialog` are sometimes referred to as `cdialog` (http://freshmeat.net/projects/cdialog/).

HTH.

White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState