10 个版本 (有重大变化)

0.8.1 2023 年 3 月 13 日
0.7.0 2021 年 12 月 12 日
0.6.0 2021 年 11 月 23 日
0.4.0 2021 年 4 月 30 日
0.1.0 2019 年 5 月 20 日

#67硬件支持

Download history 11019/week @ 2024-03-14 9379/week @ 2024-03-21 7234/week @ 2024-03-28 5815/week @ 2024-04-04 5248/week @ 2024-04-11 4569/week @ 2024-04-18 3035/week @ 2024-04-25 3418/week @ 2024-05-02 3184/week @ 2024-05-09 3430/week @ 2024-05-16 3011/week @ 2024-05-23 2986/week @ 2024-05-30 3204/week @ 2024-06-06 2807/week @ 2024-06-13 2487/week @ 2024-06-20 1734/week @ 2024-06-27

每月下载量 10,774
36 个 Crates 使用(其中 15 个直接使用)

MIT 许可证

130KB
3K SLoC

此 crate 为与系统提供的伪终端 (pty) 接口进行交互提供了跨平台 API。与其他此空间中的 crate 不同,此 crate 提供了一组 trait,允许在运行时选择不同的实现。此 crate 是 wezterm 的一部分。

use portable_pty::{CommandBuilder, PtySize, native_pty_system, PtySystem};
use anyhow::Error;

// Use the native pty implementation for the system
let pty_system = native_pty_system();

// Create a new pty
let mut pair = pty_system.openpty(PtySize {
    rows: 24,
    cols: 80,
    // Not all systems support pixel_width, pixel_height,
    // but it is good practice to set it to something
    // that matches the size of the selected font.  That
    // is more complex than can be shown here in this
    // brief example though!
    pixel_width: 0,
    pixel_height: 0,
})?;

// Spawn a shell into the pty
let cmd = CommandBuilder::new("bash");
let child = pair.slave.spawn_command(cmd)?;

// Read and parse output from the pty with reader
let mut reader = pair.master.try_clone_reader()?;

// Send data to the pty by writing to the master
writeln!(pair.master.take_writer()?, "ls -l\r\n")?;

依赖关系

约 2-3MB
约 60K SLoC