help controls

This commit is contained in:
2026-04-13 22:26:43 -06:00
parent 18e22b2207
commit 8b93f03261

View File

@@ -535,14 +535,45 @@ fn centered_rect(width: u16, height: u16, area: Rect) -> Rect {
// ── Status bar ────────────────────────────────────────────────────────────────
fn draw_status_bar(f: &mut Frame, app: &App, area: Rect) {
let msg = if app.selected == SMART_IDX && app.smart_permission_error {
" ZFS Stats [!] SMART needs root — press p to enter sudo password q Quit"
let key = |s: &'static str| Span::styled(s, Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD));
let sep = |s: &'static str| Span::styled(s, Style::default().fg(Color::White));
let desc = |s: &'static str| Span::styled(s, Style::default().fg(Color::Gray));
let err = |s: &'static str| Span::styled(s, Style::default().fg(Color::Red).add_modifier(Modifier::BOLD));
let divider = || sep(" ");
let mut spans: Vec<Span> = vec![
sep(" "),
// Navigation
key("[↑/↓]"), sep(" "), desc("or"), sep(" "), key("[j/k]"), sep(" "), desc("Navigate"),
divider(),
// Quit
key("[q/Esc]"), sep(" "), desc("Quit"),
];
// Context-sensitive: sudo password on SMART panel
if app.selected == SMART_IDX {
spans.push(divider());
spans.push(key("[p]"));
spans.push(sep(" "));
spans.push(desc("sudo password"));
}
// Error indicators
if app.selected == SMART_IDX && app.smart_permission_error {
spans.push(divider());
spans.push(err("[!]"));
spans.push(sep(" "));
spans.push(Span::styled("SMART needs root", Style::default().fg(Color::Red)));
} else if app.error.is_some() || app.pool_error.is_some() {
" ZFS Stats [!] Some stats unavailable ↑/↓ or j/k Navigate q Quit"
} else {
" ZFS Stats ↑/↓ or j/k Navigate q Quit"
};
f.render_widget(Paragraph::new(msg).style(Style::default().bg(Color::DarkGray).fg(Color::White)), area);
spans.push(divider());
spans.push(err("[!]"));
spans.push(sep(" "));
spans.push(Span::styled("Some stats unavailable", Style::default().fg(Color::Red)));
}
let bar = Paragraph::new(Line::from(spans))
.style(Style::default().bg(Color::DarkGray));
f.render_widget(bar, area);
}
// ── Shared chart renderer ─────────────────────────────────────────────────────