blob: 4b912739bbe2ff64b785d10fafc6d629bcad987e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
use crate::shell::prelude::*;
pub struct Handler;
impl Handler {
pub fn new(event_w: crate::shell::event::Writer) -> Result<Self> {
let signals = tokio::signal::unix::signal(
tokio::signal::unix::SignalKind::window_change(),
)?;
tokio::spawn(Self::task(signals, event_w));
Ok(Self)
}
async fn task(
mut signals: tokio::signal::unix::Signal,
event_w: crate::shell::event::Writer,
) {
event_w.send(resize_event());
while signals.recv().await.is_some() {
event_w.send(resize_event());
}
}
}
fn resize_event() -> Event {
Event::Resize(terminal_size::terminal_size().map_or(
(24, 80),
|(terminal_size::Width(w), terminal_size::Height(h))| (h, w),
))
}
|