#终端 #工具包 #CSS #终端文本 #TUI #优雅 #文本渲染

kimono

受CSS启发的终端样式工具包,用于优雅的TUI

12个版本

0.1.3 2022年7月30日
0.1.2 2022年7月24日
0.0.7 2022年7月24日
0.0.0 2020年5月29日

#342 in 命令行界面


用于 2 crates

MIT/Apache

1MB
605 代码行,不包括注释

kimono

docs.rs docs

受CSS和lipgloss启发的终端样式工具包,用于24位真彩色终端。专为优雅的TUI设计。

Screen Shot 2022-07-30 at 10 57 29 AM

图像终端渲染由我们的姐妹项目ukiyeo完成。

cargo add kimono

示例

文本可以样式化。

use kimono::*;

const STYLE: Style = Style::new().bold().color(0x91b984);

fn main() {
    STYLE.render("こんにちは");
}

Unicode文本可以填充、边框化和定位。

Screen Shot 2022-07-23 at 5 01 28 PM
use kimono::*;

const STYLE: Style = Style::new()
    .padding_top(1)
    .padding_left(1)
    .padding_right(2)
    .padding_bottom(3)
    .border(1)
    .border_style(BORDER_STYLE_OUTLINE)
    .border_color(0xddae74)
    .border_background(0xbc5633)
    .color(0xebdeb8)
    .background(0x407955);

fn main() {
    clear_screen();
    STYLE.render_at_position(10, 3, "着物");
    print!("\n\r");
}

文本可以限制宽度和/或高度。

Screen Shot 2022-07-23 at 9 17 45 PM
use kimono::*;

const STYLE: Style = Style::new()
    .padding(1)
    .color(0xfffd7c)
    .width(8)
    .background(0x956471);

fn main() {
    clear_screen();
    STYLE.render_at_position(10, 3, "abcdefghijklmno");
    print!("\n\r");
}

可以测量文本。

(8, 5)
use kimono::*;

const STYLE: Style = Style::new()
    .padding(1)
    .color(0xfffd7c)
    .width(8)
    .background(0x956471);

fn main() {
    println!("{:?}", STYLE.measure("abcdefghijklmno"));
}

边框具有高级样式。

Screen Shot 2022-07-24 at 1 31 08 PM
use kimono::*;

const STYLE: Style = Style::new()
    .padding(1)
    .color(0xe46281)
    .background(0xc50f47)
    .border(1)
    .italic()
    .border_style(BorderStyle {
        top_left: None,
        top: Some(''),
        top_right: None,
        left: Some(''),
        right: Some(''),
        bottom_left: None,
        bottom: Some(''),
        bottom_right: None,
        bold: true,
        italic: false,
        underline: false,
        strikethrough: false,
    })
    .border_color(0xe5c7c9)
    .border_background(0x9e1d49);

fn main() {
    clear_screen();
    STYLE.render_at_position(10, 3, "The Tale of Genji by 紫 式部");
    print!("\n\r");
}

可以对齐文本。

Screen Shot 2022-07-30 at 2 10 38 PM
use kimono::*;

const STYLE: Style = Style::new()
    .padding(1)
    .color(0xb1a49a)
    .background(0xea664d)
    .border(1)
    .width(30)
    .text_align(TextAlign::Center);

fn main() {
    clear_screen();
    STYLE.render_at_position(10, 3, "sun egg mango");
    print!("\n\r");
}

艺术

从Unix终端启发的Kimono图案。

1658677463667

1658677463603

1658677461856

许可证

本项目受以下任一许可证的许可:

任选其一。

贡献

除非您明确说明,否则您提交给 kimono 的任何有意包含的贡献,根据Apache-2.0许可证定义,将按上述方式双许可,不附加任何额外条款或条件。

依赖关系

~0.4–10MB
~53K SLoC