use std::thread; use std::time::Duration; use sly::block::{Block, BorderStyle}; use sly::style::{Span, Style}; use sly::terminal; use sly::view::View; fn make_block(width: usize) -> Block { let inner = Block::text(vec![ vec![Span::styled( format!("Terminal width: {width} columns"), Style::new().bold(), )], vec![Span::plain("Press Ctrl+C to exit.")], ]); Block::boxed(inner, BorderStyle::Rounded, None) } fn main() { terminal::install_resize_handler(); let mut width = terminal::get_size() .map(|(cols, _)| cols as usize) .unwrap_or(80); let mut view = View::create(&make_block(width), width); loop { thread::sleep(Duration::from_millis(50)); if terminal::take_resize() { let new_width = terminal::get_size() .map(|(cols, _)| cols as usize) .unwrap_or(width); width = new_width; view.resize(&make_block(width), width); } } }