docs: def getTerminalSize():
      """
      returns (lines:int, cols:int)
      """
  
      def ioctl_GWINSZ(fd):
          # These two imports are only present on POSIX systems, so they must be
          # guarded by a try block.
          import fcntl
          import termios
          return struct.unpack("hh", fcntl.ioctl(fd, termios.TIOCGWINSZ, "1234"))
      # try stdin, stdout, stderr
      for fd in (0, 1, 2):
          try:
              return ioctl_GWINSZ(fd)
          except:
              pass
      # try os.ctermid()
      try:
          fd = os.open(os.ctermid(), os.O_RDONLY)
          try:
              return ioctl_GWINSZ(fd)
          finally:
              os.close(fd)
      except:
          pass
      # try environment variables
      try:
          return tuple(int(os.getenv(var)) for var in ("LINES", "COLUMNS"))
      except:
          pass
      # i give up. return default.
      return (25, 80)