diff options
| author | Kevin Hoerr <kjhoerr@submelon.dev> | 2026-02-27 18:43:46 +0000 |
|---|---|---|
| committer | Kevin Hoerr <kjhoerr@submelon.dev> | 2026-02-27 18:43:46 +0000 |
| commit | 542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0 (patch) | |
| tree | 1557ce0c4ce50b78c19d420359fa97bbf2859527 /src/main | |
| parent | 2e314caed41f53997d18e49c28b8d76e7aa5af5d (diff) | |
| download | equity-tracker-542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0.tar.gz equity-tracker-542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0.tar.bz2 equity-tracker-542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0.zip | |
main.rs: Customize term setup
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/rust/main.rs | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/src/main/rust/main.rs b/src/main/rust/main.rs index e42fde9..2892d7f 100644 --- a/src/main/rust/main.rs +++ b/src/main/rust/main.rs @@ -2,12 +2,19 @@ mod app; pub mod store; use app::App; -use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyEventKind}; use miette::{IntoDiagnostic, Result}; +use ratatui::crossterm::{ + event::{ + self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEvent, KeyEventKind, + }, + execute, + terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode}, +}; use ratatui::{ - DefaultTerminal, Frame, + DefaultTerminal, Frame, Terminal, buffer::Buffer, layout::Rect, + prelude::CrosstermBackend, style::Stylize, symbols::border, text::{Line, Text}, @@ -16,13 +23,32 @@ use ratatui::{ #[cfg(not(tarpaulin_include))] fn main() -> Result<()> { - ratatui::run(|term| { - let mut ctx = Runtime { - app: App::default(), - }; - ctx.app.init_context()?; - ctx.run(term) - }) + enable_raw_mode().into_diagnostic()?; + let mut stdout = std::io::stdout(); + + execute!(stdout, EnterAlternateScreen, EnableMouseCapture).into_diagnostic()?; + + let backend = CrosstermBackend::new(stdout); + let mut term = Terminal::new(backend).into_diagnostic()?; + + let mut ctx = Runtime { + app: App::default(), + }; + ctx.app.init_context()?; + + // could be error, so don't unwrap; let term restore first + let run = ctx.run(&mut term); + + // restore terminal + disable_raw_mode().into_diagnostic()?; + execute!( + term.backend_mut(), + LeaveAlternateScreen, + DisableMouseCapture + ) + .into_diagnostic()?; + term.show_cursor().into_diagnostic()?; + run } struct Runtime { |
