Как мне сделать диалоговый виджет для консоли Linux (не X, а «терминальной» консоли), который показывал бы обратный отсчет в секундах рядом с виджетом, который может быть списком меню или текстовым полем?
В идеале это может быть отдельная программа, такая как диалог, которому предоставляются параметры для управления его поведением.
Когда обратный отсчет достигает 0, возвращается выбранное значение виджета. Может быть значение по умолчанию, если нет человека (или человек предпочитает значение по умолчанию). Загрузчики, такие как grub и lilo, уже умеют это делать. Я просмотрел справочную страницу диалогового окна и не смог найти этот набор функций.
Пробовал до сих пор:
dialog --timeout 30 --menu 'Menu Title' 20 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C'
близко, но не показывает отсчет 30-секундного таймера.
dialog --pause 'Hurry!' 10 60 30 --
показывает сообщение и ok/cancel с запущенным таймером, но это только промежуточное объявление, а не ввод пользователя.
Можно объединить несколько строк следующим образом:
dialog --menu 'Menu Title' 10 60 3 'A' 'Choose A' 'B' 'Choose B' 'C' 'Choose C' --pause 'Hurry up' 10 60 30
но при этом виджеты отображаются последовательно, а не объединены на одной странице. Здесь, после ответа на меню без таймера, вы получаете сообщение с таймером.