podman
40 строк · 807.0 Байт
1//go:build windows
2// +build windows
3
4package goterm
5
6import (
7"errors"
8"math"
9"os"
10
11"golang.org/x/sys/windows"
12)
13
14func getWinsize() (*winsize, error) {
15ws := new(winsize)
16fd := os.Stdout.Fd()
17var info windows.ConsoleScreenBufferInfo
18if err := windows.GetConsoleScreenBufferInfo(windows.Handle(fd), &info); err != nil {
19return nil, err
20}
21
22ws.Col = uint16(info.Window.Right - info.Window.Left + 1)
23ws.Row = uint16(info.Window.Bottom - info.Window.Top + 1)
24
25return ws, nil
26}
27
28// Height gets console height
29func Height() int {
30ws, err := getWinsize()
31if err != nil {
32// returns math.MinInt32 if we could not retrieve the height of console window,
33// like VSCode debugging console
34if errors.Is(err, windows.WSAEOPNOTSUPP) {
35return math.MinInt32
36}
37return -1
38}
39return int(ws.Row)
40}
41