podman
36 строк · 676.0 Байт
1//go:build !windows && !plan9 && !solaris
2// +build !windows,!plan9,!solaris
3
4package goterm
5
6import (
7"errors"
8"math"
9"os"
10
11"golang.org/x/sys/unix"
12)
13
14func getWinsize() (*unix.Winsize, error) {
15
16ws, err := unix.IoctlGetWinsize(int(os.Stdout.Fd()), unix.TIOCGWINSZ)
17if err != nil {
18return nil, os.NewSyscallError("GetWinsize", err)
19}
20
21return ws, nil
22}
23
24// Height gets console height
25func Height() int {
26ws, err := getWinsize()
27if err != nil {
28// returns math.MinInt32 if we could not retrieve the height of console window,
29// like VSCode debugging console
30if errors.Is(err, unix.EOPNOTSUPP) {
31return math.MinInt32
32}
33return -1
34}
35return int(ws.Row)
36}
37