zombie_dreams/
zombie_dreams.rs1use crossterm::event::{self, *};
2use std::io;
3use tui_gradient_block::{
4 handle_args, structs::border_symbols::SegmentSet,
5};
6use tui_rule::create_raw_spans;
7fn main() -> io::Result<()> {
8 let arg = handle_args!();
9 let style = SegmentSet::from_ratatui_set(arg);
10 let mut terminal = ratatui::init();
11 let app_result = run(&mut terminal, style);
12 ratatui::restore();
13 app_result
14}
15fn run(
16 terminal: &mut ratatui::DefaultTerminal,
17 set: SegmentSet,
18) -> io::Result<()> {
19 use ratatui::{text::Line, layout::{Constraint, Direction, Layout}};
20 use tui_gradient_block::{
21 gradient_block::GradientBlock,
22 theme_presets::cool::t_zombie_dreams,
23 };
24 let theme = t_zombie_dreams::full();
25 let blocks = vec![
26 GradientBlock::new()
27 .with_gradient(theme.double_corners_left)
28 .with_set(set.clone()),
29 GradientBlock::new().title_top(Line::from(tui_rule::generate_gradient_text!("Zombie Dreams", theme.right.top)).centered())
30 .with_gradient(theme.misc1)
31 .with_set(set.clone()),
32 GradientBlock::new()
33 .with_gradient(theme.double_corners_right)
34 .with_set(set.clone()),
35 ];
36
37 loop {
38 terminal.draw(|f| {
39 let base = Layout::new(
40 Direction::Horizontal,
41 [
42 Constraint::Percentage(33),
43 Constraint::Percentage(33),
44 Constraint::Percentage(34),
45 ],
46 )
47 .vertical_margin(1)
48 .horizontal_margin(1)
49 .spacing(3)
50 .split(f.area());
51 for (block, area) in blocks.iter().zip(base.iter()) {
52 f.render_widget(block, *area);
53 }
54 })?;
55 let event = event::read()?;
56
57 if let Event::Key(key_event) = event {
58 if key_event.kind == KeyEventKind::Press {
59 if let KeyCode::Char('q') = key_event.code {
60 break Ok(());
61 }
62 }
63 }
64 }
65}