about summary refs log blame commit diff stats
path: root/src/io/term.nim
blob: a51b2a56de75f69cd6eb9d36b136fe19e57b032c (plain) (tree)
1
2
3
4
5
6
7
8
9
10
               

                    


                          



                

                   

                                           





                                                                          

                                             









                                                           

                                               
import terminal
when defined(posix):
  import termios

type
  TermAttributes* = object
    width*: int
    height*: int
    ppc*: int
    ppl*: int
    width_px*: int
    height_px*: int

proc getTermAttributes*(): TermAttributes =
  if stdin.isatty():
    when defined(posix):
      var win: IOctl_WinSize
      if ioctl(cint(getOsFileHandle(stdout)), TIOCGWINSZ, addr win) != -1:
        result.width = int(win.ws_col)
        result.height = int(win.ws_row)
        result.width_px = int(win.ws_xpixel)
        result.height_px = int(win.ws_ypixel)
        result.ppc = int(win.ws_xpixel) div int(win.ws_col)
        result.ppl = int(win.ws_ypixel) div int(win.ws_row)
        return
  #fail
  result.width = terminalWidth()
  result.height = terminalHeight()
  if result.height == 0:
    result.height = 24
  result.ppc = 9
  result.ppl = 18
  result.width_px = result.ppc * result.width
  result.height_px = result.ppl * result.height