module Tins::Terminal

def cols

def cols
  columns
end

def columns

def columns
  IO.ask_and_send(:console).ask_and_send(:winsize).ask_and_send(:[], 1) ||
    `stty size 2>/dev/null`.split[1].to_i.nonzero? ||
    `tput cols 2>/dev/null`.to_i.nonzero? ||
    80
end

def lines

def lines
  rows
end

def rows

def rows
  IO.ask_and_send(:console).ask_and_send(:winsize).ask_and_send(:[], 0) ||
    `stty size 2>/dev/null`.split[0].to_i.nonzero? ||
    `tput lines 2>/dev/null`.to_i.nonzero? ||
    25
end