13 个版本

0.5.0 2024年3月6日
0.4.4 2023年12月6日
0.4.3 2023年3月2日
0.4.1 2022年5月25日
0.2.0 2020年11月10日

#80命令行界面

Download history 3571/week @ 2024-04-23 4583/week @ 2024-04-30 3822/week @ 2024-05-07 3364/week @ 2024-05-14 3129/week @ 2024-05-21 3547/week @ 2024-05-28 2885/week @ 2024-06-04 3160/week @ 2024-06-11 3868/week @ 2024-06-18 4725/week @ 2024-06-25 4628/week @ 2024-07-02 4408/week @ 2024-07-09 3213/week @ 2024-07-16 3446/week @ 2024-07-23 3453/week @ 2024-07-30 2718/week @ 2024-08-06

每月 13,329 次下载
用于 10 个 Crates (8 直接使用)

MIT/Apache 许可

18KB
344

termbg

一个用于终端背景色检测的 Rust 库。检测到的颜色由 RGB 或主题(深色或浅色)提供。

Actions Status Crates.io Docs.rs

支持终端

如果检查其他终端,请通过 问题 报告。

不支持终端

"Windows Terminal" 可能会在未来的版本中得到支持: https://github.com/microsoft/terminal/issues/3718.

用法

[dependencies]
termbg = "0.5.0"

示例

fn main() {
    let timeout = std::time::Duration::from_millis(100);

    println!("Check terminal background color");
    let term = termbg::terminal();
    let rgb = termbg::rgb(timeout);
    let theme = termbg::theme(timeout);

    println!("  Term : {:?}", term);

    match rgb {
        Ok(rgb) => {
            println!("  Color: R={:x}, G={:x}, B={:x}", rgb.r, rgb.g, rgb.b);
        }
        Err(e) => {
            println!("  Color: detection failed {:?}", e);
        }
    }

    match theme {
        Ok(theme) => {
            println!("  Theme: {:?}", theme);
        }
        Err(e) => {
            println!("  Theme: detection failed {:?}", e);
        }
    }
}

检查程序

此 crate 提供了一个简单的检查程序。

$ cargo run
Check terminal background color
  Term : Tmux
  Color: R=0, G=0, B=0
  Theme: Dark

检测机制

如果终端是 win32 控制台,使用 WIN32API 进行检测。如果终端是 xterm 兼容的,使用 "Xterm Control Sequences"。如果这些方法失败,则使用 COLORFGBG 环境变量。

检测到的 RGB 转换为 YCbCr。如果 Y > 0.5,则检测到的主题为 "浅色",否则为 "深色"。

依赖关系

~5–15MB
~193K SLoC