aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Hoerr <kjhoerr@submelon.dev>2026-02-27 18:43:46 +0000
committerKevin Hoerr <kjhoerr@submelon.dev>2026-02-27 18:43:46 +0000
commit542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0 (patch)
tree1557ce0c4ce50b78c19d420359fa97bbf2859527
parent2e314caed41f53997d18e49c28b8d76e7aa5af5d (diff)
downloadequity-tracker-542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0.tar.gz
equity-tracker-542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0.tar.bz2
equity-tracker-542384b7e3b9dfb0f5aacb35c3d33ca286ce0df0.zip
main.rs: Customize term setup
-rw-r--r--src/main/rust/main.rs44
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 {