Browse Source
cmd: eliminate flickering with synchronized output
progress-flicker
Jeremy Schlatter
1 year ago
No known key found for this signature in database
GPG Key ID: 4D081B793DF81368
1 changed files with
5 additions and
2 deletions
-
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") |
|
|
|
|
|
|
|
|