#cursive #tui #view #tiling #terminal #window-manager #terminal-window

cursive-multiplex

A tmux like multiplexer for gyscos/cursive views

26 个版本

0.7.0 2024年8月12日
0.6.0 2022年1月15日
0.5.1 2021年6月10日
0.5.0 2021年3月3日
0.2.14 2019年9月11日

#67 in GUI

Download history 20/week @ 2024-04-28 7/week @ 2024-06-30 2/week @ 2024-07-21 12/week @ 2024-07-28 108/week @ 2024-08-11

122 个月下载量

BSD-3-Clause

1.5MB
1.5K SLoC

欢迎使用 cursive-multiplex 👋

stable build nightly build crates.io Docs.rs GitHub PRs Welcome
A tmux like multiplexer for gyscos/cursive views


此项目正在进行中

此项目为 gyscos/cursive 提供类似于 Tmux 的分格窗口管理器。您可以将任何其他 cursive 视图放置在 Mux 视图内,以在复杂的布局中并排显示这些视图。观看下面的演示以了解其外观。

外观如何? demo terminalizer

展开查看 Demo GIF

用法

简单地将以下内容添加到您的 Cargo.toml

[dependencies]
cursive-multiplex = "^0.2.0"

然后使用 Mux::new 创建一个新的 Mux 视图

let (mut mux, root_node) = cursive_multiplex::Mux::new(
    cursive::views::TextView::new("Hello World!".to_string())
);

Mux 为键绑定定义了默认值。您可以使用文档中描述的 API 进行更改。

展开查看默认键绑定
操作
向上移动焦点 Alt +
向右移动焦点 Alt +
向下移动焦点 Alt +
向左移动焦点 Alt +
向上调整大小 Ctrl +
向右调整大小 Ctrl +
向下调整大小 Ctrl +
向左调整大小 Ctrl +
缩放 Ctrl + x

添加视图

您可以通过为现有节点提供路径或 ID 来添加视图,例如。

let new_node = mux.add_right_of(
    cursive::views::TextView::new("Foo"),
    root_node,
).expect("adding right panel to root failed");

也可以通过它们的路径添加视图。

if let Some(sibbling) = mux.root().right().right().down().build() {
    let new_node = mux.add_above(
        cursive::views::TextView::new("Foo"),
        sibbling,
    ).expect("adding by path failed");
}

返回的 Result Ok 包含分配给视图的新 ID,或者失败时返回错误。

删除视图

您也可以通过提供视图的 ID 来删除视图。

mux.remove_id(new_node)?;

成功时返回已删除节点的 ID。

切换视图

如果您想重新排列视图,您可以通过使用以下方法轻松切换它们:

mux.switch_views(new_node, old_node)?;

故障排除

如果您发现任何错误/意外的行为或您对未来的更改有建议,请打开一个问题,描述当前的行为和您期望的行为。

开发 cargo test

运行测试

运行所有测试套件

只需运行

$ cargo test

即可执行所有可用的测试。

调查失败的测试

如果您的更改导致某些测试失败,您可以使用 cargo-insta 工具来调查测试用例。

安装

$ cargo install cargo-insta

并交互式地运行测试和调查所有失败的测试。

$ cargo insta review

然后将显示期望和接收到的屏幕之间的任何更改。

shields.io 端点

shields.io 端点在 ./target/shields 文件夹内生成。它们用于本 README。

作者

Fin Christensen

:octocat: @fin-ger
🐘 @fin_ger@weirder.earth
🐦 @fin_ger_github


Johannes Wünsche

:octocat: @jwuensche
🐘 @fredowald@mastodon.social
🐦 @Fredowald

显示您的支持

如果此项目对您有帮助,请给它一个 ⭐!

依赖项

~6–12MB
~135K SLoC