Skip to main content

codetether_agent/tui/app/
terminal_state.rs

1use std::io;
2
3use crossterm::{
4    cursor::Show,
5    event::{DisableBracketedPaste, DisableMouseCapture},
6    execute,
7    terminal::{LeaveAlternateScreen, disable_raw_mode},
8};
9
10pub(super) fn restore_terminal_state() {
11    let _ = disable_raw_mode();
12    let mut stdout = io::stdout();
13    let _ = execute!(
14        stdout,
15        Show,
16        LeaveAlternateScreen,
17        DisableMouseCapture,
18        DisableBracketedPaste
19    );
20}
21
22pub(super) struct TerminalGuard;
23
24impl Drop for TerminalGuard {
25    fn drop(&mut self) {
26        restore_terminal_state();
27    }
28}