Skip to main content

pty/
pty.rs

1//! PTY terminal example.
2//!
3//! Demonstrates creating a terminal manager, spawning a PTY, and handling output.
4
5use dscode_terminal::{TerminalEventSender, TerminalManager};
6
7struct PrintSender;
8
9impl TerminalEventSender for PrintSender {
10    fn send_output(&self, terminal_id: &str, data: &str) {
11        print!("[{}] {}", terminal_id, data);
12    }
13
14    fn send_close(&self, terminal_id: &str) {
15        println!("[{}] closed", terminal_id);
16    }
17}
18
19fn main() -> Result<(), Box<dyn std::error::Error>> {
20    let manager = TerminalManager::new(Box::new(PrintSender));
21
22    // Create a terminal with the default shell
23    let id = manager.create_terminal(None, None, None)?;
24    println!("Created terminal: {}", id);
25
26    // Start reading PTY output
27    manager.start_reading(&id)?;
28
29    // Write a command
30    manager.write_to_terminal(&id, "echo 'Hello from PTY'\n")?;
31
32    // Resize
33    manager.resize_terminal(&id, 120, 40)?;
34
35    // Clean up
36    manager.close_terminal(&id)?;
37
38    Ok(())
39}