| 123456789101112131415161718192021222324252627282930313233 |
- //go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || aix
- // +build darwin dragonfly freebsd linux netbsd openbsd solaris aix
- package tea
- import (
- "os"
- "os/signal"
- "syscall"
- )
- // listenForResize sends messages (or errors) when the terminal resizes.
- // Argument output should be the file descriptor for the terminal; usually
- // os.Stdout.
- func (p *Program) listenForResize(done chan struct{}) {
- sig := make(chan os.Signal, 1)
- signal.Notify(sig, syscall.SIGWINCH)
- defer func() {
- signal.Stop(sig)
- close(done)
- }()
- for {
- select {
- case <-p.ctx.Done():
- return
- case <-sig:
- }
- p.checkResize()
- }
- }
|