pub struct PtyHandle { /* private fields */ }Expand description
A non-blocking, channel-based handle to a running remote PTY session.
PtyHandle provides a programmatic interface for embedding a PTY
session inside a TUI pane or any custom I/O loop. It does not manage
raw mode, stdin/stdout, or SIGWINCH — those are the caller’s
responsibility.
§Example
let mut handle = session.pty_builder()
.with_term("xterm-256color")
.with_size(80, 24)
.open()
.await?;
// Send input
handle.write(b"ls -la\n").await?;
// Read output
while let Some(data) = handle.read().await {
process_terminal_output(&data);
}
let status = handle.wait().await?;Implementations§
Source§impl PtyHandle
impl PtyHandle
Sourcepub async fn write(&self, data: &[u8]) -> Result<()>
pub async fn write(&self, data: &[u8]) -> Result<()>
Sends input data to the remote PTY.
The data is sent as-is, including any escape sequences. Returns an error if the background task has already exited.
Sourcepub async fn read(&mut self) -> Option<Vec<u8>>
pub async fn read(&mut self) -> Option<Vec<u8>>
Receives raw terminal output from the remote PTY.
Returns None when the channel is closed (session ended).
The output includes raw escape sequences suitable for a
terminal emulator.
Sourcepub async fn resize(&self, cols: u32, rows: u32) -> Result<()>
pub async fn resize(&self, cols: u32, rows: u32) -> Result<()>
Sends a window resize event to the remote PTY.
§Arguments
cols- New number of columnsrows- New number of rows
Sourcepub async fn wait(self) -> Result<PtyExitStatus>
pub async fn wait(self) -> Result<PtyExitStatus>
Consumes the handle and waits for the remote PTY to exit.
Returns the exit status of the remote process.
Sourcepub fn try_wait(&self) -> Option<PtyExitStatus>
pub fn try_wait(&self) -> Option<PtyExitStatus>
Non-blocking check for whether the PTY has exited.
Returns Some(status) if the process has exited, None if
still running.
Sourcepub fn close(&mut self)
pub fn close(&mut self)
Closes the input side of the PTY, sending EOF to the remote.
After calling this, no more input can be sent.
Sourcepub fn current_mode(&self) -> Option<PtyMode>
pub fn current_mode(&self) -> Option<PtyMode>
Returns the current PTY mode if detection is enabled.
Sourcepub fn is_alt_mode(&self) -> bool
pub fn is_alt_mode(&self) -> bool
Returns true if currently in alternate buffer mode.
Sourcepub fn is_std_mode(&self) -> bool
pub fn is_std_mode(&self) -> bool
Returns true if currently in standard buffer mode.
Sourcepub fn watch_mode(&self) -> Option<ModeWatcher>
pub fn watch_mode(&self) -> Option<ModeWatcher>
Creates a watcher for mode change events.
Returns a ModeWatcher that can be used to await mode changes.
This enables async patterns like tokio::select! integration.