rmux-client 0.1.0

Blocking local client and attach-mode plumbing for the RMUX terminal multiplexer.
Documentation
use std::os::fd::AsFd;

use rmux_proto::TerminalSize;
use rustix::termios::tcgetwinsize;

#[cfg(target_os = "linux")]
#[path = "resize/linux.rs"]
mod platform;
#[cfg(target_os = "macos")]
#[path = "resize/macos.rs"]
mod platform;

pub(super) use platform::{ResizeWatcher, SignalMaskGuard};

use super::Result;

pub(super) fn terminal_size_from_fd<Fd>(fd: &Fd) -> Result<Option<TerminalSize>>
where
    Fd: AsFd,
{
    let winsize = tcgetwinsize(fd)?;
    let size = TerminalSize {
        cols: winsize.ws_col,
        rows: winsize.ws_row,
    };
    Ok((size.cols > 0 && size.rows > 0).then_some(size))
}