创build一个Linuxterminal的倒计时对话框菜单框?

如何为Linux控制台(不是X,而是“terminal”控制台)创build一个对话窗口小部件,该窗口小部件将在可能是菜单列表或文本框的小部件旁边显示秒数?

理想情况下,这可能是一个独立的程序,如对话框,提供参数来控制其行为。

当倒数到达0时,返回所select的小部件的值。 如果没有人存在(或者人更喜欢默认值),那么可以有一个默认值。 像grub和lilo这样的引导装载程序已经可以做到这一点了。 我查看了对话框手册页,并找不到此function集。

迄今试过:

dialog --timeout 30 --menu 'Menu Title' 20 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C'closures,但不显示30秒计时器下。

dialog --pause 'Hurry!' 10 60 30 -- dialog --pause 'Hurry!' 10 60 30 --显示一个消息,并确定/取消与计时器运行,但只是插页式,而不是用户input。

可以像这样组合多行:

 dialog --menu 'Menu Title' 10 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C' --pause 'Hurry up' 10 60 30 

但是按顺序显示小部件,而不是在一个页面上合并。 在这里,在没有定时器应答菜单之后,你会得到一个带有定时器的消息。

我相信Ncurses是你在找什么。

坚持使用对话框我已经解决了一个类似的问题,把它分成两个对话框。 首先会出现一个对话框,其中显示屏幕上显示了默认值(以及可选的替代选项),并且具有倒数计时器。 用户可以按esc或按取消更改选项,或者倒计数到0,程序继续默认设置。 如果用户点击逃生,则会出现第二个对话框,允许编辑选项。 我不想添加更多的软件到我们的deb-live / clonezilla自定义操作系统版本,所以我必须找到一个对话方式。

 dialog --title Some options to choose from, showing default --pause "\n\n Do you accept these options?: \n ${options_in_nice_format_for_display}" 20 60 5 [ $? -ne 0 ] && EDIT_IP=true || EDIT_IP=false if ${EDIT_IP}; then dialog --editbox ${MY_OPTIONS_FILE} 20 60 2> ${EDITED_OPTIONS_FILE} fi 

为了更好的解决方案(我已经使用过,但不想在此添加多余的代码),您可以添加一个while循环,以布尔值为条件,并允许重复编辑,直到用户满意为止。

我建议你阅读dialog手册页。 哦,你已经做了,你说? 那么,什么是错的:

– 暂停文本高度宽度秒

一个暂停盒在盒子的底部显示一个米。 仪表指示在暂停结束之前剩余多少秒钟。 当达到超时或用户按OK按钮(状态OK)或用户按下CANCEL按钮或Esc键时,暂停将退出。