Goal
Bring modern TUI interaction with mouse drag support.
Description
Implement mouse drag event handling in src/ui/input.rs:
- Tab reordering: Detect a mouse press-and-drag on the tab bar. Track the drag position and swap tab order when released over a different tab slot.
- Panel resizing: Detect a drag on the border between the package list and details pane. Update a
split_ratio: f32 field in App (e.g., default 0.5) that the layout in draw.rs uses for the Constraint::Percentage split.
Crossterm provides MouseEventKind::Drag and MouseButton — enable mouse capture with crossterm::event::EnableMouseCapture.
Note: Mouse support in terminals is optional and varies — always maintain full keyboard fallback functionality.
Tech
Rust, Crossterm Mouse Events, Ratatui
Difficulty
Level 3 – Advanced
Goal
Bring modern TUI interaction with mouse drag support.
Description
Implement mouse drag event handling in
src/ui/input.rs:split_ratio: f32field inApp(e.g., default 0.5) that the layout indraw.rsuses for theConstraint::Percentagesplit.Crossterm provides
MouseEventKind::DragandMouseButton— enable mouse capture withcrossterm::event::EnableMouseCapture.Note: Mouse support in terminals is optional and varies — always maintain full keyboard fallback functionality.
Tech
Rust, Crossterm Mouse Events, Ratatui
Difficulty
Level 3 – Advanced