Мерцание возникает при (а) переключении на/из альтернативных/нормальных экранов терминала и (б) при очистке дисплея.
Первую часть можно устранить, выбрав терминал, в описании которого отсутствуют управляющие последовательности, используемые для переключения между нормальным/альтернативным экранами. Обычно это возможности smcup
и rmcup
в описании терминала, поэтому...
infocmp >foo
vi
...remove the assignments to `rmcup` and `smcup`
tic foo
...with ncurses, that likely creates an entry in `$HOME/.terminfo`
dialog
справляется с этим, опционально подавляя эти возможности (т.е. --keep-tite
); whiptail
ничего не знает об альтернативном экране.
Дальнейшее чтение: