1DIALOG(1) General Commands Manual DIALOG(1)
2
3
4
6 dialog - display dialog boxes from shell scripts
7
9 dialog --clear
10 dialog --create-rc file
11 dialog --print-maxsize
12 dialog common-options box-options
13
15 Dialog is a program that will let you present a variety of questions or
16 display messages using dialog boxes from a shell script. These types
17 of dialog boxes are implemented (though not all are necessarily com‐
18 piled into dialog):
19
20 buildlist, calendar, checklist, dselect, editbox, form, fselect,
21 gauge, infobox, inputbox, inputmenu, menu, mixedform,
22 mixedgauge, msgbox (message), passwordbox, passwordform, pause,
23 prgbox, programbox, progressbox, radiolist, rangebox, tailbox,
24 tailboxbg, textbox, timebox, treeview, and yesno (yes/no).
25
26 You can put more than one dialog box into a script:
27
28 · Use the "--and-widget" token to force dialog to proceed to the next
29 dialog unless you have pressed ESC to cancel, or
30
31 · Simply add the tokens for the next dialog box, making a chain. Di‐
32 alog stops chaining when the return code from a dialog is nonzero,
33 e.g., Cancel or No (see DIAGNOSTICS).
34
35 Some widgets, e.g., checklist, will write text to dialog's output.
36 Normally that is the standard error, but there are options for changing
37 this: “--output-fd”, “--stderr” and “--stdout”. No text is written if
38 the Cancel button (or ESC) is pressed; dialog exits immediately in that
39 case.
40
42 All options begin with “--” (two ASCII hyphens, for the benefit of
43 those using systems with deranged locale support).
44
45 A “--” by itself is used as an escape, i.e., the next token on the com‐
46 mand-line is not treated as an option.
47 dialog --title -- --Not an option
48
49 The “--args” option tells dialog to list the command-line parameters to
50 the standard error. This is useful when debugging complex scripts us‐
51 ing the “--” and “--file”, since the command-line may be rewritten as
52 these are expanded.
53
54 The “--file” option tells dialog to read parameters from the file named
55 as its value.
56 dialog --file parameterfile
57
58 Blanks not within double-quotes are discarded (use backslashes to quote
59 single characters). The result is inserted into the command-line, re‐
60 placing “--file” and its option value. Interpretation of the command-
61 line resumes from that point. If parameterfile begins with “&”, dialog
62 interprets the following text as a file descriptor number rather than a
63 filename.
64
65 Most widgets accept height and width parameters, which can be used to
66 automatically size the widget to accommodate multi-line message prompt
67 values:
68
69 · If the parameter is negative, dialog uses the screen's size.
70
71 · If the parameter is zero, dialog uses minimum size for the widget
72 to display the prompt and data.
73
74 · Otherwise, dialog uses the given size for the widget.
75
76 Common Options
77 Most of the common options are reset before processing each widget.
78
79 --ascii-lines
80 Rather than draw graphics lines around boxes, draw ASCII “+” and
81 “-” in the same place. See also “--no-lines”.
82
83 --aspect ratio
84 This gives you some control over the box dimensions when using
85 auto sizing (specifying 0 for height and width). It represents
86 width / height. The default is 9, which means 9 characters wide
87 to every 1 line high.
88
89 --backtitle backtitle
90 Specifies a backtitle string to be displayed on the backdrop, at
91 the top of the screen.
92
93 --begin y x
94 Specify the position of the upper left corner of a dialog box on
95 the screen.
96
97 --cancel-label string
98 Override the label used for “Cancel” buttons.
99
100 --clear
101 Clears the widget screen, keeping only the screen_color back‐
102 ground. Use this when you combine widgets with “--and-widget”
103 to erase the contents of a previous widget on the screen, so it
104 won't be seen under the contents of a following widget. Under‐
105 stand this as the complement of “--keep-window”. To compare the
106 effects, use these:
107
108 All three widgets visible, staircase effect, ordered 1,2,3:
109
110 dialog \
111 --begin 2 2 --yesno "" 0 0 \
112 --and-widget --begin 4 4 --yesno "" 0 0 \
113 --and-widget --begin 6 6 --yesno "" 0 0
114
115 Only the last widget is left visible:
116
117 dialog \
118 --clear --begin 2 2 --yesno "" 0 0 \
119 --and-widget --clear --begin 4 4 --yesno "" 0 0 \
120 --and-widget --begin 6 6 --yesno "" 0 0
121
122 All three widgets visible, staircase effect, ordered 3,2,1:
123
124 dialog \
125 --keep-window --begin 2 2 --yesno "" 0 0 \
126 --and-widget --keep-window --begin 4 4 --yesno "" 0 0 \
127 --and-widget --begin 6 6 --yesno "" 0 0
128
129 First and third widget visible, staircase effect, ordered 3,1:
130
131 dialog \
132 --keep-window --begin 2 2 --yesno "" 0 0 \
133 --and-widget --clear --begin 4 4 --yesno "" 0 0 \
134 --and-widget --begin 6 6 --yesno "" 0 0
135
136 Note, if you want to restore original console colors and send
137 your cursor home after the dialog program has exited, use the
138 clear (1) command.
139
140 --colors
141 Interpret embedded “\Z” sequences in the dialog text by the fol‐
142 lowing character, which tells dialog to set colors or video at‐
143 tributes:
144
145 · 0 through 7 are the ANSI color numbers used in curses:
146 black, red, green, yellow, blue, magenta, cyan and white re‐
147 spectively.
148
149 · Bold is set by 'b', reset by 'B'.
150
151 · Reverse is set by 'r', reset by 'R'.
152
153 · Underline is set by 'u', reset by 'U'.
154
155 · The settings are cumulative, e.g., “\Zb\Z1” makes the fol‐
156 lowing text bold (perhaps bright) red.
157
158 · Restore normal settings with “\Zn”.
159
160 --column-separator string
161 Tell dialog to split data for radio/checkboxes and menus on the
162 occurrences of the given string, and to align the split data in‐
163 to columns.
164
165 --cr-wrap
166 Interpret embedded newlines in the dialog text as a newline on
167 the screen. Otherwise, dialog will only wrap lines where needed
168 to fit inside the text box.
169
170 Even though you can control line breaks with this, Dialog will
171 still wrap any lines that are too long for the width of the box.
172 Without cr-wrap, the layout of your text may be formatted to
173 look nice in the source code of your script without affecting
174 the way it will look in the dialog.
175
176 The cr-wrap feature is implemented subject to these conditions:
177
178 · the string contains “\n” and the --no-nl-expand option is
179 not used, or
180
181 · the --trim option is used.
182
183 For more information, see Whitespace Options.
184
185 --create-rc file
186 When dialog supports run-time configuration, this can be used to
187 dump a sample configuration file to the file specified by file.
188
189 --date-format format
190 If the host provides strftime, this option allows you to specify
191 the format of the date printed for the --calendar widget. The
192 time of day (hour, minute, second) are the current local time.
193
194 --defaultno
195 Make the default value of the yes/no box a No. Likewise, treat
196 the default button of widgets that provide “OK” and “Cancel” as
197 a Cancel. If “--nocancel” or “--visit-items” are given those
198 options overrides this, making the default button always “Yes”
199 (internally the same as “OK”).
200
201 --default-button string
202 Set the default (preselected) button in a widget. By preselect‐
203 ing a button, a script makes it possible for the user to simply
204 press Enter to proceed through a dialog with minimum interac‐
205 tion.
206
207 The option's value is the name of the button: ok, yes, cancel,
208 no, help or extra.
209
210 Normally the first button in each widget is the default. The
211 first button shown is determined by the widget together with the
212 “--nook” and “--nocancel” options. If this option is not given,
213 there is no default button assigned.
214
215 --default-item string
216 Set the default item in a checklist, form or menu box. Normally
217 the first item in the box is the default.
218
219 --exit-label string
220 Override the label used for “EXIT” buttons.
221
222 --extra-button
223 Show an extra button, between “OK” and “Cancel” buttons.
224
225 --extra-label string
226 Override the label used for “Extra” buttons. Note: for input‐
227 menu widgets, this defaults to “Rename”.
228
229 --help Prints the help message to the standard output and exits. The
230 help message is also printed if no options are given, or if an
231 unrecognized option is given.
232
233 --help-button
234 Show a help-button after “OK” and “Cancel” buttons in boxes
235 which have a list of tagged items (i.e., checklist, radiolist,
236 menu, and treeview boxes).
237
238 On exit, the return status indicates that the Help button was
239 pressed. Dialog also writes a message to its output after the
240 token “HELP”:
241
242 · If "--item-help" is also given, the item-help text is writ‐
243 ten.
244
245 · Otherwise, the item's tag (the first field) is written.
246
247 You can use the --help-tags option and/or set the DIA‐
248 LOG_ITEM_HELP environment variable to modify these messages and
249 exit-status.
250
251 This option can be applied to other widgets, which have an “OK”
252 button, whether or not the “Cancel” button is used. The return
253 status and output are not treated specially for the other wid‐
254 gets; the help-button is just an extra button.
255
256 --help-label string
257 Override the label used for “Help” buttons.
258
259 --help-status
260 If the help-button is selected, writes the checklist, radiolist
261 or form information after the item-help “HELP” information.
262 This can be used to reconstruct the state of a checklist after
263 processing the help request.
264
265 --help-tags
266 Modify the messages written on exit for --help-button by making
267 them always just the item's tag. This does not affect the exit
268 status code.
269
270 --hfile filename
271 Display the given file using a textbox when the user presses F1.
272
273 --hline string
274 Display the given string centered at the bottom of the widget.
275
276 --ignore
277 Ignore options that dialog does not recognize. Some well-known
278 ones such as “--icon” are ignored anyway, but this is a better
279 choice for compatibility with other implementations.
280
281 --input-fd fd
282 Read keyboard input from the given file descriptor. Most dialog
283 scripts read from the standard input, but the gauge widget reads
284 a pipe (which is always standard input). Some configurations do
285 not work properly when dialog tries to reopen the terminal. Use
286 this option (with appropriate juggling of file-descriptors) if
287 your script must work in that type of environment.
288
289 --insecure
290 Makes the password widget friendlier but less secure, by echoing
291 asterisks for each character.
292
293 --iso-week
294 Set the starting point for the week-number shown in the “--cal‐
295 endar” option according to ISO-8601, which starts numbering with
296 the first week which includes a Thursday in January.
297
298 --item-help
299 Interpret the tags data for checklist, radiolist and menu boxes
300 adding a column which is displayed in the bottom line of the
301 screen, for the currently selected item.
302
303 --keep-tite
304 When built with ncurses, dialog normally checks to see if it is
305 running in an xterm, and in that case tries to suppress the ini‐
306 tialization strings that would make it switch to the alternate
307 screen. Switching between the normal and alternate screens is
308 visually distracting in a script which runs dialog several
309 times. Use this option to allow dialog to use those initializa‐
310 tion strings.
311
312 --keep-window
313 Normally when dialog performs several tailboxbg widgets connect‐
314 ed by “--and-widget”, it clears the old widget from the screen
315 by painting over it. Use this option to suppress that repaint‐
316 ing.
317
318 At exit, dialog repaints all of the widgets which have been
319 marked with “--keep-window”, even if they are not tailboxbg wid‐
320 gets. That causes them to be repainted in reverse order. See
321 the discussion of the “--clear” option for examples.
322
323 --last-key
324 At exit, report the last key which the user entered. This is
325 the curses key code rather than a symbol or literal character,
326 and is only reported for keys which are bound to an action. It
327 can be used by scripts to distinguish between two keys which are
328 bound to the same action.
329
330 --max-input size
331 Limit input strings to the given size. If not specified, the
332 limit is 2048.
333
334 --no-cancel
335
336 --nocancel
337 Suppress the “Cancel” button in checklist, inputbox and menu box
338 modes. A script can still test if the user pressed the ESC key
339 to cancel to quit.
340
341 --no-collapse
342 Normally dialog converts tabs to spaces and reduces multiple
343 spaces to a single space for text which is displayed in a mes‐
344 sage boxes, etc. Use this option to disable that feature. Note
345 that dialog will still wrap text, subject to the “--cr-wrap” and
346 “--trim” options.
347
348 The no-collapse feature is implemented subject to these condi‐
349 tions:
350
351 · the string contains “\n” and the --no-nl-expand option is
352 not used, or
353
354 · the --trim option is not used.
355
356 For more information, see Whitespace Options.
357
358 --no-items
359 Some widgets (checklist, inputmenu, radiolist, menu) display a
360 list with two columns (a “tag” and “item”, i.e., “description”).
361 This option tells dialog to read shorter rows, omitting the
362 “item” part of the list. This is occasionally useful, e.g., if
363 the tags provide enough information.
364
365 See also --no-tags. If both options are given, this one is ig‐
366 nored.
367
368 --no-kill
369 Tells dialog to put the tailboxbg box in the background, print‐
370 ing its process id to dialog's output. SIGHUP is disabled for
371 the background process.
372
373 --no-label string
374 Override the label used for “No” buttons.
375
376 --no-lines
377 Rather than draw lines around boxes, draw spaces in the same
378 place. See also “--ascii-lines”.
379
380 --no-mouse
381 Do not enable the mouse.
382
383 --no-nl-expand
384 Do not convert “\n” substrings of the message/prompt text into
385 literal newlines.
386
387 The no-nl-expand feature is used only if the string contains
388 “\n” so that there is something to convert.
389
390 For more information, see Whitespace Options.
391
392 --no-ok
393
394 --nook Suppress the “OK” button in checklist, inputbox and menu box
395 modes. A script can still test if the user pressed the “Enter”
396 key to accept the data.
397
398 --no-shadow
399 Suppress shadows that would be drawn to the right and bottom of
400 each dialog box.
401
402 --no-tags
403 Some widgets (checklist, inputmenu, radiolist, menu) display a
404 list with two columns (a “tag” and “description”). The tag is
405 useful for scripting, but may not help the user. The --no-tags
406 option (from Xdialog) may be used to suppress the column of tags
407 from the display. Unlike the --no-items option, this does not
408 affect the data which is read from the script.
409
410 Xdialog does not display the tag column for the analogous
411 buildlist and treeview widgets; dialog does the same.
412
413 Normally dialog allows you to quickly move to entries on the
414 displayed list, by matching a single character to the first
415 character of the tag. When the --no-tags option is given, dia‐
416 log matches against the first character of the description. In
417 either case, the matchable character is highlighted.
418
419 --ok-label string
420 Override the label used for “OK” buttons.
421
422 --output-fd fd
423 Direct output to the given file descriptor. Most dialog scripts
424 write to the standard error, but error messages may also be
425 written there, depending on your script.
426
427 --separator string
428
429 --output-separator string
430 Specify a string that will separate the output on dialog's out‐
431 put from checklists, rather than a newline (for --separate-out‐
432 put) or a space. This applies to other widgets such as forms
433 and editboxes which normally use a newline.
434
435 --print-maxsize
436 Print the maximum size of dialog boxes, i.e., the screen size,
437 to dialog's output. This may be used alone, without other op‐
438 tions.
439
440 --print-size
441 Prints the size of each dialog box to dialog's output when the
442 box is initialized.
443
444 --print-text-only string [ height [ width ] ]
445 Prints the string as it would be wrapped in a message box to di‐
446 alog's output.
447
448 Because the optional height and width default to zero, if they
449 are omitted, dialog autosizes according to the screen dimen‐
450 sions.
451
452 --print-text-size string [ height [ width ] ]
453 Prints the size of the string as it would be wrapped in a mes‐
454 sage box, to dialog's output, as
455
456 height width
457
458 Because the optional height and width parameters default to ze‐
459 ro, if they are omitted, dialog autosizes according to the
460 screen dimensions.
461
462 --print-version
463 Prints dialog's version to dialog's output. This may be used
464 alone, without other options. It does not cause dialog to exit
465 by itself.
466
467 --quoted
468 Normally dialog quotes the strings returned by checklist's as
469 well as the item-help text. Use this option to quote all string
470 results.
471
472 --reorder
473 By default, the buildlist widget uses the same order for the
474 output (right) list as for the input (left). Use this option to
475 tell dialog to use the order in which a user adds selections to
476 the output list.
477
478 --scrollbar
479 For widgets holding a scrollable set of data, draw a scrollbar
480 on its right-margin. This does not respond to the mouse.
481
482 --separate-output
483 For certain widgets (buildlist, checklist, treeview), output re‐
484 sult one line at a time, with no quoting. This facilitates
485 parsing by another program.
486
487 --separate-widget string
488 Specify a string that will separate the output on dialog's out‐
489 put from each widget. This is used to simplify parsing the re‐
490 sult of a dialog with several widgets. If this option is not
491 given, the default separator string is a tab character.
492
493 --shadow
494 Draw a shadow to the right and bottom of each dialog box.
495
496 --single-quoted
497 Use single-quoting as needed (and no quotes if unneeded) for the
498 output of checklist's as well as the item-help text. If this
499 option is not set, dialog uses double quotes around each item.
500 In either case, dialog adds backslashes to make the output use‐
501 ful in shell scripts.
502
503 --size-err
504 Check the resulting size of a dialog box before trying to use
505 it, printing the resulting size if it is larger than the screen.
506 (This option is obsolete, since all new-window calls are
507 checked).
508
509 --sleep secs
510 Sleep (delay) for the given number of seconds after processing a
511 dialog box.
512
513 --stderr
514 Direct output to the standard error. This is the default, since
515 curses normally writes screen updates to the standard output.
516
517 --stdout
518 Direct output to the standard output. This option is provided
519 for compatibility with Xdialog, however using it in portable
520 scripts is not recommended, since curses normally writes its
521 screen updates to the standard output. If you use this option,
522 dialog attempts to reopen the terminal so it can write to the
523 display. Depending on the platform and your environment, that
524 may fail.
525
526 --tab-correct
527 Convert each tab character to one or more spaces (for the
528 textbox widget; otherwise to a single space). Otherwise, tabs
529 are rendered according to the curses library's interpretation.
530 The --no-collapse option disables tab expansion.
531
532 --tab-len n
533 Specify the number of spaces that a tab character occupies if
534 the “--tab-correct” option is given. The default is 8. This
535 option is only effective for the textbox widget.
536
537 --time-format format
538 If the host provides strftime, this option allows you to specify
539 the format of the time printed for the --timebox widget. The
540 day, month, year values in this case are for the current local
541 time.
542
543 --timeout secs
544 Timeout (exit with error code) if no user response within the
545 given number of seconds. A timeout of zero seconds is ignored.
546
547 This option is ignored by the “--pause” widget. It is also
548 overridden if the background “--tailboxbg” option is used to set
549 up multiple concurrent widgets.
550
551 --title title
552 Specifies a title string to be displayed at the top of the dia‐
553 log box.
554
555 --trace filename
556 logs the command-line parameters, keystrokes and other informa‐
557 tion to the given file. If dialog reads a configure file, it is
558 logged as well. Piped input to the gauge widget is logged. Use
559 control/T to log a picture of the current dialog window.
560
561 The dialog program handles some command-line parameters special‐
562 ly, and removes them from the parameter list as they are pro‐
563 cessed. For example, if the first option is --trace, then that
564 is processed (and removed) before dialog initializes the dis‐
565 play.
566
567 --week-start day
568 sets the starting day for the week, used in the “--calendar” op‐
569 tion. The day parameter can be
570
571 · a number (0 to 6, Sunday through Saturday using POSIX) or
572
573 · the special value “locale” (this works with systems using
574 glibc, providing an extension to the locale command, the
575 first_weekday value).
576
577 · a string matching one of the abbreviations for the day of
578 the week shown in the calendar widget, e.g., “Mo” for “Mon‐
579 day”.
580
581 --trim eliminate leading blanks, trim literal newlines and repeated
582 blanks from message text.
583
584 The trim feature is implemented subject to these conditions:
585
586 · the string does not contain “\n” or
587
588 · the --no-nl-expand option is used.
589
590 For more information, see Whitespace Options.
591
592 See also the “--cr-wrap” and “--no-collapse” options.
593
594 --version
595 Prints dialog's version to the standard output, and exits. See
596 also “--print-version”.
597
598 --visit-items
599 Modify the tab-traversal of checklist, radiolist, menubox and
600 inputmenu to include the list of items as one of the states.
601 This is useful as a visual aid, i.e., the cursor position helps
602 some users.
603
604 When this option is given, the cursor is initially placed on the
605 list. Abbreviations (the first letter of the tag) apply to the
606 list items. If you tab to the button row, abbreviations apply
607 to the buttons.
608
609 --yes-label string
610 Override the label used for “Yes” buttons.
611
612 Box Options
613 All dialog boxes have at least three parameters:
614
615 text the caption or contents of the box.
616
617 height the height of the dialog box.
618
619 width the width of the dialog box.
620
621 Other parameters depend on the box type.
622
623 --buildlist text height width list-height [ tag item status ] ...
624 A buildlist dialog displays two lists, side-by-side. The list
625 on the left shows unselected items. The list on the right shows
626 selected items. As items are selected or unselected, they move
627 between the lists.
628
629 Use a carriage return or the “OK” button to accept the current
630 value in the selected-window and exit. The results are written
631 using the order displayed in the selected-window.
632
633 The initial on/off state of each entry is specified by status.
634
635 The dialog behaves like a menu, using the --visit-items to con‐
636 trol whether the cursor is allowed to visit the lists directly.
637
638 · If --visit-items is not given, tab-traversal uses two states
639 (OK/Cancel).
640
641 · If --visit-items is given, tab-traversal uses four states
642 (Left/Right/OK/Cancel).
643
644 Whether or not --visit-items is given, it is possible to move
645 the highlight between the two lists using the default “^” (left-
646 column) and “$” (right-column) keys.
647
648 On exit, a list of the tag strings of those entries that are
649 turned on will be printed on dialog's output.
650
651 If the "--separate-output" option is not given, the strings will
652 be quoted as needed to make it simple for scripts to separate
653 them. By default, this uses double-quotes. See the “--single-
654 quoted” option, which modifies the quoting behavior.
655
656 --calendar text height width day month year
657 A calendar box displays month, day and year in separately ad‐
658 justable windows. If the values for day, month or year are
659 missing or negative, the current date's corresponding values are
660 used. You can increment or decrement any of those using the
661 left-, up-, right-, and down-arrows. Use vi-style h, j, k and l
662 for moving around the array of days in a month. Use tab or
663 backtab to move between windows. If the year is given as zero,
664 the current date is used as an initial value.
665
666 On exit, the date is printed in the form day/month/year. The
667 format can be overridden using the --date-format option.
668
669 --checklist text height width list-height [ tag item status ] ...
670 A checklist box is similar to a menu box; there are multiple en‐
671 tries presented in the form of a menu. Another difference is
672 that you can indicate which entry is currently selected, by set‐
673 ting its status to on. Instead of choosing one entry among the
674 entries, each entry can be turned on or off by the user. The
675 initial on/off state of each entry is specified by status.
676
677 On exit, a list of the tag strings of those entries that are
678 turned on will be printed on dialog's output.
679
680 If the “--separate-output” option is not given, the strings will
681 be quoted as needed to make it simple for scripts to separate
682 them. By default, this uses double-quotes. See the “--single-
683 quoted” option, which modifies the quoting behavior.
684
685 --dselect filepath height width
686 The directory-selection dialog displays a text-entry window in
687 which you can type a directory, and above that a windows with
688 directory names.
689
690 Here filepath can be a filepath in which case the directory win‐
691 dow will display the contents of the path and the text-entry
692 window will contain the preselected directory.
693
694 Use tab or arrow keys to move between the windows. Within the
695 directory window, use the up/down arrow keys to scroll the cur‐
696 rent selection. Use the space-bar to copy the current selection
697 into the text-entry window.
698
699 Typing any printable characters switches focus to the text-entry
700 window, entering that character as well as scrolling the direc‐
701 tory window to the closest match.
702
703 Use a carriage return or the “OK” button to accept the current
704 value in the text-entry window and exit.
705
706 On exit, the contents of the text-entry window are written to
707 dialog's output.
708
709 --editbox filepath height width
710 The edit-box dialog displays a copy of the file. You may edit
711 it using the backspace, delete and cursor keys to correct typing
712 errors. It also recognizes pageup/pagedown. Unlike the --in‐
713 putbox, you must tab to the “OK” or “Cancel” buttons to close
714 the dialog. Pressing the “Enter” key within the box will split
715 the corresponding line.
716
717 On exit, the contents of the edit window are written to dialog's
718 output.
719
720 --form text height width formheight [ label y x item y x flen ilen ] ...
721 The form dialog displays a form consisting of labels and fields,
722 which are positioned on a scrollable window by coordinates given
723 in the script. The field length flen and input-length ilen tell
724 how long the field can be. The former defines the length shown
725 for a selected field, while the latter defines the permissible
726 length of the data entered in the field.
727
728 · If flen is zero, the corresponding field cannot be altered.
729 and the contents of the field determine the displayed-
730 length.
731
732 · If flen is negative, the corresponding field cannot be al‐
733 tered, and the negated value of flen is used as the dis‐
734 played-length.
735
736 · If ilen is zero, it is set to flen.
737
738 Use up/down arrows (or control/N, control/P) to move between
739 fields. Use tab to move between windows.
740
741 On exit, the contents of the form-fields are written to dialog's
742 output, each field separated by a newline. The text used to
743 fill non-editable fields (flen is zero or negative) is not writ‐
744 ten out.
745
746 --fselect filepath height width
747 The fselect (file-selection) dialog displays a text-entry window
748 in which you can type a filename (or directory), and above that
749 two windows with directory names and filenames.
750
751 Here filepath can be a filepath in which case the file and di‐
752 rectory windows will display the contents of the path and the
753 text-entry window will contain the preselected filename.
754
755 Use tab or arrow keys to move between the windows. Within the
756 directory or filename windows, use the up/down arrow keys to
757 scroll the current selection. Use the space-bar to copy the
758 current selection into the text-entry window.
759
760 Typing any printable characters switches focus to the text-entry
761 window, entering that character as well as scrolling the direc‐
762 tory and filename windows to the closest match.
763
764 Typing the space character forces dialog to complete the current
765 name (up to the point where there may be a match against more
766 than one entry).
767
768 Use a carriage return or the “OK” button to accept the current
769 value in the text-entry window and exit.
770
771 On exit, the contents of the text-entry window are written to
772 dialog's output.
773
774 --gauge text height width [percent]
775 A gauge box displays a meter along the bottom of the box. The
776 meter indicates the percentage. New percentages are read from
777 standard input, one integer per line. The meter is updated to
778 reflect each new percentage. If the standard input reads the
779 string “XXX”, then the first line following is taken as an inte‐
780 ger percentage, then subsequent lines up to another “XXX” are
781 used for a new prompt. The gauge exits when EOF is reached on
782 the standard input.
783
784 The percent value denotes the initial percentage shown in the
785 meter. If not specified, it is zero.
786
787 On exit, no text is written to dialog's output. The widget ac‐
788 cepts no input, so the exit status is always OK.
789
790 --infobox text height width
791 An info box is basically a message box. However, in this case,
792 dialog will exit immediately after displaying the message to the
793 user. The screen is not cleared when dialog exits, so that the
794 message will remain on the screen until the calling shell script
795 clears it later. This is useful when you want to inform the us‐
796 er that some operations are carrying on that may require some
797 time to finish.
798
799 On exit, no text is written to dialog's output. An OK exit sta‐
800 tus is returned.
801
802 --inputbox text height width [init]
803 An input box is useful when you want to ask questions that re‐
804 quire the user to input a string as the answer. If init is sup‐
805 plied it is used to initialize the input string. When entering
806 the string, the backspace, delete and cursor keys can be used to
807 correct typing errors. If the input string is longer than can
808 fit in the dialog box, the input field will be scrolled.
809
810 On exit, the input string will be printed on dialog's output.
811
812 --inputmenu text height width menu-height [ tag item ] ...
813 An inputmenu box is very similar to an ordinary menu box. There
814 are only a few differences between them:
815
816 1. The entries are not automatically centered but left adjust‐
817 ed.
818
819 2. An extra button (called Rename) is implied to rename the
820 current item when it is pressed.
821
822 3. It is possible to rename the current entry by pressing the
823 Rename button. Then dialog will write the following on dia‐
824 log's output.
825
826 RENAMED <tag> <item>
827
828 --menu text height width menu-height [ tag item ] ...
829 As its name suggests, a menu box is a dialog box that can be
830 used to present a list of choices in the form of a menu for the
831 user to choose. Choices are displayed in the order given. Each
832 menu entry consists of a tag string and an item string. The tag
833 gives the entry a name to distinguish it from the other entries
834 in the menu. The item is a short description of the option that
835 the entry represents. The user can move between the menu en‐
836 tries by pressing the cursor keys, the first letter of the tag
837 as a hot-key, or the number keys 1 through 9. There are menu-
838 height entries displayed in the menu at one time, but the menu
839 will be scrolled if there are more entries than that.
840
841 On exit the tag of the chosen menu entry will be printed on dia‐
842 log's output. If the “--help-button” option is given, the cor‐
843 responding help text will be printed if the user selects the
844 help button.
845
846 --mixedform text height width formheight [ label y x item y x flen ilen itype ] ...
847 The mixedform dialog displays a form consisting of labels and
848 fields, much like the --form dialog. It differs by adding a
849 field-type parameter to each field's description. Each bit in
850 the type denotes an attribute of the field:
851
852 1 hidden, e.g., a password field.
853
854 2 readonly, e.g., a label.
855
856 --mixedgauge text height width percent [ tag1 item1 ] ...
857 A mixedgauge box displays a meter along the bottom of the box.
858 The meter indicates the percentage.
859
860 It also displays a list of the tag- and item-values at the top
861 of the box. See dialog(3) for the tag values.
862
863 The text is shown as a caption between the list and meter. The
864 percent value denotes the initial percentage shown in the meter.
865
866 No provision is made for reading data from the standard input as
867 --gauge does.
868
869 On exit, no text is written to dialog's output. The widget ac‐
870 cepts no input, so the exit status is always OK.
871
872 --msgbox text height width
873 A message box is very similar to a yes/no box. The only differ‐
874 ence between a message box and a yes/no box is that a message
875 box has only a single OK button. You can use this dialog box to
876 display any message you like. After reading the message, the
877 user can press the ENTER key so that dialog will exit and the
878 calling shell script can continue its operation.
879
880 If the message is too large for the space, dialog may allow you
881 to scroll it, provided that the underlying curses implementation
882 is capable enough. In this case, a percentage is shown in the
883 base of the widget.
884
885 On exit, no text is written to dialog's output. Only an “OK”
886 button is provided for input, but an ESC exit status may be re‐
887 turned.
888
889 --pause text height width seconds
890 A pause box displays a meter along the bottom of the box. The
891 meter indicates how many seconds remain until the end of the
892 pause. The pause exits when timeout is reached or the user
893 presses the OK button (status OK) or the user presses the CANCEL
894 button or Esc key.
895
896 --passwordbox text height width [init]
897 A password box is similar to an input box, except that the text
898 the user enters is not displayed. This is useful when prompting
899 for passwords or other sensitive information. Be aware that if
900 anything is passed in “init”, it will be visible in the system's
901 process table to casual snoopers. Also, it is very confusing to
902 the user to provide them with a default password they cannot
903 see. For these reasons, using “init” is highly discouraged.
904 See “--insecure” if you do not care about your password.
905
906 On exit, the input string will be printed on dialog's output.
907
908 --passwordform text height width formheight [ label y x item y x flen ilen ] ...
909 This is identical to --form except that all text fields are
910 treated as password widgets rather than inputbox widgets.
911
912 --prgbox text command height width
913
914 --prgbox command height width
915 A prgbox is very similar to a programbox.
916
917 This dialog box is used to display the output of a command that
918 is specified as an argument to prgbox.
919
920 After the command completes, the user can press the ENTER key so
921 that dialog will exit and the calling shell script can continue
922 its operation.
923
924 If three parameters are given, it displays the text under the
925 title, delineated from the scrolling file's contents. If only
926 two parameters are given, this text is omitted.
927
928 --programbox text height width
929
930 --programbox height width
931 A programbox is very similar to a progressbox. The only differ‐
932 ence between a program box and a progress box is that a program
933 box displays an OK button (but only after the command com‐
934 pletes).
935
936 This dialog box is used to display the piped output of a com‐
937 mand. After the command completes, the user can press the ENTER
938 key so that dialog will exit and the calling shell script can
939 continue its operation.
940
941 If three parameters are given, it displays the text under the
942 title, delineated from the scrolling file's contents. If only
943 two parameters are given, this text is omitted.
944
945 --progressbox text height width
946
947 --progressbox height width
948 A progressbox is similar to an tailbox, except that
949
950 a) rather than displaying the contents of a file,
951 it displays the piped output of a command and
952
953 b) it will exit when it reaches the end of the file
954 (there is no “OK” button).
955
956 If three parameters are given, it displays the text under the
957 title, delineated from the scrolling file's contents. If only
958 two parameters are given, this text is omitted.
959
960 --radiolist text height width list-height [ tag item status ] ...
961 A radiolist box is similar to a menu box. The only difference
962 is that you can indicate which entry is currently selected, by
963 setting its status to on.
964
965 On exit, the tag of the selected item is written to dialog's
966 output.
967
968 --tailbox file height width
969 Display text from a file in a dialog box, as in a “tail -f” com‐
970 mand. Scroll left/right using vi-style 'h' and 'l', or arrow-
971 keys. A '0' resets the scrolling.
972
973 On exit, no text is written to dialog's output. Only an “OK”
974 button is provided for input, but an ESC exit status may be re‐
975 turned.
976
977 --rangebox text height width min-value max-value default-value
978 Allow the user to select from a range of values, e.g., using a
979 slider. The dialog shows the current value as a bar (like the
980 gauge dialog). Tabs or arrow keys move the cursor between the
981 buttons and the value. When the cursor is on the value, you can
982 edit it by:
983
984 left/right cursor movement to select a digit to modify
985
986 +/- characters to increment/decrement the digit by one
987
988 0 through 9
989 to set the digit to the given value
990
991 Some keys are also recognized in all cursor positions:
992
993 home/end
994 set the value to its maximum or minimum
995
996 pageup/pagedown
997 increment the value so that the slider moves by one column
998
999 --tailboxbg file height width
1000 Display text from a file in a dialog box as a background task,
1001 as in a “tail -f &” command. Scroll left/right using vi-style
1002 'h' and 'l', or arrow-keys. A '0' resets the scrolling.
1003
1004 Dialog treats the background task specially if there are other
1005 widgets (--and-widget) on the screen concurrently. Until those
1006 widgets are closed (e.g., an “OK”), dialog will perform all of
1007 the tailboxbg widgets in the same process, polling for updates.
1008 You may use a tab to traverse between the widgets on the screen,
1009 and close them individually, e.g., by pressing ENTER. Once the
1010 non-tailboxbg widgets are closed, dialog forks a copy of itself
1011 into the background, and prints its process id if the “--no-
1012 kill” option is given.
1013
1014 On exit, no text is written to dialog's output. Only an “EXIT”
1015 button is provided for input, but an ESC exit status may be re‐
1016 turned.
1017
1018 NOTE: Older versions of dialog forked immediately and attempted
1019 to update the screen individually. Besides being bad for per‐
1020 formance, it was unworkable. Some older scripts may not work
1021 properly with the polled scheme.
1022
1023 --textbox file height width
1024 A text box lets you display the contents of a text file in a di‐
1025 alog box. It is like a simple text file viewer. The user can
1026 move through the file by using the cursor, page-up, page-down
1027 and HOME/END keys available on most keyboards. If the lines are
1028 too long to be displayed in the box, the LEFT/RIGHT keys can be
1029 used to scroll the text region horizontally. You may also use
1030 vi-style keys h, j, k, and l in place of the cursor keys, and B
1031 or N in place of the page-up and page-down keys. Scroll up/down
1032 using vi-style 'k' and 'j', or arrow-keys. Scroll left/right
1033 using vi-style 'h' and 'l', or arrow-keys. A '0' resets the
1034 left/right scrolling. For more convenience, vi-style forward
1035 and backward searching functions are also provided.
1036
1037 On exit, no text is written to dialog's output. Only an “EXIT”
1038 button is provided for input, but an ESC exit status may be re‐
1039 turned.
1040
1041 --timebox text height [width hour minute second]
1042 A dialog is displayed which allows you to select hour, minute
1043 and second. If the values for hour, minute or second are miss‐
1044 ing or negative, the current date's corresponding values are
1045 used. You can increment or decrement any of those using the
1046 left-, up-, right- and down-arrows. Use tab or backtab to move
1047 between windows.
1048
1049 On exit, the result is printed in the form hour:minute:second.
1050 The format can be overridden using the --time-format option.
1051
1052 --treeview text height width list-height [ tag item status depth ] ...
1053 Display data organized as a tree. Each group of data contains a
1054 tag, the text to display for the item, its status (“on” or
1055 “off”) and the depth of the item in the tree.
1056
1057 Only one item can be selected (like the radiolist). The tag is
1058 not displayed.
1059
1060 On exit, the tag of the selected item is written to dialog's
1061 output.
1062
1063 --yesno text height width
1064 A yes/no dialog box of size height rows by width columns will be
1065 displayed. The string specified by text is displayed inside the
1066 dialog box. If this string is too long to fit in one line, it
1067 will be automatically divided into multiple lines at appropriate
1068 places. The text string can also contain the sub-string "\n" or
1069 newline characters `\n' to control line breaking explicitly.
1070 This dialog box is useful for asking questions that require the
1071 user to answer either yes or no. The dialog box has a Yes but‐
1072 ton and a No button, in which the user can switch between by
1073 pressing the TAB key.
1074
1075 On exit, no text is written to dialog's output. In addition to
1076 the “Yes” and “No” exit codes (see DIAGNOSTICS) an ESC exit sta‐
1077 tus may be returned.
1078
1079 The codes used for “Yes” and “No” match those used for “OK” and
1080 “Cancel”, internally no distinction is made.
1081
1082 Obsolete Options
1083 --beep This was used to tell the original cdialog that it should make a
1084 beep when the separate processes of the tailboxbg widget would
1085 repaint the screen.
1086
1087 --beep-after
1088 Beep after a user has completed a widget by pressing one of the
1089 buttons.
1090
1091 Whitespace Options
1092 These options can be used to transform whitespace (space, tab, newline)
1093 as dialog reads the script:
1094 --cr-wrap, --no-collapse, --no-nl-expand, and --trim
1095
1096 The options are not independent:
1097
1098 · Dialog checks if the script contains at least one “\n” and (unless
1099 --no-nl-expand is set) will ignore the --no-collapse and --trim op‐
1100 tions.
1101
1102 · After checking for “\n” and the --no-nl-expand option, dialog han‐
1103 dles the --trim option.
1104
1105 If the --trim option takes effect, then dialog ignores --no-col‐
1106 lapse. It changes sequences of tabs, spaces (and newlines unless
1107 -cr-wrap is set) to a single space.
1108
1109 · If neither the “\n” or --trim cases apply, dialog checks --no-col‐
1110 lapse to decide whether to reduce sequences of tabs and spaces to a
1111 single space.
1112
1113 In this case, dialog ignores -cr-wrap and does not modify newlines.
1114
1115 Taking those dependencies into account, here is a table summarizing the
1116 behavior for the various combinations of options. The table assumes
1117 that the script contains at least one “\n” when the --no-nl-expand op‐
1118 tion is not set.
1119
1120 cr- no- no- trim Result
1121 wrap collapse nl-expand
1122 ──────────────────────────────────────────────────────────────────────
1123 no no no no Convert tab to space. Convert
1124 newline to space. Convert
1125 “\n” to newline.
1126 no no no yes Convert tab to space. Convert
1127 newline to space. Convert
1128 “\n” to newline.
1129 no no yes no Convert tab to space. Do not
1130 convert newline to space.
1131 Convert multiple-space to sin‐
1132 gle. Show “\n” literally.
1133 no no yes yes Convert tab to space. Convert
1134 multiple-space to single.
1135 Convert newline to space.
1136 Show “\n” literally.
1137 no yes no no Convert newline to space.
1138 Convert “\n” to newline.
1139 no yes no yes Convert newline to space.
1140 Convert “\n” to newline.
1141
1142
1143
1144 no yes yes no Do not convert newline to
1145 space. Do not reduce multiple
1146 blanks. Show “\n” literally.
1147 no yes yes yes Convert multiple-space to sin‐
1148 gle. Convert newline to
1149 space. Show “\n” literally.
1150 yes no no no Convert tab to space. Wrap on
1151 newline. Convert “\n” to new‐
1152 line.
1153 yes no no yes Convert tab to space. Wrap on
1154 newline. Convert “\n” to new‐
1155 line.
1156 yes no yes no Convert tab to space. Do not
1157 convert newline to space.
1158 Convert multiple-space to sin‐
1159 gle. Show “\n” literally.
1160 yes no yes yes Convert tab to space. Convert
1161 multiple-space to single.
1162 Wrap on newline. Show “\n”
1163 literally.
1164 yes yes no no Wrap on newline. Convert “\n”
1165 to newline.
1166 yes yes no yes Wrap on newline. Convert “\n”
1167 to newline.
1168 yes yes yes no Do not convert newline to
1169 space. Do not reduce multiple
1170 blanks. Show “\n” literally.
1171 yes yes yes yes Convert multiple-space to sin‐
1172 gle. Wrap on newline. Show
1173 “\n” literally.
1174
1176 1. Create a sample configuration file by typing:
1177
1178 dialog --create-rc file
1179
1180 2. At start, dialog determines the settings to use as follows:
1181
1182 a) if environment variable DIALOGRC is set, its value determines
1183 the name of the configuration file.
1184
1185 b) if the file in (a) is not found, use the file $HOME/.dialogrc
1186 as the configuration file.
1187
1188 c) if the file in (b) is not found, try using the GLOBALRC file
1189 determined at compile-time, i.e., /etc/dialogrc.
1190
1191 d) if the file in (c) is not found, use compiled in defaults.
1192
1193 3. Edit the sample configuration file and copy it to some place that
1194 dialog can find, as stated in step 2 above.
1195
1197 You can override or add to key bindings in dialog by adding to the con‐
1198 figuration file. Dialog's bindkey command maps single keys to its in‐
1199 ternal coding.
1200
1201 bindkey widget curses_key dialog_key
1202
1203 The widget name can be “*” (all widgets), or specific widgets such as
1204 textbox. Specific widget bindings override the “*” bindings. User-de‐
1205 fined bindings override the built-in bindings.
1206
1207 The curses_key can be expressed in different forms:
1208
1209 · It may be any of the names derived from curses.h, e.g., “HELP” from
1210 “KEY_HELP”.
1211
1212 · Dialog also recognizes ANSI control characters such as “^A”, “^?”,
1213 as well as C1-controls such as “~A” and “~?”.
1214
1215 · Finally, dialog allows backslash escapes as in C. Those can be oc‐
1216 tal character values such as “\033” (the ASCII escape character),
1217 or the characters listed in this table:
1218
1219 Escaped Actual
1220 ───────────────────────────────
1221 \b backspace
1222 \f form feed
1223 \n new line (line feed)
1224 \r carriage return
1225 \s space
1226 \t tab
1227 \^ “^” (caret)
1228 \? “?” (question mark)
1229 \\ “\” (backslash)
1230 ───────────────────────────────
1231
1232 Dialog's internal keycode names correspond to the DLG_KEYS_ENUM type in
1233 dlg_keys.h, e.g., “HELP” from “DLGK_HELP”.
1234
1235 Widget Names
1236 Some widgets (such as the formbox) have an area where fields can be
1237 edited. Those are managed in a subwindow of the widget, and may have
1238 separate keybindings from the main widget because the subwindows are
1239 registered using a different name.
1240
1241 Widget Window name Subwindow Name
1242 ───────────────────────────────────────────
1243 calendar calendar
1244 checklist checklist
1245 editbox editbox editbox2
1246 form formbox formfield
1247 fselect fselect fselect2
1248 inputbox inputbox inputbox2
1249 menu menubox menu
1250 msgbox msgbox
1251 pause pause
1252 progressbox progressbox
1253 radiolist radiolist
1254 tailbox tailbox
1255 textbox textbox searchbox
1256 timebox timebox
1257 yesno yesno
1258 ───────────────────────────────────────────
1259
1260 Some widgets are actually other widgets, using internal settings to
1261 modify the behavior. Those use the same widget name as the actual wid‐
1262 get:
1263
1264 Widget Actual Widget
1265 ─────────────────────────────
1266 dselect fselect
1267 infobox msgbox
1268 inputmenu menu
1269 mixedform form
1270 passwordbox inputbox
1271 passwordform form
1272 prgbox progressbox
1273 programbox progressbox
1274 tailboxbg tailbox
1275 ─────────────────────────────
1276
1277 Built-in Bindings
1278 This manual page does not list the key bindings for each widget, be‐
1279 cause that detailed information can be obtained by running dialog. If
1280 you have set the --trace option, dialog writes the key-binding informa‐
1281 tion for each widget as it is registered.
1282
1283 Example
1284 Normally dialog uses different keys for navigating between the buttons
1285 and editing part of a dialog versus navigating within the editing part.
1286 That is, tab (and back-tab) traverse buttons (or between buttons and
1287 the editing part), while arrow keys traverse fields within the editing
1288 part. Tabs are also recognized as a special case for traversing be‐
1289 tween widgets, e.g., when using multiple tailboxbg widgets.
1290
1291 Some users may wish to use the same key for traversing within the edit‐
1292 ing part as for traversing between buttons. The form widget is written
1293 to support this sort of redefinition of the keys, by adding a special
1294 group in dlgk_keys.h for “form” (left/right/next/prev). Here is an ex‐
1295 ample binding demonstrating how to do this:
1296
1297 bindkey formfield TAB form_NEXT
1298 bindkey formbox TAB form_NEXT
1299 bindkey formfield BTAB form_prev
1300 bindkey formbox BTAB form_prev
1301
1302 That type of redefinition would not be useful in other widgets, e.g.,
1303 calendar, due to the potentially large number of fields to traverse.
1304
1306 DIALOGOPTS Define this variable to apply any of the common options
1307 to each widget. Most of the common options are reset
1308 before processing each widget. If you set the options
1309 in this environment variable, they are applied to dia‐
1310 log's state after the reset. As in the “--file” option,
1311 double-quotes and backslashes are interpreted.
1312
1313 The “--file” option is not considered a common option
1314 (so you cannot embed it within this environment vari‐
1315 able).
1316
1317 DIALOGRC Define this variable if you want to specify the name of
1318 the configuration file to use.
1319
1320 DIALOG_CANCEL
1321
1322 DIALOG_ERROR
1323
1324 DIALOG_ESC
1325
1326 DIALOG_EXTRA
1327
1328 DIALOG_HELP
1329
1330 DIALOG_ITEM_HELP
1331
1332 DIALOG_OK Define any of these variables to change the exit code on
1333 Cancel (1), error (-1), ESC (255), Extra (3), Help (2),
1334 Help with --item-help [22m(2), or OK (0). Normally shell
1335 scripts cannot distinguish between -1 and 255.
1336
1337 DIALOG_TTY Set this variable to “1” to provide compatibility with
1338 older versions of dialog which assumed that if the
1339 script redirects the standard output, that the “--std‐
1340 out” option was given.
1341
1343 $HOME/.dialogrc default configuration file
1344
1346 The dialog sources contain several samples of how to use the different
1347 box options and how they look. Just take a look into the directory
1348 samples/ of the source.
1349
1351 Exit status is subject to being overridden by environment variables.
1352 The default values and corresponding environment variables that can
1353 override them are:
1354
1355 0 if the YES or OK button is pressed (DIALOG_OK).
1356
1357 1 if the No or Cancel button is pressed (DIALOG_CANCEL).
1358
1359 2 if the Help button is pressed (DIALOG_HELP),
1360 except as noted below about DIALOG_ITEM_HELP.
1361
1362 3 if the Extra button is pressed (DIALOG_EXTRA).
1363
1364 4 if the Help button is pressed,
1365 and the --item-help option is set
1366 and the DIALOG_ITEM_HELP environment variable is set to 4.
1367
1368 While any of the exit-codes can be overridden using environment
1369 variables, this special case was introduced in 2004 to simplify
1370 compatibility. Dialog uses DIALOG_ITEM_HELP(4) internally, but
1371 unless the environment variable is also set, it changes that to
1372 DIALOG_HELP(2) on exit.
1373
1374 -1 if errors occur inside dialog (DIALOG_ERROR) or dialog exits be‐
1375 cause the ESC key (DIALOG_ESC) was pressed.
1376
1378 Dialog works with X/Open curses. However, some implementations have
1379 deficiencies:
1380
1381 · HPUX curses (and perhaps others) do not open the terminal prop‐
1382 erly for the newterm function. This interferes with dialog's
1383 --input-fd option, by preventing cursor-keys and similar escape
1384 sequences from being recognized.
1385
1386 · NetBSD 5.1 curses has incomplete support for wide-characters.
1387 dialog will build, but not all examples display properly.
1388
1390 You may want to write scripts which run with other dialog “clones”.
1391
1392 Original Dialog
1393 First, there is the “original” dialog program to consider (versions 0.3
1394 to 0.9). It had some misspelled (or inconsistent) options. The dialog
1395 program maps those deprecated options to the preferred ones. They in‐
1396 clude:
1397
1398 Option Treatment
1399 ─────────────────────────────────
1400 --beep-after ignored
1401 --guage mapped to --gauge
1402 ─────────────────────────────────
1403
1404 Xdialog
1405 This is an X application, rather than a terminal program. With some
1406 care, it is possible to write useful scripts that work with both Xdia‐
1407 log and dialog.
1408
1409 The dialog program ignores these options which are recognized by Xdia‐
1410 log:
1411
1412 Option Treatment
1413 ───────────────────────────────────────────────
1414 --allow-close ignored
1415 --auto-placement ignored
1416 --fixed-font ignored
1417 --icon ignored
1418 --keep-colors ignored
1419 --no-close ignored
1420 --no-cr-wrap ignored
1421 --screen-center ignored
1422 --separator mapped to --separate-output
1423 --smooth ignored
1424 --under-mouse ignored
1425 --wmclass ignored
1426 ───────────────────────────────────────────────
1427
1428 Xdialog's manpage has a section discussing its compatibility with dia‐
1429 log. There are some differences not shown in the manpage. For exam‐
1430 ple, the html documentation states
1431
1432 Note: former Xdialog releases used the “\n” (line feed) as a re‐
1433 sults separator for the checklist widget; this has been changed
1434 to “/” in Xdialog v1.5.0 to make it compatible with (c)dialog.
1435 In your old scripts using the Xdialog checklist, you will then
1436 have to add the --separate-output option before the --checklist
1437 one.
1438
1439 Dialog has not used a different separator; the difference was likely
1440 due to confusion regarding some script.
1441
1442 Whiptail
1443 Then there is whiptail. For practical purposes, it is maintained by
1444 Debian (very little work is done by its upstream developers). Its doc‐
1445 umentation (README.whiptail) claims
1446
1447 whiptail(1) is a lightweight replacement for dialog(1),
1448 to provide dialog boxes for shell scripts.
1449 It is built on the
1450 newt windowing library rather than the ncurses library, allowing
1451 it to be smaller in embedded environments such as installers,
1452 rescue disks, etc.
1453
1454 whiptail is designed to be drop-in compatible with dialog, but
1455 has less features: some dialog boxes are not implemented, such
1456 as tailbox, timebox, calendarbox, etc.
1457
1458 Comparing actual sizes (Debian testing, 2007/1/10): The total of sizes
1459 for whiptail, the newt, popt and slang libraries is 757 KB. The compa‐
1460 rable number for dialog (counting ncurses) is 520 KB. Disregard the
1461 first paragraph.
1462
1463 The second paragraph is misleading, since whiptail also does not work
1464 for common options of dialog, such as the gauge box. whiptail is less
1465 compatible with dialog than the original mid-1990s dialog 0.4 program.
1466
1467 whiptail's manpage borrows features from dialog, e.g., but oddly cites
1468 only dialog versions up to 0.4 (1994) as a source. That is, its man‐
1469 page refers to features which were borrowed from more recent versions
1470 of dialog, e.g.,
1471
1472 · --gauge (from 0.5)
1473
1474 · --passwordbox (from Debian changes in 1999),
1475
1476 · --default-item (from dialog 2000/02/22),
1477
1478 · --output-fd (from dialog 2002/08/14).
1479
1480 Somewhat humorously, one may note that the popt feature (undocumented
1481 in its manpage) of using a “--” as an escape was documented in dialog's
1482 manpage about a year before it was mentioned in whiptail's manpage.
1483 whiptail's manpage incorrectly attributes that to getopt (and is inac‐
1484 curate anyway).
1485
1486 Debian uses whiptail for the official dialog variation.
1487
1488 The dialog program ignores or maps these options which are recognized
1489 by whiptail:
1490
1491 Option Treatment
1492 ───────────────────────────────────────────
1493 --cancel-button mapped to --cancel-label
1494 --fb ignored
1495 --fullbutton ignored
1496 --no-button mapped to --no-label
1497 --nocancel mapped to --no-cancel
1498 --noitem mapped to --no-items
1499 --notags mapped to --no-tags
1500 --ok-button mapped to --ok-label
1501 --scrolltext mapped to --scrollbar
1502 --topleft mapped to --begin 0 0
1503 --yes-button mapped to --yes-label
1504 ───────────────────────────────────────────
1505
1506 There are visual differences which are not addressed by command-line
1507 options:
1508
1509 · dialog centers lists within the window. whiptail typically puts
1510 lists against the left margin.
1511
1512 · whiptail uses angle brackets (“<” and “>”) for marking buttons.
1513 dialog uses square brackets.
1514
1515 · whiptail marks the limits of subtitles with vertical bars. dialog
1516 does not mark the limits.
1517
1518 · whiptail attempts to mark the top/bottom cells of a scrollbar with
1519 up/down arrows. When it cannot do this, it fills those cells with
1520 the background color of the scrollbar and confusing the user. dia‐
1521 log uses the entire scrollbar space, thereby getting better resolu‐
1522 tion.
1523
1525 Perhaps.
1526
1528 Thomas E. Dickey (updates for 0.9b and beyond)
1529
1531 Kiran Cherupally – the mixed form and mixed gauge widgets.
1532
1533 Tobias C. Rittweiler
1534
1535 Valery Reznic – the form and progressbox widgets.
1536
1537 Yura Kalinichenko adapted the gauge widget as “pause”.
1538
1539 This is a rewrite (except as needed to provide compatibility) of the
1540 earlier version of dialog 0.9a, which lists as authors:
1541
1542 · Savio Lam – version 0.3, “dialog”
1543
1544 · Stuart Herbert – patch for version 0.4
1545
1546 · Marc Ewing – the gauge widget.
1547
1548 · Pasquale De Marco “Pako” – version 0.9a, “cdialog”
1549
1550
1551
1552$Date: 2019/12/09 10:07:30 $ DIALOG(1)