# # This file is NOT part of Pyrocko. # # Code is considered public domain, based on # https://gist.github.com/jtriley/1108174 #
''' Get terminal size.
Works on linux,os x,windows,cygwin(windows)
originally retrieved from: http://stackoverflow.com/questions/566746/how-to-get-console-window-width-in-python '''
tuple_xy = _get_terminal_size_windows() if tuple_xy is None: tuple_xy = _get_terminal_size_tput() # needed for window's python in cygwin's xterm!
try: from ctypes import windll, create_string_buffer # stdin handle is -10 # stdout handle is -11 # stderr handle is -12 h = windll.kernel32.GetStdHandle(-12) csbi = create_string_buffer(22) res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi) if res: (bufx, bufy, curx, cury, wattr, left, top, right, bottom, maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw) sizex = right - left + 1 sizey = bottom - top + 1 return sizex, sizey except Exception: pass
# get terminal width # src: http://stackoverflow.com/questions/263890/how-do-i-find-the-width-height-of-a-terminal-window # noqa try: cols = int(subprocess.check_call(['tput' 'cols'])) rows = int(subprocess.check_call(['tput', 'lines'])) return (cols, rows) except Exception: pass
'hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234')) return cr
cr = ioctl_GWINSZ(fd) os.close(fd)
return int(cr[1]), int(cr[0])
if __name__ == "__main__": sizex, sizey = get_terminal_size() print(sizex, sizey) |