A tmux like multiplexer for
gyscos/cursive
views
This project is work-in-progress
This project provides a tiling window manager for gyscos/cursive similar to Tmux. You can place any other cursive
view inside of a Mux
view to display these views in complex layouts side by side. Watch the demo below to see how it looks.
Simply add to your Cargo.toml
[dependencies]
cursive-multiplex = "^0.2.0"
And then use Mux::new
to create a new Mux view
let (mut mux, root_node) = cursive_multiplex::Mux::new(
cursive::views::TextView::new("Hello World!".to_string())
);
Mux has defaults defined for key bindings. You can change them with the API described in the docs.
Expand to see default keybindings
Action | Key |
---|---|
Move focus up | Alt + β |
Move focus right | Alt + β |
Move focus down | Alt + β |
Move focus left | Alt + β |
Resize up | Ctrl + β |
Resize right | Ctrl + β |
Resize down | Ctrl + β |
Resize left | Ctrl + β |
Zoom | Ctrl + x |
You can add views by giving a path or an id to an existing node e.g.
let new_node = mux.add_right_of(
cursive::views::TextView::new("Foo"),
root_node,
).expect("adding right panel to root failed");
Its also possible to add views by their path.
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");
}
Returned will be a Result Ok contains the new id assigned to the view, or an error in case of failure.
You can also remove views, by giving the id of the views.
mux.remove_id(new_node)?;
On success the id of the removed node is returned.
If you want to reorder your views you can easily switch them by using
mux.switch_views(new_node, old_node)?;
If you find any bugs/unexpected behaviour or you have a proposition for future changes open an issue describing the current behaviour and what you expected.
Just run
$ cargo test
to execute all available tests.
In case some test fails with your changes, you can use the cargo-insta
tool to investigate the test case.
To install
$ cargo install cargo-insta
and to run the tests and investigate all failing tests interactively.
$ cargo insta review
Any changes between the expected and received screen will be then displayed.
shields.io endpoints are generated inside the ./target/shields
folder. They are used in this README.
Fin Christensen
Johannes WΓΌnsche
Give a β if this project helped you!