module Tins::Terminal

def cols

def cols
  columns
end

def columns

def columns
  winsize[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
  winsize[0] || `stty size 2>/dev/null`.split[0].to_i.nonzero? ||
    `tput lines 2>/dev/null`.to_i.nonzero? || 25
end

def winsize

def winsize
  if IO.respond_to?(:console)
    c = IO.console
    if c.respond_to?(:winsize)
      c.winsize
    else
      []
    end
  else
    []
  end
end