我有一种用“响应式”制作的用户界面。像庄园一样,使用tput在终端底部画一个盒子。
我想知道是否还有它"重绘"终端调整大小时的框?
答案 0 :(得分:3)
您应该能够使用bash捕获此事件,如下所示:
trap 'do something' SIGWINCH
答案 1 :(得分:2)
是。 ncurses,处理linux中屏幕操作的程序(不是bash!)在窗口大小改变时发出信号:SIGWINCH
(窗口大小已更改)。收到此事件时,您将需要处理事件并调用函数来重绘程序,这在实现方面根据您使用的编程语言而有所不同。但是,例如,在C中,它就像是:
#include <signal.h>
void handleResize(int dummy)
{
// redraw things here
}
int main(...)
{
signal(SIDWINCH, handleResize);
....
}
希望有所帮助!