ghostscope_ui/
lib.rs

1// Core modules
2pub mod action;
3pub mod components;
4pub mod events;
5pub mod handlers;
6pub mod model;
7pub mod ui;
8pub mod utils;
9
10// Public exports
11pub use action::{Action, PanelType};
12pub use components::App;
13pub use events::{EventRegistry, RuntimeChannels, RuntimeCommand, RuntimeStatus, TuiEvent};
14pub use model::ui_state::{HistoryConfig, LayoutMode, UiConfig};
15
16use anyhow::Result;
17
18pub async fn run_tui_mode(event_registry: EventRegistry, layout_mode: LayoutMode) -> Result<()> {
19    let ui_config = UiConfig {
20        layout_mode,
21        panel_ratios: [4, 3, 3], // Default ratios for backward compatibility
22        show_source_panel: true,
23        two_panel_ratios: [3, 3],
24        default_focus: crate::action::PanelType::InteractiveCommand,
25        history: HistoryConfig::default(),
26        ebpf_max_messages: 2000, // Default
27    };
28    run_tui_mode_with_config(event_registry, ui_config).await
29}
30
31pub async fn run_tui_mode_with_config(
32    event_registry: EventRegistry,
33    ui_config: UiConfig,
34) -> Result<()> {
35    let mut app = App::new_with_config(event_registry, ui_config).await?;
36    app.run().await
37}