dialog


никаких ресайзабл-окон - вывод занимает весь теминал - сколько бы его не было. если окно терминала маленькое - увдидим лишь кусок вывода (хотя баш постарается вывести как можно больше инфо - по возможности ужимая дефолтное расположение кнопок и полей)

использование:

  dialog <common options> <box options> 
             
common options: 
	--title <title>
	--begin <y> <x>
	--clear
	--cancel-label <str>
	--yes-label <str>
	--ok-label <str>
	--no-cancel
	--no-ok
	--default-button <str>
	--default-item <str>
	--extra-button
	--keep-window
	--max-input <n>
	--sleep <secs>
	--timeout <secs>
	--stdout

box options:
  --yesno        <text> <height> <width>
  --menu         <text> <height> <width> <menu height> <tag1> <item1>...
  --checklist    <text> <height> <width> <list height> <tag1> <item1> <status1>...
  --radiolist    <text> <height> <width> <list height> <tag1> <item1> <status1>...
  --msgbox       <text> <height> <width>
  --inputbox     <text> <height> <width> [<init>]
  --rangebox     <text> <height> <width> <min-value> <max-value> <default-value>
  --editbox      <file> <height> <width>
  --textbox      <file> <height> <width>
  --passwordbox  <text> <height> <width> [<init>]
  --gauge        <text> <height> <width> [<percent>]
  --infobox      <text> <height> <width>
  --inputmenu    <text> <height> <width> <menu height> <tag1> <item1>...
  --timebox      <text> <height> <width> <hour> <minute> <second>
  --dselect      <directory> <height> <width>
  --fselect      <filepath> <height> <width>
  --calendar     <text> <height> <width> <day> <month> <year>
  --pause        <text> <height> <width> <seconds>



auto-size with height and width = 0
maximize with height and width = -1
global-auto-size if also menu_height/list_height = 0

примеры

#!/run/current-system/sw/bin/bash

dialog --help-button --title "yes-no example" --clear \
       --yesno "r u ready?\n\n" 10 30

case $? in
  0)   clear; echo "Yes chosen";;
  1)   clear; echo "No chosen";;
  255) clear; echo "ESC pressed";;
  *)   clear; echo "Help pressed";;
esac

-----------------------------------------------------------------------


#!/run/current-system/sw/bin/bash

cmd=(dialog --checklist "ваш выбор:" 22 76 4)

options=(1 "выбор 1" off    
         2 "выбор 2" off
         3 "выбор 3" on     # any option can be set to default to 'on'
         4 "выбор 4" off)

choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)

clear

for x in $choices
do
    case $x in
        1) echo "First Option" ;;
        2) echo "Second Option" ;;
        3) echo "Third Option" ;;
        4) echo "Fourth Option" ;;
        *) echo "Nothing" ;;
    esac
done


-----------------------------------------------------------------------



#!/run/current-system/sw/bin/bash

cmd=(dialog --radiolist "ваш выбор:" 22 76 4)

options=(1 "выбор 1" off    
         2 "выбор 2" off
         3 "выбор 3" on     # any option can be set to default to 'on'
         4 "выбор 4" off)

choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)

clear

for x in $choices
do
    case $x in
        1) echo "First Option" ;;
        2) echo "Second Option" ;;
        3) echo "Third Option" ;;
        4) echo "Fourth Option" ;;
        *) echo "Nothing" ;;
    esac
done


-----------------------------------------------------------------------



#!/run/current-system/sw/bin/bash

dialog                     --begin 2 2   --yesno "первый" 0 0 \
  --and-widget --clear     --begin 4 4   --yesno "второй" 0 0 \
  --and-widget --clear     --begin 6 6   --yesno "третий" 0 0 \
                           --begin 8 8   --yesno "четвертый" 0 0 \
  --and-widget --sleep 1   --begin 10 10 --yesno "пятый" 0 0 \
  --and-widget --no-shadow --begin 12 12 --yesno "шестой" 0 0

rv=$?
clear ; echo $rv