From f9c7ead1601f286d619e4d6988cd2da2c86474ce Mon Sep 17 00:00:00 2001 From: Jeremy Schlatter Date: Mon, 17 Feb 2025 20:01:03 -0800 Subject: [PATCH] cmd: eliminate flickering with synchronized output --- progress/progress.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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")