diff options
author | Tom Feist <shabble@metavore.org> | 2010-10-06 23:20:27 +0000 |
---|---|---|
committer | Tom Feist <shabble@metavore.org> | 2010-10-06 23:20:27 +0000 |
commit | 1a4fcd79fd841430365d2e184f82f5e4ac0f736b (patch) | |
tree | 668af61f3e9c1a5083a11c4b2ba5d4b1742b45a9 | |
parent | added some debugging output to terminal size detection (diff) | |
download | irssi-scripts-1a4fcd79fd841430365d2e184f82f5e4ac0f736b.tar.gz irssi-scripts-1a4fcd79fd841430365d2e184f82f5e4ac0f736b.zip |
back to stty parsing, with linux and osx cases. Falls back to 80x24 if it
doesn't match either.
-rw-r--r-- | prompt_info/prompt_replace.pl | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/prompt_info/prompt_replace.pl b/prompt_info/prompt_replace.pl index 90bb6f6..20fb7b1 100644 --- a/prompt_info/prompt_replace.pl +++ b/prompt_info/prompt_replace.pl @@ -39,14 +39,24 @@ init(); sub update_terminal_size { - - my $rows = qx/tput lines/; - my $cols = qx/tput cols/; - chomp $rows; - chomp $cols; - - $term_w = 0+$cols; - $term_h = 0+$rows; + my @stty_data = qx/stty -a/; + my $line = $stty_data[0]; + + # linux + # speed 38400 baud; rows 36; columns 126; line = 0; + if ($line =~ m/rows (\d+); columns (\d+);/) { + $term_h = $1; + $term_w = $2; + # osx + # speed 9600 baud; 40 rows; 235 columns; + } elsif ($line =~ m/(\d+) rows; (\d+) columns;/) { + $term_h = $1; + $term_w = $2; + } else { + # guess? + $term_h = 24; + $term_w = 80; + } print "Terminal detected as $term_w cols by $term_h rows" if DEBUG; } |