Назад | Перейти на главную страницу

Какая программа с открытым исходным кодом похожа на команду Linux «диалог»?

Linux диалог Команда - отличный инструмент для создания диалоговых окон в окнах терминала (например, в сценарии bash).

Однако есть недостаток диалог то есть окно всегда располагается в центре экрана.

В частности, я хотел бы использовать функцию хвостового отсека, например

dialog --tailboxbg MYFILE 20 20

... который отображает хвост файла в текстовом диалоговом окне (как и встроенная команда tail).

Однако я бы хотел разместить получившееся окно в разных местах экрана. например только в верхней или нижней половине. диалог не предоставляет такой функциональности.

Есть ли способ переместить окна, предоставленные диалог или кто-нибудь может порекомендовать альтернативный инструмент, который на это способен?

Диалог можно разместить где угодно, используя диалогс --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.