Kenneth McDonald wrote:
> Followup: I found this code, which is supposed to do the trick:
> 
> #!/usr/bin/env ruby
> 
> TIOCGWINSZ = 0x5413
> 
> def terminal_size
>      rows, cols = 25, 80
>      buf = [0, 0, 0, 0].pack("SSSS")
>      if STDOUT.ioctl(TIOCGWINSZ, buf) >= 0 then
>          rows, cols, row_pixels, row_pixels, col_pixels =  
> buf.unpack("SSSS")[0..1]
>      end
>      return [rows, cols]
> end
> 
> print terminal_size
> 
> 
> But when I run it, I get :
> 
> /term_size.rb:9:in `ioctl': Inappropriate ioctl for device  
> (Errno::ENOTTY)
>          from ./term_size.rb:9:in `terminal_size'
>          from ./term_size.rb:15
> 
> This is on OS X 10.5, tried with both terminal and iterm. Any ideas?
> 
> Thanks,
> Ken
> 
> 
> On Sep 25, 2008, at 5:33 PM, Kenneth McDonald wrote:
> 
>> I'd like to be able to print to terminal and do some reasonable  
>> formatting, without going to the trouble of learning curses. I  
>> simply need to know the dimensions of the terminal, but that info  
>> doesn't appear to be available in the ENV variables (which is what  
>> I'd expected.) Is there a way to get this info?
>>
>> Thanks,
>> Ken
>>
> 
> 
Do you have a command called infocmp available on OS X?  Calling this 
without a name will return the terminal capabilities of the currently 
defined terminal.  From this you can extract the lines and columns by 
looking for lines# and cols# respectively.
The above command gets the information from the terminfo database and 
there should be other implementations of it available if it is not on 
your system.
I got the above command from the O'Reilly 'termcap and terminfo' book.