diff --git a/progress/progress.go b/progress/progress.go index 104af2c9f..6aa26dd33 100644 --- a/progress/progress.go +++ b/progress/progress.go @@ -83,11 +83,14 @@ func (p *Progress) render() { p.mu.Lock() defer p.mu.Unlock() - // buffer the terminal update to minimize cursor flickering - // https://gitlab.gnome.org/GNOME/vte/-/issues/2837#note_2269501 + // buffer output to minimize flickering on all terminals p.buf.Reset() defer p.buf.WriteTo(p.w) + // eliminate flickering on terminals that support synchronized output + fmt.Fprint(&p.buf, "\033[?2026h") + defer fmt.Fprint(&p.buf, "\033[?2026l") + fmt.Fprint(&p.buf, "\033[?25l") defer fmt.Fprint(&p.buf, "\033[?25h")