term.go 450 B

1234567891011121314151617181920
  1. package term
  2. import (
  3. "fmt"
  4. "github.com/moby/term"
  5. "io"
  6. )
  7. // TerminalSize 获取当前终端宽高,非终端返回err,同时宽高返回0值
  8. func TerminalSize(w io.Writer) (int, int, error) {
  9. outFd, isTerminal := term.GetFdInfo(w)
  10. if !isTerminal {
  11. return 0, 0, fmt.Errorf("given writer is no terminal")
  12. }
  13. winSize, err := term.GetWinsize(outFd)
  14. if err != nil {
  15. return 0, 0, err
  16. }
  17. return int(winSize.Width), int(winSize.Height), nil
  18. }