gravityfile_tui/lib.rs
1//! Terminal user interface for gravityfile.
2//!
3//! This crate provides an interactive TUI for exploring disk usage,
4//! built with ratatui.
5
6mod app;
7mod event;
8mod theme;
9mod ui;
10
11pub use app::{App, AppResult};
12pub use theme::Theme;
13
14/// Run the TUI application.
15pub fn run(path: std::path::PathBuf) -> AppResult<()> {
16 // Create tokio runtime for async operations
17 let rt = tokio::runtime::Runtime::new()?;
18
19 let terminal = ratatui::init();
20 let result = rt.block_on(App::new(path).run(terminal));
21 ratatui::restore();
22
23 // Shutdown runtime immediately to cancel background tasks
24 rt.shutdown_timeout(std::time::Duration::from_millis(100));
25
26 result
27}