From 0f345d3f3f8247fbc18f83748ea25c9f4731eaa5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 28 Aug 2013 09:21:11 +0000 Subject: dtas-console: support terminal resize Lightly-tested, but this seems to work. --- bin/dtas-console | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bin/dtas-console b/bin/dtas-console index f60ae13..3b246bd 100755 --- a/bin/dtas-console +++ b/bin/dtas-console @@ -6,14 +6,17 @@ # Note: no idea what I'm doing, especially w.r.t. curses require 'dtas/unix_client' require 'dtas/rg_state' +require 'dtas/sigevent' require 'curses' require 'yaml' +se = DTAS::Sigevent.new +trap(:WINCH) { se.signal } w = DTAS::UNIXClient.new w.req_ok('watch') c = DTAS::UNIXClient.new cur = YAML.load(c.req('current')) -readable = [ w, $stdin ] +readable = [ se, w, $stdin ] # current rg mode rg_mode = DTAS::RGState::RG_MODE.keys.unshift("off") @@ -146,6 +149,9 @@ begin r = IO.select(readable, nil, nil, current ? interval : nil) or next r[0].each do |io| case io + when se + se.readable_iter {} # noop, just consume the event + Curses.clear when w event = w.res_wait events << "#{Time.now.strftime(tfmt)} #{event}" -- cgit v1.2.3-24-ge0c7