Какая программа с открытым исходным кодом похожа на команду Linux "dialog"?
Команда linux dialog - отличный инструмент для создания диалоговых окон в окнах терминала (например, в скрипте bash).
Однако у диалога есть недостаток, который заключается в том, что окно всегда располагается в центре экрана.
В частности, я хотел бы использовать функцию хвостовой части, например,
dialog --tailboxbg MYFILE 20 20
... который отображает хвост файла внутри текстового диалога (так же, как встроенная команда tail).
Тем не менее, я хотел бы разместить полученное окно в разных местах на экране. например, только в верхней половине или нижней половине. диалог не предоставляет такой функциональности.
Есть ли способ переместить окна, предоставляемые диалогом, или кто-то может порекомендовать альтернативный инструмент, способный на это?
2 ответа
Можно расположить диалог где угодно, используя диалоги--begin
переключатель ( http://linux.die.net/man/1/dialog). Однако для создания диалогов динамического размера, которые работают независимо от размера окна вашего терминала, вам необходимо получить доступ к размерам окна терминала, используя tput
, Затем вы можете сделать следующее в вашем скрипте bash:
x=$(tput cols)
y=$(tput lines)
bx=10 # some offset
by=10 # how far down the window should be displayed
padbottom=2
# centered on width
dwidth=$(($x - $((bx * 2))))
# leave some padding at the bottom
dheight=$(($y - $((by + $padbottom))))
dialog --begin $by $bx --tailbox MY_FILE $dheight $dwidth
Результат: горизонтально центрированное диалоговое окно в нижней половине окна терминала.
Предупреждение: вы можете добавить некоторые дополнительные проверки, если размер окна очень маленький.
Есть только так много, что вы можете сделать с Bash.
Однако для программ TUI вы можете делать практически все, что вам нужно, с помощью ncurses. https://www.gnu.org/software/ncurses/ncurses.html
Существуют оболочки над функциями C, предоставляемыми curses; если вы уже знакомы с программированием curses в C.