docs: added repository url to the cargo workspace
docs: added semi-catchy description
feat!: changed crate name, multiple improvements & updated deps
Easy terminal event handling and rendering with Bevy!
This crate primarily provides the TerminalPlugin
for Bevy.
It allows for easily rendering to the terminal and handling terminal events.
Check out the examples directory!
fn main() -> AppExit {
App::new()
.add_plugins(TerminalPlugin)
// ...
.run()
}
fn main() -> AppExit {
App::new()
.add_systems(PostUpdate, render)
// ...
.run()
}
fn render(mut terminal: ResMut<Terminal>) {
terminal
.0
.draw(|frame| {
let chunks = Layout::default()
.direction(Direction::Vertical)
.constraints([Constraint::Percentage(49), Constraint::Min(1)].as_ref())
.split(frame.area());
frame.render_widget(
Paragraph::new("Hellow World!\nPress `ESC` or `C-d` to exit.")
.alignment(Alignment::Center),
chunks[1],
);
})
.unwrap();
}
fn main() -> AppExit {
App::new()
.add_systems(PreUpdate, handler)
// ...
.run()
}
fn handler(
mut terminal_events: EventReader<bevy_term::Event>,
mut tui_state: ResMut<bevy_term::State>,
) {
for terminal_event in terminal_events.read() {
if let Event::Key(key_event) = terminal_event.0 {
if key_event.code == KeyCode::Esc {
*tui_state = bevy_term::State::Exit
}
}
}
}